Author: Seata Community
Community Profile
Seata is an open source distributed transaction solution dedicated to providing high-performance and easy-to-use distributed transaction services under a microservice architecture. Before Seata was open-sourced, Seata had been playing the role of distributed data consistency middleware within the Alibaba department. Seata was used in almost every transaction, helping the business to survive the double 11 floods over the years and making a strong impact on the business. technical support. 2019.1 In order to create a more complete technical ecology and inclusive technical achievements, Seata officially announced that it is open source, and Seata will help users quickly implement distributed transaction solutions in the form of community co-construction. In just 3 years, the Seata community has gained 22k stars and more than 300 contributors, established a large number of enterprise benchmark users, and become the de facto standard in the field of distributed transactions.
GitHub: https://github.com/seata/seata
Official website: https://seata.io/zh-cn/
This year, the Seata community united Open Source Summer, Alibaba Summer of Programming and CCF GitLink Programming Summer Camp to launch summer programming activities for college students.
The Summer of Open Source has now entered the formal programming stage. This article will not introduce too much. For details, please refer to:
https://mp.weixin.qq.com/s/q6J-swbdWqZebuSiq2JDWg
For the selection of Open Source Summer projects, please refer to:
https://summer-ospp.ac.cn/#/org/projectlist
At present, there are still applications for proposals accepted by Alibaba Programming Summer ASoC and CCF GitLink Programming Summer Camp. If you are a current student and meet the corresponding application requirements, please apply now. There are senior mentors in the community to provide 1v1 professional guidance, and there are also generous bonuses waiting for you.
What is Alibaba Summer of Programming?
The Seata community once again joined hands with Alibaba Summer of Programming this year, and prepared 3 selected project topics. Students are welcome to apply!
Project 1: Long-term storage of transaction status data
At present, although the transaction Session and undolog data of Seata will be persistent, the transaction Session and Undolog will be deleted regularly with the life cycle of the global thing. We need a log pipeline to store these Session and Undolog persistently, because the transaction Session and Undolog It is an important state data of Seata, and the long-term persistent storage of data is of great significance for data analysis. The main tasks are as follows:
1. Send layer design. In order not to affect the performance of the main process of Seata transaction, it is necessary to record transaction Session and Undolog data in an asynchronous way. The best way is to use message queue. There are many kinds of message queues, such as RocketMQ, Kafka, etc. In order to shield the specific To achieve, Seata needs to design a set of general sending interface layer, there is a specific message queue implementation, and the specific implementation is loaded by reading the user configuration when Seata starts. Finally, through this interface implementation, the transaction Session and Undolog can be sent to the message queue.
2. Domain model design. Transaction Session and Undolog need to be transmitted according to a certain data structure, so it is also necessary to design a general Event transmission model with certain scalability.
3. Consumer layer design. The default implementation of the consumer layer is placed in the Seata Console. In order to shield the specific implementation of the message queue, the consumer side also needs to design a set of general interface layers (interfaces such as monitoring/consumption/face classes), which are implemented by the specific message queue and implemented by The Seata Console is implemented by reading the user configuration load when it starts up.
4. Data storage and visualization. By starting the consumer of the message queue, consuming the Event events of the message queue, and storing the data in the specified storage medium, since the stored data does not need to be modified, but needs to be frequently queried, it is recommended to use NoSQL-related databases for the storage medium. At the same time, the data is visualized (the establishment of a data dashboard), which is convenient for data analysis and insight.
Programming language: Java
Mentor: Seata Committer Zhang Chenghui ( zhangchenghui.dev@gmail.com )
Project details: https://github.com/seata/seata/issues/4636
Project 2: Metrics design on the Seata SDK side
In many cases, we may need to use some real-time monitoring data to understand the operation of the entire system at present or at a certain moment. As a metric library for monitoring indicators, Metrics provides many tools to help developers monitor various data. This task is to improve the monitoring of various data on the Seata client SDK side according to the needs of the community. Helps users effectively monitor the execution process and identify possible problems.
At this stage, the metrics exported by Seata only include server-related metrics. Combined with the existing Metrics design, the design of various metrics on the Seata clientSDK side is improved. The main metrics are as follows:
- Statistics of status such as global begin/commit/rollback
- Statistics of status such as branch registry/flush undolog/report/commit/rollback
- undolog, fence and other hook calls
Programming language: Java
Instructor: Seata Top Contributor Liu Yang ( 734843455@qq.com )
Project details: https://github.com/seata/seata/issues/4637
Project 3: Seata-Sample Refactoring Task
Seata-Sample, as a must-see project for Seata beginners, is one of the important ways to get started with Seata. However, the Seata community is currently growing, and the version iteration and release are getting faster and faster. At present, there have been many cases in the Sample that are derailed from the actual version, and this situation is very unfavorable for the subsequent development and iteration of Seata. Therefore, the reconstruction of Seata-Sample is of great significance to the entire Seata open source project and the Seata open source community. The main tasks are as follows:
- Structural refactoring. Sort out the sample projects that are useless, outdated, duplicated or no longer runnable in the Sample project, and clean them up. The community will no longer maintain such projects in the future. For the retained and sorted items, we need to sort them out in a structured way, and compare the items in the Sample with the latest Seata version to help new students get started with Seata better.
- Official website linkage. Seata-Sample's current project capabilities and the official website do not have the ability to link up. The example of Sample and the official website is a state of fighting each other. We hope that the compiled Sample can be aligned with the examples on the official website to help new students get started with Seata better.
Programming language: Java
Mentor: Seata Top Contributor Tan Zhijian ( zhijian.tzj@alibabac-inc.com )**
Project details: https://github.com/seata/seata-samples/issues/537
CCF GitLink Programming Summer Camp
The Seata community has joined hands with the CCF GitLink open source programming summer camp this year, and has prepared 3 selected project topics. Students are welcome to apply!
Project 1: Seata-Golang TCC mode annotation support
The current TCC mode needs to implement the TCCService interface. Through this interface, developers are constrained to implement the try, cancel, and confirm methods. By using annotations, the process can be simplified. To implement TCC golang annotation support, please refer to:
https://github.com/MarcGrol/golangAnnotations
When users use the Seata-Golang TCC mode to coordinate distributed transactions, they need to tell the TC the context information of the Try request, that is, which method should be called by the Commit operation, which method should be called by the Cancel operation, and which method should be called by the Try request. parameter. When the TC initiates a global commit and rollback, it can decide which method to call for commit and which method to call for rollback according to the transaction branch. Of course all this is done by the framework. The problem is, in order to tell TC Server this information, the user needs to implement a TCC Service interface. When the program is initialized, call the tcc.Implement() method, which will obtain the Confirm method corresponding to the Commit operation and the Cancel method corresponding to the Cancel operation through reflection, and then send the context information to the TC Server. If we implement it by annotation, we only need to annotate @TCC(Commit="xxx",Cancel="xxx") on the corresponding Try method, and then cooperate with the scan initialization of the annotation to complete the Tell TC Server Try request. The process of contextual information. It can be more convenient for users, simplify development and improve efficiency.
Programming language: Golang
Mentor: Seata Committer Liu Xiaomin ( 985784089@qq.com )
Project details: https://www.gitlink.org.cn/glcc/subjects/detail/71
Project 2: AT mode supports Oceanbase oracle kernel
Database is an important resource extension of Seata. Currently, Seata AT mode supports MySQL, PostgreSQL, Oracle, TiDB, MariaDB, etc. Oceanbase is a domestic native distributed database completely independently developed by Ant Group. Seata AT transaction mode needs to support the Oracle kernel of Oceanbase database (Oceanbase is compatible with MySQL part, so AT mode naturally supports Oceanbase MySQL kernel). This project needs to refer to the structure diagram of existing MySQL, PostgreSQL and Oracle in AT mode. AT mode uses SPI plug-in to abstract and reserve these extension points. Based on the extension point, the Oracle kernel adaptation of the Oceanbase database is realized, and finally it can pass the verification of seata-samples.
Programming language: Java
Mentor: Seata Committer Ji Min ( slievrly@163.com ) **
Project details: https://www.gitlink.org.cn/glcc/subjects/detail/8
Project 3: Seata console long connection management
Seata 1.5.0 provides console management, which is an important white-screen management method for Seata. Seata-Client on the business side communicates with Seata-Server through long-term connections. Currently, there is a lack of visual display and operation for long-term connections, which is inconvenient for centralized management. It may cause problems such as too many connections, insufficient capacity estimation, and difficulty in tracing malicious connections. Client connections to Seata-Server can be managed as a white screen on the console page. It is required to be able to set the upper limit of the number of connections that a single Seata-Server node can accept on the console, display specific client long-connection information on the console, and further provide simple management functions.
Programming language: Java + a small amount of front-end React (community support available)
Mentor: Seata Committer Ji Min ( slievrly@163.com )
Project details: https://www.gitlink.org.cn/glcc/subjects/detail/134
Project registration
Students can freely choose a project, log in to the official website to apply for the corresponding project, and the selected students will complete the development work as planned under the guidance of the community mentor, and contribute the results to the community. The community evaluates the completion of the students, and the organizer will issue bonuses to the students according to the evaluation results. This is a highlight on the resumes of the students in the future, and it is also a shining starting point for the top developers.
Ali Programming Summer ASoC:
https://asoc2022.opensource.alibaba.com/
CCF GitLink Programming Summer Camp:
https://www.gitlink.org.cn/glcc/subjects/detail/8
https://www.gitlink.org.cn/glcc/subjects/detail/71
https://www.gitlink.org.cn/glcc/subjects/detail/134
Note: All registrations must be registered through the system to be valid. Please read the Student Guide before registration.
In order to facilitate the exchange of students, students who are interested in participating in the Seata community open source summer activities, please use DingTalk to scan the SummerCode summer exchange group.
Looking forward to the students joining us, let's meet in this summer!
Click here to check it out now!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。