第2章 微服务
第2章 微服务
2.2 微服务概要介绍
2.2.1 微服务架构原理
2.2.2 微服务的特征
- 特征1,组件化与多服务:传统应用通过库实现组件,微服务则是通过服务实现组件,从而将应用拆散为一系列的服务运行在不同的进程中,因此单一服务的局部变化仅需重新部署对应的服务进程;
- 特征2,围绕“业务功能”组织团队:
- 特征3,关注产品而不是项目,即“谁构建谁运行”:微服务架构倾向于让开发团队负责整个产品的全部生命周期,对软件在生产环境中的运行负全部责任;
- 特征4,“智能端点”与“傻瓜管道”:微服务将服务间的通信尽可能地轻量化,
- 特征5&特征6:去中心化的治理技术&去中心化的管理数据
2.3 微服务的高级进阶
2.3.2 微服务的进程间通信(IPC)
- 微服务架构中,每个服务实例都是一个进程,因此服务之间的交互必须通过进程间通信(IPC)实现;
- IPC通信类型:
- 请求/响应:客户端向服务器发起请求等待响应,等待过程可能会造成线程阻塞;
- 请求/异步响应:服务器端异步响应请求,客户端不会阻塞,而且被设计为默认响应,不回立刻到达;
- 发布/订阅:客户端发布通知消息,被零个或多个感兴趣的服务消费;
- 发布/异步响应:客户端发布请求消息,然后等待从感兴趣服务发回的响应;
- IPC通信技术:同步的如基于HTTP的REST或Thrift,异步的基于消息的通信模式,如AMQP或STOMP;
2.3.5 微服务部署模式
- 单机单服务:方式简单,但存在监控困难问题;
- 多应用程序容器:
- 单主机单服务:
- 使用PaaS:PaaS平台自动配置机器,对系统进行弹性管理;
2.4 从单体架构转向微服务
- 建议采取逐步迁移单体应用的策略,逐步生成微服务新应用,与旧的单体式应用集成,随着时间的推移,单体式应用在整个架构中的比例逐渐下降,直到消失或变为微服务架构的一部分;
- 微服务和单体架构集成,需要增加2个新的模块:
- 请求路由器:负责处理入口请求,将新功能请求发送给新开发的业务,而将传统请求发给单体式应用;
- 胶水代码:负责将微服务和单体应用集成到一起,负责数据整合,微服务通过胶水代码从单体应用中读写数据;
- 微服务可通过3种方式访问单体应用数据:
- 访问单体应用提供的远程API
- 直接访问单体应用数据库
- 自己维护一份从单体应用种同步的数据