架构本质及微服务王庆友系统野蛮生长按热力学第二定律,封闭系统会由有序变为无序,即熵会不断增加,架构本质分合好的架构就象优美的散文,形散神不散架构是对系统进行有序化重构,减少系统的“熵”。分布式架构SOA微服务架构关系横切竖切?切⼤大切⼩小?单体应⽤用不切系统分布式架构竖切SOA竖切基础上,再横切微服务切更⼩小分布式架构、SOA和微服务都属于应⽤用架构,体现应⽤用之间不同切分⽅方式。什么是服务?进程外调用,接口无状态职责聚焦,边界明确独立开发,独立部署服务是动词,对业务流程进行封装和抽象。封装针对业务深度,如下单服务封装下单一系列处理过程。抽象针对业务广度,支持类似的业务流程,如普通商品/虚拟商品/团购商品下单。业务封装组件复用SOAVS微服务SOA接口通用性强,内部逻辑重,对应一段业务流程,如完整的下单服务重量级通讯机制,中心化ESB,webservice/二进制对象传输通常作为企业内外部系统或内部大单体应用之间集成手段微服务接口直观,内部逻辑简单,对应业务流程一个节点,如下单的扣库存动作去中心化,轻量级通讯机制如HTTP+JSON传输作为企业内部大规模应用之间集成手段实践上,一般独立库表,独占式访问。原子服务,不调用其他服务普通概念上的微服务只要满足企业内部使用,去中心化和轻量级协议,不细分接口粒度和是否独立库表,此处做严格区分。微服务实践—下单服务化扣库存扣账户余额扣抵用券生成发票生成订单抵用券服务账户服务订单服务库存服务下单服务聚合发票服务微服务下单流程下单服务SOA库存表账户表发票表订单表每个节点由单独的服务处理,每个服务访问自己的表,服务相互不调用,由调用方或单独的聚合服务进行服务组合。库存表账户表发票表…下单服务处理所有过程,直接访问对应的表,接口粒度粗,逻辑复杂。Case分析下单服务每个子服务高度聚焦,边界清晰,独立数据模型。需要上层应用做服务聚合,一般简单组装即可。需求有变化,修改对应子服务,因子服务提供功能完备,一般应用方调整聚合逻辑即可(比如虚拟商品下单,可以跳过发票/发货环节)。下单逻辑聚合提供端到端的功能,对应用友好服务内部实现复杂,访问一系列库表,对象之间有大量计算,耦合紧密如果需求有变化,整个大服务跟随修改和重新部署。应用微服务粗粒度SOA套餐点菜更复杂的CASE大型电商系统,业务紧密耦合,依赖复杂微服务实践—系统依赖解耦商品详情页商品信息客服系统商品表库存信息价格信息库存表价格表订单表商品...