FAQ-分布式系统关键技术

  1. 理论篇
    1. 基础篇

  • 为什么需要分布式架构?
  1. 增大系统容量。当业务量越来越大时,一台机器容量已经无法满足了,我们就需要多台机器。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。
  2. 加强系统可用。当所有业务都部署在一台机器上的时候,一旦机器出故障就会导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。
  • 分布式架构有什么优势?
  1. 实现更大数据量的存储。
  2. 可以提高系统的高可用性。
  3. 提高系统的可重用性。
  4. 可更好提高系统的性能。

  • 分布式架构有什么劣势?

采用任何技术方案都是“按下葫芦浮起瓢”,都是有得有失,分布式架构也有劣势,具体如下:

  1. 会增加架构设计的难度。
  2. 部署和维护的成本也会加大。

    分布式系统架构的难点在于系统设计,以及管理和运维。所以,分布式架构解决了“单

点”和“性能容量”的问题,但却新增了一堆问题。

    1. 进阶篇
  •  分布式架构设计有什么难点?
  1. 异构系统的不标准问题?(软件、协议、格式、运维的不标准)
  2. 系统架构中的服务依赖问题?(多米诺骨牌效性,一个服务宕机)
  3. 故障发生的概率更大?(故障恢复时间、影响面)
  4. 多层架构的运维复杂度更大?(基础层-硬件、平台层-中间件、应用层-业务、接入层-网关)

  • 分布式架构设计的目的?
  1. 提高整体架构的吞吐量,服务更多的并发和流量。
  2. 提高系统的稳定性,让系统的可用性更高。
  • 如何基于架构设计提高其性能?
  1. 缓存系统。加入缓存系统,可以有效地提高系统的访问能力。从前端的浏览器,到网络,再到后端的服务,底层的数据库、文件系统、硬盘和CPU,全都有缓存,这是提高快速访问能力最有效的手段。
  2. 负载均衡系统。负载均衡是做水平扩展的关键技术。其可以用多台机器来共同分担一部分流量请求。
  3. 异步调用。异步系统主要通过消息队列来对请求做排队处理,这样可以把前端的请求的峰值给“削平”了,而后端通过自己能够处理的速度来处理请求。
  4. 数据分区和数据镜像。数据分区是把数据按一定的方式分成多个区(比如通过地理位置),不同的数据区来分担不同区的流量。
  • 如何基于架构提高系统的稳定性?
  1. 服务拆分,主要有两个目的:一是为了隔离故障,二是为了重用服务模块。
  2. 服务冗余,可以去除单点故障,并可以支持服务的弹性伸缩,以及故障迁移。
  3. 限流降级,当系统实在扛不住压力时,只能通过限流或者功能降级的方式来停掉一部分服务,或是拒绝一部分用户,以确保整个架构不会挂掉。
  4. 高可用架构,从冗余架构的角度来保障可用性。比如,灾备多活,或是数据可以在其中复制保持一致性的集群。
  5. 高可用运维,指的是DevOps中的CI(持续集成)/CD(持续部署)。一个良好的运维应做了足够的自动化测试,做了相应的灰度发布,以及对线上系统的自动化控制。这样,可以做到“计划内”或是“非计划内”的宕机事件的时长最短。

  • 分布式架构有哪些关键技术?
  1. 服务治理。服务治理的最大意义是需要把服务间的依赖关系、服务调用链,以及关键的服务给梳理出来,并对这些服务进行性能和可用性方面的管理。 
  2. 架构管理。基于服务所形成的架构需要有架构版本管理、整体架构的生命周期管理,以及对服务的编排、聚合、事务处理等服务调度功能。 
  3. DevOps。分布式系统可以更为快速地更新服务,但是对于服务的测试和部署都会是挑战。所以,还需要DevOps的全流程,其中包括环境构建、持续集成、持续部署等。 自动化运维。有了DevOps后,我们就可以对服务进行自动伸缩、故障迁移、配置管理、状态管理等 一系列的自动化运维技术了。
  4. 资源调度管理。应用层的自动化运维需要基础层的调度支持,也就是云计算IaaS层的计算、存储、 网络等资源调度、隔离和管理。 
  5. 整体架构监控。如果没有一个好的监控系统,那么自动化运维和资源调度管理只可能成为一个泡影, 因为监控系统是你的眼睛。没有眼睛,没有数据,就无法进行高效的运维。所以说,监控是非常重要 的部分。这里的监控需要对三层系统(应用层、中间件层、基础层)进行监控。 
  6. 流量控制。最后是我们的流量控制,负载均衡、服务路由、熔断、降级、限流等和流量相关的调度都 会在这里,包括灰度发布之类的功能也在这里。

  • 能说说你对CAP的理解吗?

  1. 分布式系统设计中的CAP指的是什么:

C:一致性(Consistency),每次访问都能获得最新数据但可能会出现错误的响应。

A:可用性(Availability),每次访问都能收到非错响应,但不能保证获取最新数据。

P:分区容错性(Partition Tolerance),在任意分区网络故障的情况下系统仍能继续运行。

  1. 分布式系统中的CAP设计不可能三者都满足。

在一个分布式系统中,首先网络是不可靠的,我们的系统就需要支持分区容错,然后需要在软件可用性和一致性之间做出取舍,也就是鱼和熊掌不能兼得。

CP:一致性和分区容错性,等待分区节点的响应可能会导致延时错误。如果你的业务需求需要原子读写,CP 是一个不错的选择。

AP:可用性与分区容错性,响应节点上可用数据的最近版本可能并不是最新的。当分区解析完后,写入(操作)可能需要一些时间来传播。如果业务需求允许最终一致性,或当有外部故障时要求系统继续运行,AP 是一个不错的选择。

  1. Linux操作系统
    1. 基础篇
  • 说说你对Linux系统的认识?
  • Linux系统启动,重启、退出的常用指令?
  • 说几个Linux系统下常用的文件操作?
  • Linux系统中的防火墙操作有哪些࿱
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值