书籍《微服务设计》,地址:微服务设计 (豆瓣)
1、微服务的原则:组合使用这些原则的价值是整体使用的价值要大于部分使用之和。以下分别列举微服务的原则。
围绕业务概念建模:围绕业务的界限上下文定义接口比围绕技术概念定义的接口更加稳定。
接受自动化文化:自动化测试必不可少,相比单块系统,确保大量各服务能正常工作是一个更复杂的过程。考虑创建自定义镜像来加快部署,并且创建全自动化不可变服务器,这样更容易定位系统本身的问题。
隐藏内部实现细节:服务应该隐藏他们的数据库,隐藏实现细节。使用数据泵或时间数据泵将多个服务的数据整合到一起,以实现报表的功能。尽量选择与技术无关的API。
让一切都去中心化:确保团队保持对服务的所有权。可以使用内部开源模式,确保人们可以更改其他团队拥有的服务。让团队与组织保持一致。尝试使用共同治理模型,使团队的每个成员共同对系统技术愿景的演化负责。
可独立部署:确保微服务可以独立部署,甚至当需要做不兼容更改时,我们也应该同时提供新旧两个版本,允许消费者慢慢迁移到新版本。可以采用单服务单主机模式;考虑蓝/绿部署或金丝雀部署;使用消费者驱动的契约测试。
隔离失败:微服务能比单块系统更具有弹性,前提是了解系统的故障模式,并做出相应的计划。使用网络调用时,不要像使用本地调用那样处理远程调用,因为这样会隐藏不同的故障模式。
高度可观察:通过注入合成事务到你的系统,模拟真实用户的行为,从而使用语义监控来查看系统是否运行正常。聚合日志和数据,这样方便分析原因。关联标识可以帮助我们跟踪系统间的调用。
2、什么时候你不应该使用微服务:首先构建单块系统,当稳定以后再进行拆分。