微服务6大拆分原则

微服务6大拆分原则

微服务拆分是指将一个大型应用程序拆分成独立服务的过程,在微服务拆分时,需要考虑以下6大微服务拆分原则

一、单一职责原则

微服务单一职责原则,是指每个微服务应该专注于解决一个明确定义的业务领域或功能,而不是试图处理多个不相关的功能。

在微服务架构中,单一职责原则的重要性体现在以下几个方面:

1)易于维护

每个微服务专注于特定的功能或业务领域,使得服务的代码相对独立,易于维护。

当需要增加新功能或对某个功能进行修改时,只需关注该微服务,而不影响其他服务的运行。

2)解耦性

如果一个微服务接口有一个以上的职责,这些职责就耦合在了一起,这会导致脆弱的设计。

单一职责原则有助于降低服务之间的耦合度,因为每个微服务只关注一个功能,不会包含与其他功能相关的代码。

所以微服务之间的关联度较低,可以更灵活地独立开发、部署和扩展。

3)更好的团队协作

每个微服务的责任清晰明确,可以由专门的团队负责开发和维护,这种团队的划分也能够促进团队之间的合作和协作,提高开发效率。

二、适当微原则

使用微服务最重要的一点就是,微服务到底多微才算"微",这个业界也没有一定的标准。

服务越小,微服务的独立性就会越高,但同时,微服务的数量也会激增,管理这些大批量的服务也将会是一个挑战。

所以,微服务也不是越小越好,最好结合服务拆分场景来考虑。

应逐步划分,持续演进,避免服务数量的爆炸性增长。

三、接口隔离原则

定义微服务之间的接口时,应该遵循接口隔离原则,确保接口足够简洁明了,不包含不必要的功能,减少耦合。

服务通过标准的接口隔离,隐藏内部实现细节,这使得服务可以独立开发、测试、部署、运行,以服务为单位持续交付。

尽量消除对其他服务的强依赖,这样可以降低沟通成本,提升服务稳定性。

四、避免影响产品原则

也就是说要一边做产品功能迭代,一边完成服务化拆分。

比如:优先剥离比较独立的边界服务,短信服务之类就是典型可独立的服务。

从非核心的服务出发减少拆分对现有业务的影响,也给团队一个练习、试错的机会。

五、具备可扩展性原则

在拆分微服务时,应该考虑到每个服务的独立扩展性,以满足不同的负载需求。

微服务拆分之后,由于服务是以独立进程的方式部署,所以服务之间通信就不再是进程内部的方法调用而是跨进程的网络通信了。

在这种通信模型下服务接口的定义要具备可扩展性,否则在服务变更时会造成意想不到的错误。

比如:微服务的接口因为升级把之前的三个参数改成了四个,上线后导致调用方大量报错。

针对这种情况,推荐做法服务接口的参数类型最好是封装类,这样如果增加参数就不必变更接口的签名,而只需要在类中添加字段就可以了。

这就是典型的针对微服务接口,具备可扩展性原则的场景之一。

六、容错性原则

在设计微服务时,应该考虑到服务的容错性,以避免单点故障导致整个系统崩溃。

相关推荐
小白的码BUG之路3 小时前
linux -- ssh两台机器相连
运维·服务器·ssh
聚美智数3 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛3 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓4 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
土豆.exe4 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新5 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
小坏讲微服务5 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
续写烂尾5 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
迪康妍妍5 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn5 小时前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统