优点
- 单一职责原则;
- 每个服务足够内聚,足够小,代码容易理解;
- 开发简单,效率高,因为一个微服务就是专一的做一件事;微服务小到能够被小团队单独开发;
- 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或者在部署阶段都是独立的;微服务可以使用不同的语言进行开发;
- 容易与第三方技术进行集成;微服务容易被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果,无需通过合作才能体现价值;
- 微服务允许融合新技术;微服务只专注业务逻辑的代码;
- 每个微服务都有直接的存储能力,可以拥有自己的数据库,也可以拥有统一的数据库。
缺点
- 开发人员需要处理分布式系统的复杂性;
- 服务器之间的通信成本大大增加;
- 数据的一致性需保证;
- 系统的集成测试难度加大;
- 性能的监控难度增大;
- 运维难度在增大