系统拆分粒度

简介: https://copyfuture.com/blogs-details/201910291948235480dyaua5tzwp25mk在什么情况下要进行系统拆分,为什么需要拆分在本篇就不进行说明了。

https://copyfuture.com/blogs-details/201910291948235480dyaua5tzwp25mk

在什么情况下要进行系统拆分,为什么需要拆分在本篇就不进行说明了。​

拆分系统,带来的基本性问题就是,拆分到什么粒度是最合适的?

这个问题没有标准答案,也很难不根据具体的场景来回答一个通用的答案。

当然,一个系统要拆分的好,一般是认为系统拆分之后,每个模块或者组件之间的粒度标准需要满足一个原则,也就是高内聚,低耦合。

高内聚是指模块内的功能和逻辑是紧密联系在一起的,低耦合是指模块之间的关联性很小。
例如:
将系统划分为10个模块,一般情况下修改其中的一个模块几乎不会影响到其他的9个模块,这时候我们可以说系统是低耦合的。
同理,每个模块内的功能和逻辑都围绕这一个核心业务流程,很难继续拆解成两个独立系统,我们就可以说系统是高内聚的。

粒度粗细的优劣

总的来说,细粒度拆分的优点有:

(1)服务都能够独立部署

(2)扩容和缩容方便,有利于提高资源利用率

(3)拆得越细,耦合相对会减小

(4)拆得越细,容错相对会更好,一个服务出问题不影响其他服务

(5)扩展性更好

(6)…

细粒度拆分的不足也很明显:

(1)拆得越细,系统越复杂

(2)系统之间的依赖关系也更复杂

(3)运维复杂度提升

(4)监控更加复杂

(5)出问题时定位问题更难

(6)…

系统按照合适的粒度拆分成不同模块的过程,一般称之为模块化。模块化也是软件工程化的基础。
只有在这个基础上才能实现团队合理的分工合作

一个好的系统,从拆分开始

目录
相关文章
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
411 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
36 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
355 0
|
4月前
|
SQL 存储 开发者
云架构数据倾斜问题之聚合操作导致数据膨胀如何解决
云架构数据倾斜问题之聚合操作导致数据膨胀如何解决
|
4月前
|
存储 canal
分库分表优化:引入中间表
【7月更文挑战第12天】
54 10
|
SQL 缓存 负载均衡
分布式AKF拆分原则
分布式AKF拆分原则
144 0
|
数据库
分库分表后路由策略设计
分库分表后设计到的第一个问题就是,如何选择路由key,应该如何对key进行路由。路由key应该在每个表中都存在而且唯一。路由策略应尽量保证数据能均匀进行分布。 如果是对大数据量进行归档类的业务可以选择时间作为路由key。比如按数据的创建时间作为路由key,每个月或者每个季度创建一个表。按时间作为分库分表后的路由策略可以做到数据归档,历史数据访问流量较小,流量都会打到最新的数据库表中。 也可以设计其与业务相关的路由key。这样可以保证每个数据库的资源都能很好的承担流量。
|
SQL 算法 Java
自定义水平分库分表策略【范围分片】
自定义水平分库分表策略【范围分片】
|
算法 Java 数据库连接
自定义水平分库分表的策略【精准分片】
自定义水平分库分表的策略【精准分片】
|
存储 JavaScript Java
亿级别大表拆分 —— 记一次分表工作的心路历程
亿级别大表拆分 —— 记一次分表工作的心路历程