应用产品的微服务化之路拆分与重构徐进恒生电子股份有限公司架构师徐进恒生电子股份有限公司架构师来自于恒生电子股份有限公司的Java分布式架构资深专家。之前他和他的团队一直致力于恒生Java企业级应用开发框架的研发和管理。此外,他还担任了上海清算所综合业务系统、上海交易所注册审核系统、香港交易所商品交易及结算系统等系统的首席架构师职责。•从正视MSA开始•业务架构之服务拆分•技术架构之迭代重构•使用PDCA环持续演化回顾出生微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。--摘自马丁.福勒先生的博客膜拜大师马丁·福勒UML极限编程重构分析模式敏捷联盟企业应用架构模式微服务工程视角看待MSA分工•独立进程运行协作•轻量级通讯微服务核心问题域•从正视MSA开始•业务架构之服务拆分•技术架构之迭代重构•使用PDCA环持续演化拆分之陷阱微服务粒度仿佛雾里看花数据一致性是一头拦路之虎团队成员抱怨系统联调拆分令我的产品成本上升服务粒度康威定律团队能力成熟度微服务参考规模1、5~9人的基础团队规模2、团队成员的专业能力匹配3、团队管理人员的能力匹配4、保障团队安全的冗余能力一致性方案C:一致性A:可用性P:分区容错性根据场景选择分拆带来的一致性解决方案一致性方案场景A:交易撮合特点:1、强时间序保证要求2、并发处理下数据强一致要求方案:•撮合引擎内部不做微服务层切分,优先确保数据一致,•性能扩展采用节点冗余、内存交易、查询分离等方式提升单个引擎的处理能力和可靠性一致性方案场景B:证券经纪特点:1、时间序要求弱2、并发处理下数据强一致要求方案:•交易引擎内的业务可以切分为交易处理、资金管理、证券管理三个微服务•使用TCC模式分布式事务管理一致性•业务在交易过程中对资金与证券的处理过程增加冻结中间状态一致性方案场景C:清结算特点:1、清算数据可采用异步方式进行抓取2、无并发要求(针对对关联记录)3、一致性通过异步对账保证方案:•清算引擎可拆分为资金、份额、分控等不同服务•服务间取消R...