【笔记】
一个微服务应该足够小,专注与一件事情。
一个微服务就是一个独立的实体,服务会暴露API,服务之间通过这些API通信。这些服务彼此之间独立,可以独立修改,不会对其他服务产生影响。
主要好处
1.. 技术异构型。
可以在不同的服务中使用最适合该服务的技术栈。例如不同的服务可以采用不同的数据库存储技术。尝试新技术风险较小。
2. 弹性。
一个服务发生故障,不会导致级联故障,系统的其他部分可以正常运行。可以很好的处理服务不可用和功能降级的问题。但是一旦使用分布式,网络和机器都会成为问题。
3. 扩展
庞大的单块服务只能整体扩展。微服务可以只对需要扩展的服务进行扩展,不如使用性能更好的机器,或者添加更多服务器。
4. 简化部署
单块服务只能整体部署,风险高。微服务中,各个服务是独立部署的,可以对特定部分单独部署,有问题也容易回滚。客户可以更快使用新功能/。
5. 与组织结构匹配
微服务使用很小的代码库,小团队工作更高效。也更适合异地团队。
6. 可组合性
将单个应用分解为多个微服务,可以达到可重用,可组合的目的。
7. 对替代性的优化
修改大的遗留系统风险很高,当使用多个小规模服务时,重新实现一个服务或者直接删除都是可以操作的。可以在需要时很容易重写或者删除一个服务。
其他的分解技术:
1. 共享库。缺点:无法采用异构技术,每次更新需要重新部署,缺乏安全性保护措施,无法保证系统的弹性。
2. 模块。