【微服务化最佳实践】实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述微服务化最佳实践相关的知识,希望能为你提供帮助。
服务管理指导
- 服务依赖指导:重要的服务不能依赖非重要服务。
- 团队拆分指导:系统拆分时,团队规模大小以一个系统10个左右开发人员维护为宜(两个比萨原则)。
- 服务拆分指导:服务拆分时,往往先拆分数据服务层,因为数据服务层往往是复用性高的一层;同一个业务领域内不要拆分。
- 合并同类项:在服务设计过程中,要避免同类服务由不同服务单元提供;每个业务领域的通用规则需要沉淀成服务。
- 版本向下兼容:服务要做到向前兼容。如果无法做到,则需要在管控机制上确保服务消费者能强制升级。
- 组织架构适应:服务化架构的变化要使组织的架构能适应这种变化。
- 服务部署分离:在部署服务单元时,读服务和写服务分离,核心服务和非核心服务分离,以确保整个服务单元的稳定性和可靠性。
- 灵活可扩展:在服务接口定义时,要考虑服务需求的多样性和灵活性。
- 安全先行:服务化时要首先考虑安全。
- 动静分离:静态资源可以实现服务化,实现静态资源与动态资源分离,从而提高性能。
- 服务埋点:通过在外层系统埋点,可以实现面向终端用户服务的精细管理,比如服务的容量、服务的性能等。
- 超时保护:要提供超时控制。
- 快速失败:只要发生错误,就立刻返回,避免服务调用时间过长。
- 结果可预期:任何服务的调用结果一定是成功、失败、未知三者之一,如果是未知,则需要再次检查。
- 服务无状态:在实现设计上确保服务无状态,避免让服务维护跨服务的会话上下文。
- 可重入幂等:在实现设计上确保服务操作的幂等效果。
- 异步解耦:能异步调用的服务尽量使用异步调用,从而提高系统响应速度并降低系统之间的耦合性。
- 避免单点:服务的实现不能有单点。
- 乱序可容忍:分布式架构会使任务、数据被处理的顺序可能不同于其产生的顺序,需要在实现设计上消除乱序对业务一致性的影响,要么让处理对顺序不敏感,要么以牺牲性能可扩展性为代价,强制实现处理的顺序性
- 高并发性能优化:高压场景下的服务调用链路需要特殊处理,可通过将链路缩短、异步化、批量化、缓存预热等多种提升性能的综合手段和处理方式。
推荐阅读
- Spark,一个奇迹的诞生
- mkw优秀职场人必修课-职场心理学, 助你走出内耗陷阱分享
- Nginx和Tomcat的安装
- 抖音快手机房搭建市场怎么样()
- find
- 小胖学Linux day21~22(find文件查找)
- Go语言开发的灵活管理资源的开源CMDB
- postgres_dba 小工具
- HttpClient使用详解与实战一(普通的GET和POST请求)