Wetts's blog

Stay Hungry, Stay Foolish.

0%

微服务设计-第4章-集成

寻找理想的集成技术

  • 避免破坏性修改
  • 保证API的技术无关性
  • 使你的服务易于消费方使用
  • 隐藏内部实现细节

同步与异步

  • 同步通信
    发起一个远程服务调用后,调用方会阻塞自己并等待整个操作的完成。

  • 异步通信
    调用方不需要等待操作完成就可以返回。

当你需要低延迟的时候,通常会使用异步通信。

异步通信可以发起一个请求,然后注册一个回调,当服务端操作结束之后,会调用回调。

编排与协同

  • 编排
    依赖于某个中心大脑来指导并驱动整个流程。

缺点是,中心控制点承担太多责任,它会成为网状结构的中心枢纽及很多逻辑的起点。这种方法会导致少量的“上帝”服务,而与其打交道的那些服务通常都会沦为贫血的、给予CRUD的服务。

  • 协同
    协同方式是某个服务使用异步的方式出发一个事件,其他的服务可以简单的订阅这些事件并且做相应的处理。

缺点是,看不到很明显的业务流程。还需要做一些额外的工作来监控流程,以保证其正确地进行。

该方式可以降低系统的耦合度,并且你能更加灵活地对现有的系统进行修改。

请求/响应方式与基于事件的方式

  • 请求/响应方式
    可以考虑两种技术:RPC(Remote Procedure Call,远程过程调用)和REST(REpresentational State Transfer,表述性状态转移)

RPC:一般会帮你生成服务端和客户端的桩代码

REST:最常用的是HTTP来实现,GET获取资源,POST创建资源,PUT修改资源,DELETE删除资源

  • 基于事件的方式
    主要有两个部分需要考虑:微服务发布事件机制和消费者接收事件机制

有两种技术可以考虑:像RabbitMQ这样的消息代理和使用HTTP来传播事件(ATOM)

RabbitMQ:一种消息队列,可以发布和订阅

ATOM:是一个符合REST规范的协议,可以通过它提供资源聚合(feed)的发布服务