微服务的分解和组合模式(2)

微服务的分解和组合模式2

  3.服务串联模式

    服务串联模式类似于一个工作流,最前面的服务1负责接收请求和响应使用方,串联服务后再与服务1交互,随后服务1与服务2交互,最后,从服务2产生的结果经过服务和串联服务逐个处理后返回给使用方。

    服务串联模式之间的调用通常使用同步的RESTful风格的远程调用实现,注意,这种模式采用的是同步调用方式,在串联服务没有完成并返回之前,所有服务都会阻塞和等待,一个请求会占用一个线程来处理,因此在这种模式下不建议服务的层级太多,如果能用服务聚合模式代替,则优先使用服务聚合模式,而不是使用这种服务串联模式。

相对于服务聚合模式,服务串联模式有一个优点,即串联链路上再增加一个节点时,只要不是在串联服务的正后面增加,那么串联服务是无感知的。      

  4.服务分支模式

    服务分支模式是服务代理模式、服务聚合模式和服务串联模式相结合的产物。

    分支服务可以拥有自己的数据库存储,调用多个后端的服务或者服务串联链,然后将结果进行组合处理再返回给客户端。分支服务也可以使用代理模式,简单地调用后端的某个服务或者服务链,然后将返回的数据直接返回给使用方。

    在实际的业务平台建设中,由于业务的复杂性,抽象的微服务可能有多层的依赖关系,依赖关系并不会太简单,经常呈现树形的分支结构。

支付服务对接两个外部的支付网关,都要经过各自的支付渠道网关,同时支持账户余额支付,这个支付服务其实就是一个分支模式,在实际项目中这种服务分支模式很多。

  5.服务异步消息模式

    在构建微服务架构系统时,通常会梳理核心系统的最小化服务集合,这些核心的系统服务使用同步调用,而其他核心链路以外的服务可以使用异步消息队列进行异步化。

  6.服务共享数据模式

    服务共享数据模式其实是反模式,,由于去掉了数据共享,所以仅仅通过服务之间良好定义的接口进行交互和通信,使得每个服务都是自治的,服务本身和服务的团队包含全角色栈的技术和运营人员,这些人都是专业的人做专业的事,使沟通在团队内部解决,因此可以使效率最大化。

    单元化架构:一些平台由于对性能有较高的要求,所以采用微服务化将服务进行拆分,通过网络服务进行通信,尽管网络通信的带宽已经很宽,但是还会有性能方面的损耗,在这种场景下,可以让不同的微服务共享一些资源,例如:缓存、数据库等,甚至可以将缓存和数据在物理拓扑上与微服务部署在一个物理机中,最大限度地减少网络通信带来的性能损耗,我们将这种方法称为“单元化架构”。

    遗留的整体服务:对于历史遗留的传统单体服务,我们在重构微服务的过程中,发现单体服务依赖的数据库表耦合在一起,对其拆分需要进行反规范化的处理,可能会造成数据一致性问题,在没有对其完全理解和有把握的前提下,会选择保持现状,让不同的微服务暂时共享数据存储。

    除了上面提到的两个场景,任何场景都不能使用服务数据共享模式。

 

 

猜你喜欢

转载自www.cnblogs.com/zhao-teng-ass/p/11055971.html