理解分布式系统中的垂直拆分和水平拆分

本文详细介绍了垂直拆分和水平拆分的概念及其在业务系统和数据库中的应用。垂直拆分按照功能进行,使系统更易维护和扩展,但可能增加系统复杂度。水平拆分则用于应对高并发,通过多节点分散压力,但面临拆分规则制定和事务一致性挑战。两种策略各有优缺点,适用于不同的场景和需求。
摘要由CSDN通过智能技术生成

概念

水平拆分简单字面意思是:水平方向上由一个拆分为多个。垂直拆分简单字面意思是:垂直方向上由一个拆分为多个。

1,垂直拆分

垂直拆分指按照功能进行拆分,秉着“专业的人干专业的事”的原则,把一个复杂的功能拆分为多个单一、简单的功能,不同单一简单功能组合在一起,和未拆分前完成的功能是一样的。由于每个功能职责单一、简单,使得维护和变更都变得更简单、容易、安全,所以更易于产品版本的迭代,还能够快速的进行敏捷发布和上线。

2,水平拆分

水平拆分是指由于单一节点无法满足需求,需要扩展为多个节点,多个节点具有一致的功能,组成一个服务池,一个节点服务一部分请求量,所有节点共同处理大规模高并发的请求量。

 

业务系统的拆分

垂直拆分:对业务的不同进行分类,不同的业务划分到不同的应用中。这种拆分往往是根据系统的改造,将原来的功能模块按照更加细粒度的拆分成多个弱耦合的服务。例如:微服务服务拆分

水平拆分:最经典的就是将整个应用分层。数据库访问层和业务逻辑层拆分、网关层和业务逻辑层拆分等等。

 

数据库的拆分

垂直拆分: 垂直切分是指按照业务将表进行分类。第一种是将我们的一个表拆分成多个表,例如:一个订单表可以拆分为订单表、订单附属表;第二种是将我们的表按照业务拆分到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面,例如:订单数据库、账务数据库、费用数据库等

优点:

        1. 拆分后业务清晰,拆分规则明确。

        2. 系统之间整合或扩展容易。

        3. 数据维护简单。

缺点:

        1. 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。

        2. 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。

        3. 事务处理复杂。

 

水平拆分:相对于垂直拆分的区别是:垂直拆分是把不同的表拆到不同的数据库中,而水平拆分是把同一个表拆到不同的数据库中,分库分表。

        

优点:

        1. 不存在单库大数据,高并发的性能瓶颈。

        2. 对应用透明,应用端改造较少。     

        3. 按照合理拆分规则拆分,join操作基本避免跨库。

        4. 提高了系统的稳定性跟负载能力。

 

缺点:

        1. 拆分规则难以抽象。

        2. 分片事务一致性难以解决。

        3. 数据多次扩展难度跟维护量极大。

        4. 跨库join性能较差。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值