ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布式系统介绍

2021-11-11 13:04:33  阅读:123  来源: 互联网

标签:依赖 系统 业务 介绍 模块 分布式系统 设计


一. 什么是分布式系统?

简单来讲,分布式系统就是将一个系统按照一定维度拆分成多个子系统并散布到不同设备。

二. 如何设计分布式系统

1.系统拆分

  • 以业务为导向,按不同层面的业务模型可以将其划分为主模型、次模型。由于业务存在重复依赖(你中有我,我中有你),需要从业务边界中按照业务功能去细分。

2.业务模块解耦

  • 在拆分之前模块与模块之间,系统与系统之间可能存在非常强的依赖,按照业务维度拆分后,两个模块可能还会存在依赖(如电商系统中,用户模块与商品模块,用户强依赖商品,但如果为了减少依赖直接把商品从用户中剔除,显然又不太合理,这种我们可以把两者之间通用性较强的业务独立到共通的服务中,通过调用共通服务减少耦合,从而达到减少用户依赖商品的细粒度。)

3.系统容错

  • 容错设计包含以下两个层面,架构设计层面如重试、服务降级(如正常情况1s轮询一次,降级之后可以5s甚至更久)以及熔断和限流(它们是为了应对性能过载的情况。对于一个模块来说,熔断一般是上游采取的措施,而限流则是自己可以采取的措施);业务功能层面如幂等(保证一定的时间内,重复的请求不再消费)、异步处理以及事务补偿机制(针对重要场景提供多种处理方案,特定情况下一种方案通过即可,业务程序中可以设置开关,通过开关切换实现事务补偿)。

4.高可用

  • 首先在设计过程中要尽量避免系统的单点出现,因为单点系统面临严重的高可用问题,所以需要保证系统处于多机状态,俗称冗余。
  • 为了保证服务器正常运行,可对服务器进行监控,如探针、心跳等。
  • 为了提高服务器服务的可用性,可以进一步采取服务器负载均衡、主从切换,故障转移(如“哨兵”系统在主挂了之后leader哨兵采取的措施)等措施。

总结:在分布式系统设计过程中,存在以下几个难点

  • 各个子系统分别部署在不同机器上需要进行网络通信,所以解决网络因素(网络延迟、网络故障)就是必须要考虑的难点问题。
  • 数据一致性问题,在分布式系统中,由于数据架构需要提供多节点部署,不同节点之间通信就会存在数据差异,让业务不能正常运转,而如何让不同模块之间的数据保证完整性,一致性也是必须要解决的问题,这个问题一般采用分布式事务处理(如消息发布/订阅模式),牺牲一部分性能去保证数据一致性。

三. 分布式系统可以解决什么问题

1.系统宕机

  • 随着业务量增大,系统压力也会越来越大,如果放任不管,可能就会导致系统因为负载过高而宕机,所以需要通过优化让系统变得稳定、负载降低,最直接的方式就是增加系统容量,但是硬件扩展可能会有下面的问题,硬件设备费用过高且后续会带来更大的维护代价。所以就需要通过垂直或者水平按照一定维度将业务系统拆分成多个模块,降低耦合性的方式进一步优化。分布式系统具有良好的横向扩展性,通过横向扩展机器可以快速提高系统的并发量和吞吐量。分布式系统由于模块较多且调用过程长,所以从外界流量入口分发、代理服务、网络传输、容器、应用服务、数据存储都可能存在很高的优化空间。

2.系统瘫痪

  • 如机房停电、线路关闭、网络阻塞等都会导致,而系统在设计之初就需要考虑这些问题,通过不断探索、改进、完善增强系统健壮性,解决这些问题也有众多方案,如多机房部署就可以从根源解决因停电引起的事故。

3.系统故障

  • 由于分布式系统在设计之初为了提高服务可用性,就会设计多种故障转移方式,实在需要人工维修排查故障,又因为分布式讲究系统拆分模块化,使用更轻量化模块,所以能更快更准确的找到并解决问题。

4.系统臃肿

标签:依赖,系统,业务,介绍,模块,分布式系统,设计
来源: https://blog.csdn.net/virgofarm/article/details/121248035

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有