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

服务的拆分

纵向拆分

是从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。

以社交App为例,你可以认为首页信息流是一个服务,评论是一个服务,消息通知是一个服务,个人主页也是一个服务。

横向拆分

是从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。

继续以前面提到的社交App举例,无论是首页信息流、评论、消息箱还是个人主页,都需要显示用户的昵称。假如用户的昵称功能有产品需求的变更,你需要上线几乎所有的服务,这个成本就有点高了。显而易见,如果我把用户的昵称功能单独部署成一个独立的服务,那么有什么变更我只需要上线这个服务即可,其他服务不受影响,开发和上线成本就大大降低了。
 

基于可扩展拆分

将系统中的业务模块按照稳定性排序,将已经成熟和改动不大的服务拆分为稳定服务,将经常变化和迭代的服务拆分为变动服务。稳定的服务粒度可以粗一些,即使逻辑上没有强关联的服务,也可以放在同一个子系统中,例如将“日志服务”和“升级服务”放在同一个子系统中;不稳定的服务粒度可以细一些,但也不要太细,始终记住要控制服务的总数量。

这样拆分主要是为了提升项目快速迭代的效率,避免在开发的时候,不小心影响了已有的成熟功能导致线上问题。

基于可靠性拆分

将系统中的业务模块按照优先级排序,将可靠性要求高的核心服务和可靠性要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。

基于性能拆分

基于性能拆分和基于可靠性拆分类似,将性能要求高或者性能压力大的模块拆分出来,避免性能压力大的服务影响其他服务。常见的拆分方式和具体的性能瓶颈有关,可以拆分 Web 服务、数据库、缓存等。例如电商的抢购,性能压力最大的是入口的排队功能,可以将排队功能独立为一个服务。

参考文章:

四种常用的微服务架构拆分方式 - 知乎

如今的微服务是如何把系统划分成一个个服务的,都有些什么方法?而原先的SOA架构又是如何划分服务的? - 知乎

遗留系统的服务拆分 - 知乎

如何合理的拆分微服务_博客微服务拆分怎么拆分_wh柒八九的博客-CSDN博客 

微服务拆分的原则、方法和误区 

http://www.lryc.cn/news/130841.html

相关文章:

  • Uniapp Syntax Error: Error: Unbalanced delimiter found in string
  • 视频集中存储EasyCVR视频汇聚平台定制项目增加AI智能算法
  • 确保Django项目的稳定运行和持续改进
  • HAProxy负载均衡 代理
  • 前端面试的游览器部分(8)每天10个小知识点
  • 【【verilog典型电路设计之流水线结构】】
  • 大数据课程K2——Spark的RDD弹性分布式数据集
  • Seaborn数据可视化(一)
  • Sentinel规则持久化
  • Transformer 相关模型的参数量计算
  • 企业信息化过程----应用管理平台的构建过程
  • 揭秘程序员的鄙视链,你在哪一层?看完我想哭
  • 在docker下进行mysql的主从复制
  • 【机器学习】处理不平衡的数据集
  • JVM前世今生之JVM内存模型
  • redis事务对比Lua脚本区别是什么
  • Java“牵手”根据店铺ID获取1688店铺所有商品数据方法,1688API实现批量店铺商品数据抓取示例
  • linux-shell脚本收集
  • 使用 MBean 和 日志查看 Tomcat 线程池核心属性数据
  • Visual Studio 2019源码编译cpu版本onnxruntime
  • Go和Java实现模板模式
  • angular:quill align的坑
  • 设计模式篇---抽象工厂(包含优化)
  • Azure创建可用性集
  • SpringBoot中优雅的实现隐私数据脱敏(提供Gitee源码)
  • Elasticsearch集群shard过多后导致的性能问题分析
  • Unity框架学习--5 事件中心管理器
  • (二)结构型模式:3、过滤器模式(Filter、Criteria Pattern)(C++示例)
  • 谷歌在Chrome浏览器中推进抗量子加密技术
  • Kotlin的数组