作者|尚鹏飞策划|蔡芳芳近年来,FreeWheel核心业务开发团队致力于将传统单体Rails应用,向分布式微服务架构迁移,以适应越来越复杂的业务场景和系统性能的提升。随着微服务规模的不断增长,一些新的问题也随之产生。其中如何对这些业务服务进行有效的治理和维护,对业务状态进行监控,甚至于线上调试变得尤为重要。业务服务治理平台(businessservicemanagementplatform),是我们为应对这一挑战做出的选择。本文将详细解析FreeWheel核心业务开发团队构建的服务治理平台。为什么需要服务治理平台
随着Rails单体应用向分布式微服务架构迁移的深入,面向不同业务和层次的微服务如雨后春笋般诞生,微服务集群的规模迅速增长。架构迁移让我们可以把业务重新梳理、聚合和解藕,不同的微服务可以聚焦自身业务,自成体系进行维护,减少了对其他业务的影响,增加了系统整体的可扩展性。但同时,这也导致有越来越多的微服务需要治理,原本只需要对一个单体应用进行监控管理,如今需要对几十个甚至上百个微服务进行管理。另一方面,分布式架构本身也会引入一些在单体应用时期所不存在的问题,例如分布式事务、消息等,对于这些方面我们也缺少相关的治理平台。因此,在我们的分布式微服务实践过程中,经常需要面对以下这些问题:
微服务在出错或响应慢时,如何能进行简单快速的调试,以便了解是微服务本身的问题,还是所依赖的服务有问题?
相比于单体应用,分布式系统更容易引入数据不一致,如何对这样的数据进行监控?
在基于异步消息的业务中,某个主题的业务没能正常完成,是生产者没有把消息发出来?还是消费者没有接收到消息?
为什么数据库已经更新的数据迟迟没有生效?缓存数据何时过期?
我们有哪些后台任务正在执行?执行的排期如何?执行失败的原因是什么?
等等……
微服务的部署层面我们可以通过业界云原生的解决方案来实现,而这些业务层面的问题却很难找到一个公共的解决方案或者治理入口,因为这往往是跟具体的业务场景深度绑定的。不同的微服务业务场景和功能不同,但基本都遵从类似的开发实践,使用相同的基础组件,这使得我们对微服务进行治理成为可能。
需要注意的是,这里我们