[ 
https://issues.apache.org/jira/browse/GSOC-297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiangke Wu updated GSOC-297:
----------------------------
    Labels: Seata gsoc2025 mentor  (was: Seata gsoc2025)

> GSoC 2025 - Apache Seata(Incubating):Unlocking the Power of Metadata in 
> Apache Seata: From Load Balancing to Advanced Routing
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GSOC-297
>                 URL: https://issues.apache.org/jira/browse/GSOC-297
>             Project: Comdev GSOC
>          Issue Type: Wish
>            Reporter: Jiangke Wu
>            Priority: Major
>              Labels: Seata, gsoc2025, mentor
>
> *Synopsis*
> Currently, Apache Seata relies on a registry (e.g., Nacos, Zookeeper, Eureka, 
> Etcd3, Consul, Seata Naming Server) for service discovery and load balancing. 
> However, the existing registry mechanism lacks support for custom metadata, 
> which limits the flexibility of client-side load balancing strategies. For 
> example, clients cannot dynamically adjust traffic distribution based on 
> server-side metadata such as weight, region, or version. This project aims to 
> enhance the registry module in Apache Seata by adding metadata support and 
> enabling clients to implement advanced load balancing strategies based on 
> this metadata.
> h4. *Benefits to Community*
> {*}Improved Load Balancing Flexibility{*}: By allowing Seata Server instances 
> to register custom metadata (e.g., weight, region, version), clients can 
> implement more sophisticated load balancing strategies, such as weighted 
> round-robin, zone-aware routing, or version-based routing. This ensures 
> better resource utilization and improved system performance.
> {*}Enhanced Scalability{*}: With metadata-driven load balancing, Seata can 
> better handle large-scale deployments by distributing traffic more 
> intelligently across server instances. For example, high-traffic regions can 
> be assigned more resources, while low-traffic regions can operate with 
> minimal overhead.
> {*}Better Resource Utilization{*}: Metadata such as server weight or capacity 
> can help clients avoid overloading specific instances, leading to more 
> balanced resource usage across the cluster.
> {*}Extensibility{*}: The addition of metadata support opens the door for 
> future enhancements, such as dynamic traffic shaping, A/B testing, or canary 
> deployments.
>  
> h4. *Deliverables*
> The expected deliverables for this project include:
> {*}Registry Metadata Support{*}:
>  * Extend the registry module (e.g., Nacos, Zookeeper, Eureka, Etcd3, Consul, 
> Seata Naming Server) to allow Seata Server instances to register custom 
> metadata (e.g., weight, region, version).
>  * Ensure backward compatibility with existing registry implementations.
> {*}Client-Side Load Balancing Enhancements{*}:
>  * Implement a metadata-aware load balancing mechanism in the Seata client 
> (TM/RM).
>  * Provide built-in load balancing strategies (e.g., weighted random, 
> zone-aware) and allow users to plug in custom strategies via SPI.
> {*}Documentation and Testing{*}:
>  * Update the Seata documentation to explain how to configure and use 
> metadata for load balancing.
>  * Write unit tests and integration tests to validate the new functionality
>  
> h4. *Steps Expected*
> {*}1.Understand Seata's Registry Mechanism{*}:
>  * Study how Seata integrates with various registries (e.g., Nacos, 
> Zookeeper, Eureka, Etcd3, Consul, Seata Naming Server).
>  * Identify the current limitations in metadata support and load balancing.
> {*}2.Extend Registry Module{*}:
>  * Modify the registry module to allow Seata Server instances to register 
> custom metadata.
>  * Ensure the metadata is propagated to clients during service discovery.
> {*}3.Implement Metadata-Aware Load Balancing{*}:
>  * Enhance the client-side load balancing logic to consider metadata (e.g., 
> weight, region) when selecting a server instance.
>  * Provide built-in strategies (e.g., weighted random, zone-aware) and 
> support custom strategies via SPI.
> {*}4.Ensure Compatibility and Performance{*}:
>  * Test the new functionality with different registry implementations (e.g., 
> Nacos, Zookeeper, Eureka, Etcd3, Consul, Seata Naming Server).
>  * Optimize performance to minimize the overhead of metadata processing.
> {*}5.Documentation and Testing{*}:
>  * Write clear documentation on how to configure and use the new metadata and 
> load balancing features.
>  * Develop comprehensive unit tests and integration tests.
>  
> h4. *Useful Links*
>  * [Apache Seata Documentation|https://seata.apache.org/]
>  * [Nacos |https://nacos.io/]
>  * [Zookeeper |https://zookeeper.apache.org/]
>  * [Eureka |https://github.com/Netflix/eureka]
>  * [Consul|https://www.consul.io/]
>  * [Etcd3|https://etcd.io/]
>  * [Seata Naming 
> Server|https://seata.apache.org/docs/next/user/registry/namingserver]
>  * [Load Balancing 
> Strategies|https://en.wikipedia.org/wiki/Load_balancing_(computing)]
> h4. *Mentor*
> *Mentor: Jiangke Wu, Apache Seata(Incubating) PPMC Member 
> [xingfude...@apache.org|mailto:jian...@apache.org]*



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to