来由
软件通常是由单体应用演化而来,一开始承载着你一个很成功的关键业务应用,到后来就变成了一个巨大的、无法理解的怪物。
转换过程
转换为小的、互相连接的微服务的过程都很类似:
- 按照功能拆分,或按照业务场景拆分
- 所有服务之间采用异步的、基于消息的通讯
Best practice
- 对外暴露的API访问使用API Gateway来传递中间消息,用来审计、计费、流控
- 每个服务独有一个数据库(或一类数据库),松耦合的需要
不足
- 微服务的转化会引入分布式部署。
- 相比单体应用api调用,微服务服务间通信成本加大,通常需要引入消息队列,如RabbitMQ
- 不同数据库同步
- 如果服务间有强依赖,不利于开发
- 部署复杂(配置、部署、扩展、监控),这也是为什么微服务更多融合Kubernetes, Mesos等成熟docker管理组件的原因