分布式系统原理

初入分布式系统

  1. 分布式系统出现的原因,目前主要有两个
    • 解决性能问题,解决单台计算机的并发能力,计算能力
    • 解决故障问题,解决单台计算机发生故障(断电,服务中断,电脑宕机)时,保证整个系统仍能够运行
  2. 相较于分布式系统,在20世纪还流行过集中式系统,集中式系统,就是所有的资源都处在同一台计算机中,集中式系统为应对服务,需要的硬件资源很多(就是很贵),这样做好处是不需要对不同子系统进行协调控制,保证程序运行的稳定性,但坏处是,当故障发生时,该软件服务就变为不可用
  3. 分布式系统(distributed system),我的理解是分布开来的软件系统,分布式系统首先是一个软件系统,一个完全依赖软件和通用计算机组成的服务,
    就是不被物理资源所限制,通过增加计算机数量和软件协同完成一个服务
  4. 分布式系统的特点除了依赖的计算机多以外,还表现为一个服务,通常对外的接口,或者说服务对接的入口,仅有一个,通过内部协同多台计算机,不需要对接不同的服务器,软件内部自己完成负载均衡,故障处理与恢复,协调不同子系统之间的状态等
  5. 分布式系统另一大优势在于,即使计算能力仍然不满足现有需求,通过一些简单的操作,继续为分布式系统添加计算机,就可以满足日益增长的需求,称为 可拓展性

分布式系统功能设计

  1. 分布式系统是非常复杂的,首先分布式系统非常依赖网络,而网络故障、延时等问题就导致整个系统建在一个不稳定的地基上,其次,一个关键问题,如何保证不同的计算机之间的数据(状态)都是一样的(一致性),然后各个计算机之间的关系是怎样的,不同计算机担当的角色一样吗,当性能不够的时候,如何保证新增的计算机能够被整个系统所使用
  2. 分布式系统对于故障处理的要求较高(高可用),也就是当系统中的一些计算机无法正常提供服务时,如何保证整个系统仍然能够正常运行

解决分布式系统问题的常见思路

  1. 维护整个系统的数据、状态保持一致?
    • 使用分布式锁,即通过网络实现的锁,协调不同计算机并发带来的问题
  2. 保证系统高可用?
    • 单机的数据进行复制备份,保证数据丢失情况下,仍能够保证运行
    • 定期检测其他机器的状态,当故障发生时,及时处理
  3. 如何协调不同计算机进行工作?
    • 最简单的方法就是让一台计算机称为大哥计算机,所谓大哥计算机(主计算机),负责收集和管理小弟们的信息,分发任务和接收请求
    • 可以手动指定一台计算机作为 主 ,其他作为从属计算机
    • 也可以通过算法,自动计算生成主计算机

著名的分布系统理论和算法

这些理论和算法,对一些方案进行深入研究,并给出具体实施步骤,关键在复杂情况发生下时,仍能够保证算法的可行

  1. Paxos 算法 (一致性算法)
    • https://my.oschina.net/u/150175/blog/2992187
  2. CAP理论
    • https://blog.csdn.net/chen77716/article/details/30635543

常见分布式问题

  1. 分布式系统首先要解决的问题是高并发的问题,这意味着组成分布式系统的每个组件都需要很高的并发
    • linux socket 数量是有上限的,需要对最大 socket 数量进行控制
    • 任何连接,使用完毕后,要手动关闭,能使得该资源能够快速释放
    • TCP 连接,需要经历 listen - connected - close 的过程,其中异常情况下,传输到一半的时候,客户端断开了,此时服务器会出现 close_wait 状态的 TCP,详细请参看 TCP close_wait 异常
    • 对每个组件进行压力测试,测试在短时间内,最多能够接受多少连接
    • 高并发并不意味着 CPU 资源消耗很大,大多数更依赖 内存 和 网络带宽
    • 出现连接崩溃的时候,首先自己不要崩溃,保持冷静,思考可能出现在哪一个环节,不能马上确定问题的时候,首先要划分组件,考虑哪个组件崩溃的可能性
    • 利用监控,首先去验证简单且能快速排查的地方,例如计算机硬件系统资源, 进程服务是否正常top 、netstat、 ps
    • 遇到问题,可以先画下图,展示整个系统的工作流程,从中寻找问题
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值