slievrly commented on code in PR #809:
URL: 
https://github.com/apache/incubator-seata-website/pull/809#discussion_r1461867952


##########
i18n/en/docusaurus-plugin-content-blog/seata-raft-detailed-explanation.md:
##########
@@ -0,0 +1,260 @@
+---
+title: Seata-Raft Storage Mode in Depth and Getting Started
+description: From traditional storage and computing separation to integrated 
storage and computing relying on distributed consensus algorithms to ensure 
transaction data consistency under high availability mode, what changes has 
Seata 2.x made? This article will provide a detailed introduction to the 
architecture and performance comparison.
+keywords: [fescar, seata, distributed transactions, raft]
+author: funkye
+date: 2023/10/13
+---
+
+
+- [1. Overview](#)
+- [2. Architecture Introduction](#)
+- [3. Deployment and Usage](#)
+- [4. Benchmark Comparison](#)
+- [5. Conclusion](#)
+
+# 1. Overview
+
+Seata is an open-source distributed transaction solution with over 24000 stars 
and a highly active community. It is dedicated to providing high-performance 
and user-friendly distributed transaction services in microservices 
architecture.
+
+Currently, Seata's distributed transaction data storage modes include file, 
db, and redis. This article focuses on the architecture, deployment and usage, 
benchmark comparison of Seata-Server Raft mode. It explores why Seata needs 
Raft and provides insights into the process from research and comparison to 
design, implementation, and knowledge accumulation.
+
+Presenter: Chen Jianbin (funkye) github id: 
[funky-eyes](https://github.com/funky-eyes)
+
+# 2. Architecture Introduction
+
+## 2.1 What is Raft Mode?
+
+Firstly, it is essential to understand what the Raft distributed consensus 
algorithm is. The following excerpt is a direct quote from the official 
documentation of sofa-jraft:
+
+```
+RAFT is a novel and easy-to-understand distributed consensus replication 
protocol proposed by Diego Ongaro and John Ousterhout at Stanford University. 
It serves as the central coordination component in the RAMCloud project. Raft 
is a Leader-Based variant of Multi-Paxos, providing a more complete and clear 
protocol description compared to protocols like Paxos, Zab, View Stamped 
Replication. It also offers clear descriptions of node addition and deletion. 
As a replication state machine, Raft is the most fundamental component in 
distributed systems, ensuring ordered replication and execution of commands 
among multiple nodes, guaranteeing consistency when the initial states of 
multiple nodes are consistent.
+
+In summary, Seata's Raft mode is based on the Sofa-Jraft component, 
implementing the ability to ensure the data consistency and high availability 
of Seata-Server itself.
+
+```
+## 2.2 Why Raft Mode is Needed
+
+After understanding the definition of Seata-Raft mode, you might wonder 
whether Seata-Server is now unable to ensure consistency and high availability. 
Let's explore how Seata-Server currently achieves this from the perspectives of 
consistency and high availability.
+
+### 2.2.1 Existing Storage Modes
+
+In the current Seata design, the role of the Server is to ensure the correct 
execution of the two-phase commit for transactions. However, this depends on 
the correct storage of transaction records. To ensure that transaction records 
are not lost, it is necessary to drive all Seata-RM instances to perform the 
correct two-phase commit behavior while maintaining correct state. So, how does 
Seata currently store transaction states and records?
+
+Firstly, let's introduce the three transaction storage modes supported by 
Seata: file, db, and redis. In terms of consistency ranking, the db mode 
provides the best guarantee for transaction records, followed by the 
asynchronous flushing of the file mode, and finally the aof and rdb modes of 
redis.
+
+To elaborate:
+
+- The file mode is Seata's self-implemented transaction storage method. It 
stores transaction information on the local disk in a sequential write manner. 
For performance considerations, it defaults to asynchronous mode and stores 
transaction information in memory to ensure consistency between memory and disk 
data. In the event of Seata-Server (TC) unexpected crash, it reads transaction 
information from the disk upon restarting and restores it to memory for the 
continuation of transaction contexts.
+
+- The db mode is another implementation of Seata's abstract transaction 
storage manager (AbstractTransactionStoreManager). It relies on databases such 
as PostgreSQL, MySQL, Oracle, etc., to perform transaction information 
operations. Consistency is guaranteed by the local transactions of the 
database, and data persistence is the responsibility of the database.
+
+- Redis, similar to db, is a transaction storage method using Jedis and Lua 
scripts. It performs transaction operations using Lua scripts, and in Seata 
2.x, all operations (such as lock competition) are handled using Lua scripts. 
Data storage is similar to db, relying on the storage side (Redis) to ensure 
data consistency. Like db, redis adopts a computation and storage separation 
architecture design in Seata.
+
+
+### 2.2.2 High Availability
+
+High availability is simply the ability of a cluster to continue running 
normally after the main node crashes. The common approach is to deploy multiple 
nodes providing the same service and use a registry center to real-time sense 
the online and offline status of the main node for timely switching to an 
available node.
+
+It may seem that deploying a few more machines is all that's needed. However, 
there is a problem behind it – how to ensure that multiple nodes operate as a 
whole. If one node crashes, another node can seamlessly take over the work of 
the crashed node, including handling the data of the crashed node. The answer 
to solving this problem is simple: in a computation and storage separation 
architecture, store data in a shared middleware. Any node can access this 
shared storage area to obtain transaction information for all nodes' 
operations, thus achieving high availability.
+
+However, the prerequisite is that computation and storage must be separated. 
Why is the integration of computation and storage not feasible? This brings us 
to the implementation of the File mode. As described earlier, the File mode 
stores data on local disks and node memory, with no synchronization in data 
writing operations. This means that the current File mode cannot achieve high 
availability and only supports single-machine deployment. For basic quick start 
and simple use, the File mode has lower applicability, and the 
high-performance, memory-based File mode is practically no longer used in 
production environments.
+
+## 2.3 How is Seata-Raft Designed?
+
+### 2.3.1 Design Principles
+
+The design philosophy of Seata-Raft mode is to encapsulate the File mode, 
which is unable to achieve high availability, and use the Raft algorithm to 
synchronize data between multiple TCs. This mode ensures data consistency among 
multiple TCs when using the File mode and replaces asynchronous flushing 
operations with Raft logs and snapshots for data recovery.
+
+![flow](https://blog.funkye.icu/img/blog/Dingtalk_20230105203431.jpg)

Review Comment:
   All image links need to be replaced with internal resource addresses.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@seata.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@seata.apache.org
For additional commands, e-mail: dev-h...@seata.apache.org

Reply via email to