首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式世界中的设计

软件设计有两种方法:一种是简单到明显没有缺陷;另一种是复杂到缺陷不那么明显。分布式计算是构建大型系统的艺术,它将工作划分到许多机器上。

分布式系统负载均衡器

分布式计算在许多方面不同于传统计算。它规模更大,有很多机器,每个机器聚焦于执行专门的任务,服务被复制以增加容量。硬件故障不再被视为紧急或异常,而是作为系统的预期部分。因此,系统工作常伴随故障的发生。

大型系统通过组合较小的部件来形成,这种组合通常的三种方式:许多后端副本的负载均衡器、前端有许多不同的后端以及一个服务器树

负载均衡器在许多重复系统之间划分流量。具有许多不同的后端的前端并行使用不同的后端,每个后端执行不同的进程。服务器树使用树配置,每个树级别分别服务于不同的目的。

具有多个后端副本的负载均衡器

负载均衡器必须始终知道哪些后端仍在运行并准备好接收请求。选择负载最小的后端,会考虑不周实现可能带来灾难性后果。以最近发送服务器的连接数量来衡量,会掩盖某些连接可能持续时间比较长,而其他连接可能很快就返回了。基于CPU利用率来衡量,则此定义对输入/输出(I/O)过载是无效的。通常使用最后5分钟负载的尾随平均值来衡量负载。

具有多个后端的服务器

单个服务器:一个简单的搜索引擎如何在多个后端的帮助下处理查询。前端接收请求,然后将这个查询转发到许多后端服务器。

多个服务器:具有副本和负载均衡后端的相同架构,它与前一个使用了同样的设计原则,但它具有更好的扩展性和应对故障的能力。由于后端并行工作,一个响应不必等待前一个后端进程结束之后才开始下一个请求。而系统是松耦合的,也允许一个后端服务失败的时候,仍然可以通过填充一些默认信息或将该区域留为空白来构造页面。

服务器树

许多服务器与一个根服务器协同工作,根服务器下挂有父服务器,以及树底部的叶服务器,它们共同构成了这棵树。要查询整个数据集,根节点接收原始查询,并将其转发给父节点。父节点再将查询转发给叶节点,叶节点搜索其特有的那部分语科库,然后将结果发送回父节点。父节点对结果进行排序和过滤之后转发到根节点,然后根节点从所有的父节点的响应中组合出结果,最后形成完整的答案响应给调用者。

分布式系统CAP原则

分布式系统中的状态维护是复杂的。无论它是不断更新信息的大型数据库,还是许多系统需要持续访问的几个关键位,都遵循CAP原则。CAP原则声明,不可能构建一个分布式系统来同时保持一致性、可用性和分区容错性,最多只能选择三个因素中的两个。

系统随着时间的推移而发展,为了使演进更容易,组件需要松耦合的实现,对提供的服务进行抽象,使得内部可以被替换或改进而不是改变抽象。因此新特性加入的时候,对服务的依赖性不需要改变。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181025G0USOQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券