小米电商从自研微服务框架切换到Apache Dubbo-go 的实践
2023-10-11 01:27:59
小米电商从2021年开始,将早期的电商、服务体系由自研的Go语言微服务框架koala,切换到了Apache Dubbo-go。
本次切换,是小米电商在技术选型上的一次重大调整,也是小米电商在微服务领域的一次重要探索。
本文将详细介绍小米电商从koala切换到Dubbo-go的实践经验,分享我们在服务治理、服务发现、负载均衡、熔断、限流等方面的最佳实践,并对两种微服务框架进行比较。
一、背景
小米电商早期电商、服务体系建立在Go语言构建的微服务体系之上,由内部自研的Go语言微服务框架koala支撑起数以千计的微服务应用。
随着小米电商业务的快速发展,koala微服务框架逐渐暴露了一些问题:
- 性能瓶颈: koala微服务框架的性能瓶颈主要体现在RPC调用和服务注册发现两方面。RPC调用方面,koala微服务框架采用的是HTTP协议,HTTP协议的开销较大,导致RPC调用的性能较差。服务注册发现方面,koala微服务框架采用的是基于ZooKeeper的注册中心,ZooKeeper的性能瓶颈导致服务注册发现的性能较差。
- 稳定性问题: koala微服务框架的稳定性问题主要体现在服务注册发现和熔断限流两方面。服务注册发现方面,koala微服务框架采用的是基于ZooKeeper的注册中心,ZooKeeper的稳定性问题导致服务注册发现的稳定性较差。熔断限流方面,koala微服务框架的熔断限流机制不完善,导致服务在出现故障时无法及时熔断,造成服务雪崩。
- 扩展性差: koala微服务框架的扩展性较差,主要体现在服务治理和服务注册发现两方面。服务治理方面,koala微服务框架的治理能力有限,无法满足小米电商日益增长的业务需求。服务注册发现方面,koala微服务框架的注册中心仅支持ZooKeeper一种注册中心,无法满足小米电商多注册中心的需求。
二、方案选择
为了解决koala微服务框架存在的问题,小米电商经过了详细的调研和评估,最终选择了Apache Dubbo-go作为新的微服务框架。
Apache Dubbo-go是一个高性能、高稳定、高扩展的微服务框架,它具有以下优点:
- 性能优异: Apache Dubbo-go采用的是Dubbo协议,Dubbo协议是一种高效的RPC协议,具有较高的性能。Apache Dubbo-go还支持多种传输协议,如HTTP、gRPC等,可以满足不同场景下的性能需求。
- 稳定可靠: Apache Dubbo-go经过了多年的生产实践检验,稳定性非常高。Apache Dubbo-go还提供了完善的故障转移和负载均衡机制,可以保证服务的稳定运行。
- 扩展性强: Apache Dubbo-go的扩展性非常强,它提供了丰富的扩展接口,可以满足各种业务场景的需要。Apache Dubbo-go还支持多种服务治理框架,如Spring Cloud、Apache ServiceComb等,可以无缝集成到现有的微服务架构中。
三、实践经验
小米电商在将koala微服务框架切换到Apache Dubbo-go的过程中,积累了丰富的实践经验,主要包括以下几个方面:
- 服务治理: 小米电商在切换到Apache Dubbo-go后,采用了Dubbo提供的服务治理框架,该框架提供了完善的服务注册发现、负载均衡、熔断限流等功能,满足了小米电商的业务需求。
- 服务注册发现: 小米电商在切换到Apache Dubbo-go后,采用了Apache ZooKeeper作为服务注册中心,ZooKeeper是一个高性能、高可靠的分布式协调服务,可以满足小米电商的业务需求。
- 负载均衡: 小米电商在切换到Apache Dubbo-go后,采用了Dubbo提供的负载均衡算法,该算法可以根据服务的健康状况和负载情况,将请求均匀地分配到不同的服务实例上,从而提高服务的性能和稳定性。
- 熔断限流: 小米电商在切换到Apache Dubbo-go后,采用了Dubbo提供的熔断限流机制,该机制可以根据服务的健康状况和负载情况,在服务出现故障时及时熔断,防止服务雪崩。
四、两种微服务框架的比较
下表对koala微服务框架和Apache Dubbo-go进行了比较:
特性 | koala微服务框架 | Apache Dubbo-go |
---|---|---|
性能 | 一般 | 优异 |
稳定性 | 一般 | 优异 |
扩展性 | 一般 | 优异 |
服务治理 | 支持 | 支持 |
服务注册发现 | 支持 | 支持 |
负载均衡 | 支持 | 支持 |
熔断限流 | 支持 | 支持 |
五、总结
小米电商从自研微服务框架koala切换到Apache Dubbo-go,取得了良好的效果,有效地解决了koala微服务框架存在的问题,提升了小米电商微服务系统的性能、稳定性和扩展性。
Apache Dubbo-go是一个高性能、高稳定、高扩展的微服务框架,非常适合小米电商的业务需求。小米电商在切换到Apache Dubbo-go后,微服务系统更加稳定可靠,性能也得到了显著提升,为小米电商的业务发展提供了强有力的支撑。