[ 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