有赞支付微服务演进:从单体到微服务

0 下载量 21 浏览量 更新于2024-08-27 收藏 1MB PDF 举报
"有赞支付微服务实践" 有赞,作为一个快速发展的电商平台,自2014年以来经历了从单体应用到微服务架构的转变。最初,所有的业务功能,包括交易、商品管理、用户管理系统(UMP)以及支付,都集成在一个使用PHP编写的单体应用中,这被称为v1.0阶段。随着业务量的增长和团队规模的扩大,这种架构开始显现出局限性,主要体现在系统复杂性增加、开发和测试成本提高、故障率上升以及水平扩展困难等问题。 2015年至2016年间,有赞开始迈向服务化架构,即v2.0阶段,他们选择了Java作为开发语言,并采用了改进版的Dubbox服务化框架,同时引入了支持跨语言调用的Nova框架,以应对不断增长的业务需求。这一阶段的核心在于将单一应用拆分为多个独立的服务,每个服务专注于特定的业务领域,从而实现更好的分工和并行开发,降低了维护难度。 2017年,有赞进一步推进到了微服务架构的v3.0阶段,这个阶段拥抱了社区提供的丰富组件,通过微服务的方式提高了系统的可伸缩性和容错性。微服务架构允许每个服务独立部署、更新和扩展,减少了系统间的耦合,增强了系统的灵活性和稳定性。 在这个过程中,有赞面临的主要挑战包括: 1. 系统复杂性和脆弱性:随着业务的扩展,单体架构变得复杂且容易出错。 2. 开发和测试成本:大型单体应用使得代码冲突频繁,开发效率下降,而测试覆盖整个系统,成本高昂。 3. 扩展性问题:单体应用难以进行水平扩展,限制了系统的处理能力。 为了解决这些问题,有赞的架构升级主要包括: - **服务切分**:根据业务领域进行服务划分,每个服务具有明确的职责范围,遵循领域驱动设计(DDD)原则,定义清晰的边界(bounded context)。 - **并行开发**:服务化后,团队可以并行开发和维护不同的服务,提高了开发效率。 - **通信机制**:建立服务间通信的规范,如RESTful API或RPC,确保服务之间的协作顺畅。 - **独立部署**:每个服务都可以独立部署,降低了部署风险,加快了迭代速度。 - **容错和恢复**:利用分布式服务框架提供的容错机制,如熔断、降级和超时策略,增强系统的健壮性。 - **监控和日志**:引入微服务监控和日志系统,便于问题排查和性能优化。 架构升级并非一蹴而就,过程中可能会出现新的问题,需要持续的重构和优化。架构师需要密切关注系统运行情况,适时做出决策调整,以适应业务的不断发展和变化。通过这样的架构演进,有赞成功地应对了业务流量的增长,构建了一个更加稳定、灵活和可扩展的技术平台。