江苏省住房和城乡建设局网站首页,重庆建设工程信息网官网查询系统官网,如何加入电商平台,张店网站建设方案文章首发公众号#xff1a;海天二路搬砖工
单一职责原则
什么是单一职责原则
单一职责原则原本是面向对象设计中的一个基本原则#xff0c;它指的是一个类只负责一项职责#xff0c;不要存在多于一个导致类变更的原因。
在微服务架构中#xff0c;一个微服务也应该只负…文章首发公众号海天二路搬砖工
单一职责原则
什么是单一职责原则
单一职责原则原本是面向对象设计中的一个基本原则它指的是一个类只负责一项职责不要存在多于一个导致类变更的原因。
在微服务架构中一个微服务也应该只负责一个功能或业务领域这样可以使微服务的职责清晰、可维护性高、易于扩展和替换。
单一职责原则案例
以一个简单的电商系统为例可以拆分为用户服务、商品服务、订单服务、物流服务等微服务每个微服务只负责单一的业务领域。 涉及用户身份信息的修改只需要变更用户服务其他服务不受影响。
实现单一职责原则的挑战与应对
在微服务架构中实现单一职责原则其实最大的挑战职责边界不够清晰。
在微服务设计的初期尽可能地定义出微服务之间的职责边界确保每个微服务负责的业务领域和功能范围都能够清晰地定义出来。
在设计的过程中可以采用 DDD领域驱动设计等设计技术来帮助确定职责边界。
如果我们无法确定一个功能是否应该属于某个微服务或者认为该功能当前属于这个微服务但以后可能不是那它就不应该放在当前的微服务中。可以进一步定义这个功能所属的业务领域也可以单独使用某个微服务来托管这些类似的功能。
服务自治原则
什么是服务自治原则
微服务架构的服务自治原则Service Autonomy是指每个微服务都应该具备高度自治的能力即每个服务要能做到独立开发、独立测试、独立构建、独立部署独立运行。
服务自治原则是微服务架构中的一条基本原则它有利于提高整个系统的可靠性和弹性并能够更快速地响应业务需求和变化。
服务自治原则还可以鼓励团队之间更加分散化、独立化的协作方式并减少不同团队的耦合度提高系统的可扩展性和可重用性。
服务自治原则示例
同样以上面的电商系统为例每一个微服务应该有自己的存储、配置在进行开发、部署、构建、运行和测试时并不需要过多关注其他微服务的状态和数据。 实现服务自治原则的挑战和应对
对于一个相对复杂的系统而言是没有办法完全切割成完全独立的子系统服务的。 比如上面的示例中订单管理可能包含下单逻辑下单需要考虑商品是否还有库存商品管理。微服务之前可能发生流程的联动或者数据的共享。
在实现服务自治原则时需要定义好服务间交互的协议。要尽可能避免直接访问对方的数据而应该通过统一的接口来获取信息和提供能力。
分层单向依赖原则
什么是分层单向依赖原则
在更为复杂的业务中微服务的水平拆分已经无法满足微服务治理的需求。针对不同的功能定位可以做纵向的分层。
通常系统可以分为下面几层
**API 网关层**提供统一的服务接口和面向用户的商业逻辑处理是微服务系统和外部系统的统一接口具备流量控制、认证授权、缓存等功能。**应用服务层**处理业务逻辑、事务管理、权限控制等对外提供领域服务接口同时维护业务状态和业务规则。应用服务层对其他层具有扩展性和可配置性是整个系统的关键决策层。**领域服务层**实现业务功能和核心业务逻辑是核心的业务处理层。领域服务层之间不直接互相调用只能通过公开的作用于领域范围内的接口完成。**数据访问层**提供数据访问和持久化例如数据库的读写、缓存管理等对领域实体进行持久化操作。
分层单向依赖原则示例 实现分层单向依赖的挑战与应对
接口设计问题 分层单向依赖要求每个层次都只能调用下层的接口需要对接口设计进行规范化和优化。对于接口设计问题需要注意保持接口的稳定性和向后兼容性避免调用者和实现者之间的耦合度过高。性能问题 在做分层单向依赖的时候需要完成大量的层间信息传递这有可能导致性能瓶颈增强。为了解决这个问题可以采用一些优化策略如缓存、异步等方式来加速服务处理和减少系统负担。
我的公众号