识别出各个服务需要遵守的通用规则
做取舍时,需要注意一个很重要的因素:系统允许多少可变性。
需要识别出各个服务需要遵守的通用规则,清楚地定义出一个好服务应有的属性。
“系统应该由很多小的但有自治生命周期的组件构成,而且这些组件之间有着紧密的关联”。所以在优化单个服务自治性的同时,也要兼顾全局。
各个服务需要遵守的通用规则——监控
健康状态必须在系统级别而非单个服务级别进行考虑。
建议确保所有的服务使用同样的方式(标准化)报告健康状态及其与监控相关的数据。
日志功能和监控情况类似:也需要集中式管理。
各个服务需要遵守的通用规则——明确接口
选用少数几种明确的接口技术
- 关于接口的技术和协议
- 接口的具体细节
如选用了HTTP/REST,规定好URL中使用动词还是名词,如何处理资源的分页,如何处理不同版本的API。
各个服务需要遵守的通用规则——架构安全性
一个运行异常的服务可能会毁了整个系统,所以,必须保证每个服务都可以应对下游服务的错误请求。
没有很好处理下游错误请求的服务越多,系统就会越脆弱。
各个服务需要遵守的通用规则——架构安全性——措施
可以让每个下游服务使用它们自己的连接池,进一步让每个服务使用一个断路器。
断路器依赖的返回码应该遵守一定的规则。
对以下几种请求做不同的处理可以帮助系统及时失败,并且也很容易追溯问题
(1)正常并且被正确处理的请求;(2)错误请求,并且服务识别出了它是错误的,但什么也没做;(3)被访问的服务宕机了,所以无法判断请求是否正常。
请关注我的微信公众号
个人微信公众号
技术交流群 (仅作技术交流):642646237
请关注我的头条号:
网友评论