当前位置: 首页 > ds >正文

微服务6大拆分原则

微服务6大拆分原则

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

一、单一职责原则

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

图片

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

1)易于维护

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

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

2)解耦性

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

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

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

3)更好的团队协作

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

二、适当微原则

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

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

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

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

三、接口隔离原则

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

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

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

四、避免影响产品原则

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

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

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

五、具备可扩展性原则

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

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

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

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

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

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

六、容错性原则

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

http://www.xdnf.cn/news/5367.html

相关文章:

  • C++修炼:stack和queue
  • 服务器综合实验(实战详解)
  • 【新教程】Linux服务器ssh启用两步验证
  • 什么是深拷贝什么是浅拷贝,两者区别
  • PPO近端策略优化算法
  • Tailwind CSS v4 主题化实践入门(自定义 Theme + 主题模式切换)✨
  • shell 编程之正则表达式与文本处理器
  • JS逆向-7881游戏平台Lb-Sign参数和Lb-Timestamp参数
  • SaaS场快订平台项目说明【持续更新】
  • ensp的华为小实验
  • 管道-验证和转换
  • 关于“铜宝”电线的质量,以下是综合分析:
  • 第3.2.3节 Android动态调用链路的获取
  • 【程序员AI入门:开发】11.从零构建智能问答引擎:LangChain + RAG 实战手册
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
  • Python函数式编程入门:闭包与装饰器详解
  • 【数据结构】子串、前缀
  • 数据库索引详解:原理 · 类型 · 使用 · 优化
  • 傅利叶十周年,升级核心战略:“有温度”的具身智能蓝图
  • 【STM32 学习笔记】USART串口
  • ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。
  • vscode_python远程调试_pathMappings配置说明
  • 一、数据仓库基石:核心理论、分层艺术与 ETL/ELT 之辨
  • Day21 奇异值分解(SVD)全面解析
  • 【Redis】缓存和分布式锁
  • spark-哈希join介绍
  • spring中的@Inject注解详情
  • 嵌入式学习笔记 - 运算放大器的共模抑制比
  • 探索C++内存管理
  • MySQL中like模糊查询如何优化?