寻找理想的集成技术
- 避免破坏性修改
- 保证API的技术无关性
- 使你的服务易于消费方使用
- 隐藏内部实现细节
同步与异步
同步通信
发起一个远程服务调用后,调用方会阻塞自己并等待整个操作的完成。异步通信
调用方不需要等待操作完成就可以返回。
当你需要低延迟的时候,通常会使用异步通信。
异步通信可以发起一个请求,然后注册一个回调,当服务端操作结束之后,会调用回调。
编排与协同
- 编排
依赖于某个中心大脑来指导并驱动整个流程。
缺点是,中心控制点承担太多责任,它会成为网状结构的中心枢纽及很多逻辑的起点。这种方法会导致少量的“上帝”服务,而与其打交道的那些服务通常都会沦为贫血的、给予CRUD的服务。
- 协同
协同方式是某个服务使用异步的方式出发一个事件,其他的服务可以简单的订阅这些事件并且做相应的处理。
缺点是,看不到很明显的业务流程。还需要做一些额外的工作来监控流程,以保证其正确地进行。
该方式可以降低系统的耦合度,并且你能更加灵活地对现有的系统进行修改。
请求/响应方式与基于事件的方式
- 请求/响应方式
可以考虑两种技术:RPC(Remote Procedure Call,远程过程调用)和REST(REpresentational State Transfer,表述性状态转移)
RPC:一般会帮你生成服务端和客户端的桩代码
REST:最常用的是HTTP来实现,GET获取资源,POST创建资源,PUT修改资源,DELETE删除资源
- 基于事件的方式
主要有两个部分需要考虑:微服务发布事件机制和消费者接收事件机制
有两种技术可以考虑:像RabbitMQ这样的消息代理和使用HTTP来传播事件(ATOM)
RabbitMQ:一种消息队列,可以发布和订阅
ATOM:是一个符合REST规范的协议,可以通过它提供资源聚合(feed)的发布服务