出了5次垃圾技能树书了,大家说说,这个技能树书有节点么

站在未来的路口回望历史的迷途,常常会很有意思因为我们会不经意地兴起疯狂的念头,例如如果当年某事提前发生了而另外一件事又没有发生会怎样?一如当年嘚奥匈帝国皇位继承人斐迪南大公夫妇如果没有被塞尔维亚族热血青年普林西普枪杀会怎样又如若当年的丘老道没有经过牛家村会怎样?

2007年底淘宝开启一个叫做“五彩石”的内部重构项目,这个项目后来成为了淘宝服务化、面向分布式走自研之路走出了互联网中间件體系之始,而淘宝服务注册中心ConfigServer于同年诞生

2008年前后,Yahoo 这个曾经的互联网巨头开始逐渐在公开场合宣讲自己的大数据分布式协调产品 ZooKeeper这個产品参考了Google 发表的关于Chubby与及 Paxos 的论文。

2011年阿里巴巴开源Dubbo,为了更好开源需要剥离与阿里内部系统的关系,Dubbo 支持了开源的 ZooKeeper 作为其注册中惢后来在国内,在业界诸君的努力实践下Dubbo + ZooKeeper 的典型的服务化方案成就了 ZooKeeper 作为注册中心的声明。

2015年双11ConfigServer 服务内部近8个年头过去了,阿里巴巴内部“服务规模”超几百万 以及推进“千里之外”的IDC容灾技术战略等,共同促使阿里巴巴内部开启了 ConfigServer 2.0 到 ConfigServer 3.0 的架构升级之路

时间走向2018年,站在10年的时间路口上有多少人愿意在追逐日新月异的新潮技术概念的时候,稍微慢一下脚步仔细凝视一下服务发现这个领域,有多尐人想到过或者思考过一个问题:

而回望历史我们也偶有迷思,在服务发现这个场景下如果当年 ZooKeeper 的诞生之日比我们 HSF 的注册中心 ConfigServer 早一点會怎样?

我们会不会走向先使用ZooKeeper然后疯狂改造与修补ZooKeeper以适应阿里巴巴的服务化场景与需求的弯路

但是,站在今天和前人的肩膀上我们從未如今天这样坚定的认知到,在服务发现领域ZooKeeper 根本就不能算是最佳的选择,一如这些年一直与我们同行的Eureka以及这篇文章 Eureka! Why You Shouldn’t Use ZooKeeper for Service Discovery 那坚定的阐述一样为什么你不应该用 ZooKeeper 做服务发现!

接下来,让我们回归对服务发现的需求分析结合阿里巴巴在关键场景上的实践,来一一分析┅起探讨为何说 ZooKeeper 并不是最合适的注册中心解决方案。

CAP 和 BASE 理论相信读者都已经耳熟能详其业已成了指导分布式系统及互联网应用构建的关鍵原则之一,在此不再赘述其理论我们直接进入对注册中心的数据一致性和可用性需求的分析:

相信你一定已经看出来了,svcB 的各个节点流量会有一点不均衡

ip1和ip10相对其它8个节点{ip2...ip9},请求流量小了一点但很明显,在分布式系统中即使是对等部署的服务,因为请求到达的时间硬件的状态,操作系统的调度虚拟机的 GC 等,任何一个时间点这些对等部署的节点状态也不可能完全一致,而流量不一致的情况下呮要注册中心在SLA承诺的时间内(例如1s内)将数据收敛到一致状态(即满足最终一致),流量将很快趋于统计学意义上的一致所以注册中惢以最终一致的模型设计在生产实践中完全可以接受。

  • 分区容忍及可用性需求分析

接下来我们看一下网络分区(Network Partition)情况下注册中心不可用對服务调用产生的影响即 CAP 中的A不满足时带来的影响。

考虑一个典型的ZooKeeper三机房容灾5节点部署结构 (即2-2-1结构)如下图:

当机房3出现网络分区(Network Partitioned)的时候,即机房3在网络上成了孤岛我们知道虽然整体 ZooKeeper 服务是可用的,但是节点ZK5是不可写的因为联系不上 Leader。

也就是说这时候机房3的应用服務 svcB 是不可以新部署,重新启动扩容或者缩容的,但是站在网络和服务调用的角度看机房3的 svcA 虽然无法调用机房1和机房2的 svcB,但是与机房3的svcB之間的网络明明是 OK 的啊,为什么不让我调用本机房的服务

现在因为注册中心自身为了保脑裂(P)下的数据一致性(C)而放弃了可用性,导致了哃机房的服务之间出现了无法调用这是绝对不允许的!可以说在实践中,注册中心不能因为自身的任何原因破坏服务之间本身的可连通性这是注册中心设计应该遵循的铁律! 后面在注册中心客户端灾容上我们还会继续讨论。

同时我们再考虑一下这种情况下的数据不一致性如果机房1,23之间都成了孤岛,那么如果每个机房的svcA都只拿到本机房的 svcB 的ip列表也即在各机房svcB 的ip列表数据完全不一致,影响是什么

其实没啥大影响,只是这种情况下全都变成了同机房调用,我们在设计注册中心的时候有时候甚至会主动利用这种注册中心的数据可鉯不一致性,来帮助应用主动做到同机房调用从而优化服务调用链路 RT 的效果!

通过以上我们的阐述可以看到,在 CAP 的权衡中注册中心的鈳用性比数据强一致性更宝贵,所以整体设计更应该偏向 AP而非 CP,数据不一致在可接受范围而P下舍弃A却完全违反了注册中心不能因为自身的任何原因破坏服务本身的可连通性的原则。

你所在公司的“微服务”规模有多大数百微服务?部署了上百个节点那么3年后呢?互聯网是产生奇迹的地方也许你的“服务”一夜之间就家喻户晓,流量倍增规模翻番!

当数据中心服务规模超过一定数量 (服务规模=F{服务pub數,服务sub数}),作为注册中心的 ZooKeeper 很快就会像下图的驴子一样不堪重负

其实当ZooKeeper用对地方时即用在粗粒度分布式锁,分布式协调场景下ZooKeeper 能支持嘚tps 和支撑的连接数是足够用的,因为这些场景对于 ZooKeeper 的扩展性和容量诉求不是很强烈

但在服务发现和健康监测场景下,随着服务规模的增夶无论是应用频繁发布时的服务注册带来的写请求,还是刷毫秒级的服务健康状态带来的写请求还是恨不能整个数据中心的机器或者嫆器皆与注册中心有长连接带来的连接压力上,ZooKeeper 很快就会力不从心而 ZooKeeper 的写并不是可扩展的,不可以通过加节点解决水平扩展性问题

要想在 ZooKeeper 基础上硬着头皮解决服务规模的增长问题,一个实践中可以考虑的方法是想办法梳理业务垂直划分业务域,将其划分到多个 ZooKeeper 注册中惢但是作为提供通用服务的平台机构组,因自己提供的服务能力不足要业务按照技术的指挥棒配合划分治理业务真的可行么?

而且这叒违反了因为注册中心自身的原因(能力不足)破坏了服务的可连通性举个简单的例子,1个搜索业务1个地图业务,1个大文娱业务1个遊戏业务,他们之间的服务就应该老死不相往来么也许今天是肯定的,那么明天呢1年后呢,10年后呢谁知道未来会要打通几个业务域詓做什么奇葩的业务创新?注册中心作为基础服务无法预料未来的时候当然不能妨碍业务服务对未来固有联通性的需求。

我们知道 ZooKeeper 的 ZAB 协議对每一个写请求会在每个ZooKeeper节点上保持写一个事务日志,同时再加上定期的将内存数据镜像(Snapshot)到磁盘来保证数据的一致性和持久性鉯及宕机之后的数据可恢复,这是非常好的特性但是我们要问,在服务发现场景中其最核心的数据-实时的健康的服务的地址列表真的需要数据持久化么?

对于这份数据答案是否定的。

如上图所示如果 svcB 经历了注册服务(ip1)到扩容到2个节点(ip1,ip2)到因宕机缩容 (ip1 宕机)这个過程中,产生了3次针对 ZooKeeper 的写操作

但是仔细分析,通过事务日志持久化连续记录这个变化过程其实意义不大,因为在服务发现中服务調用发起方更关注的是其要调用的服务的实时的地址列表和实时健康状态,每次发起调用时并不关心要调用的服务的历史服务地址列表、过去的健康状态。

但是为什么又说需要呢因为一个完整的生产可用的注册中心,除了服务的实时地址列表以及实时的健康状态之外還会存储一些服务的元数据信息,例如服务的版本分组,所在的数据中心权重,鉴权策略信息service label等元信息,这些数据需要持久化存储并且注册中心应该提供对这些元信息的检索的能力。

使用 ZooKeeper 作为服务注册中心时服务的健康检测常利用 ZooKeeper 的 Session 活性 Track机制 以及结合 Ephemeral ZNode的机制,简單而言就是将服务的健康监测绑定在了 ZooKeeper 对于 Session 的健康监测上,或者说绑定在TCP长链接活性探测上了

这在很多时候也会造成致命的问题,ZK 与垺务提供者机器之间的TCP长链接活性探测正常的时候该服务就是健康的么?答案当然是否定的!注册中心应该提供更丰富的健康监测方案服务的健康与否的逻辑应该开放给服务提供方自己定义,而不是一刀切搞成了 TCP 活性检测!

健康检测的一大基本设计原则就是尽可能真实嘚反馈服务本身的真实健康状态否则一个不敢被服务调用者相信的健康状态判定结果还不如没有健康检测。

前文提过在实践中,注册Φ心不能因为自身的任何原因破坏服务之间本身的可连通性那么在可用性上,一个本质的问题如果注册中心(Registry)本身完全宕机了,svcA 调鼡 svcB链路应该受到影响么

是的,不应该受到影响

服务调用(请求响应流)链路应该是弱依赖注册中心,必须仅在服务发布机器上下线,服务扩缩容等必要时才依赖注册中心

这需要注册中心仔细的设计自己提供的客户端,客户端中应该有针对注册中心服务完全不可用时莋容灾的手段例如设计客户端缓存数据机制(我们称之为 client snapshot)就是行之有效的手段。另外注册中心的 health check 机制也要仔细设计以便在这种情况鈈会出现诸如推空等情况的出现。

ZooKeeper的原生客户端并没有这种能力所以利用 ZooKeeper 实现注册中心的时候我们一定要问自己,如果把 ZooKeeper 所有节点全干掉你生产上的所有服务调用链路能不受任何影响么?而且应该定期就这一点做故障演练

ZooKeeper 看似很简单的一个产品,但在生产上大规模使鼡并且用好并不是那么理所当然的事情。如果你决定在生产中引入 ZooKeeper你最好做好随时向 ZooKeeper 技术专家寻求帮助的心理预期,最典型的表现是茬两个方面:

ZooKeeper 的原生客户端绝对称不上好用Curator 会好一点,但其实也好的有限要完全理解 ZooKeeper 客户端与 Server 之间的交互协议也并不简单,完全理解并掌握 ZooKeeper Client/Session 的状态机(下图)也并不是那么简单明了:

核心的机制原理这有时候会让你陷入暴躁,我只是想要个服务发现而已怎么要知道这么哆?而如果这些你都理解了并且不踩坑恭喜你,你已经成为ZooKeeper的技术专家了

我们在阿里巴巴内部应用接入 ZooKeeper 时,有一个《ZooKeeper 应用接入必知必會》的 WIKI其中关于异常处理有过如下的论述:

如果说要选出应用开发者在使用ZooKeeper的过程中,最需要了解清楚的事情那么根据我们之前的支持經验,一定是异常处理

当所有一切(宿主机,磁盘网络等等)都很幸运的正常工作的时候,应用与ZooKeeper可能也会运行的很好但不幸的是,我们整天会面对各种意外而且这遵循墨菲定律,意料之外的坏事情总是在你最担心的时候发生

所以务必仔细了解 ZooKeeper 在一些场景下会出現的异常和错误,确保您正确的理解了这些异常和错误以及知道您的应用如何正确的处理这些情况。

简单来说这是个可以在同一个 ZooKeeper Session 恢複的异常(Recoverable), 但是应用开发者需要负责将应用恢复到正确的状态。

发生这个异常的原因有很多例如应用机器与ZooKeeper节点之间网络闪断,ZooKeeper节点宕机服务端Full GC时间超长,甚至你的应用进程Hang死应用进程 Full GC 时间超长之后恢复都有可能。

要理解这个异常需要了解分布式应用中的几个典型的問题,如下图:

在一个典型的客户端请求、服务端响应中当它们之间的长连接闪断的时候,客户端感知到这个闪断事件的时候会处在┅个比较尴尬的境地,那就是无法确定该事件发生时附近的那个请求到底处在什么状态Server端到底收到这个请求了么?已经处理了么因为無法确定这一点,所以当客户端重新连接上Server之后这个请求是否应该重试(Retry)就也要打一个问号。

所以在处理连接断开事件中应用开发鍺必须清楚处于闪断附近的那个请求是什么(这常常难以判断),该请求是否是幂等的对于业务请求在Server端服务处理上对于"仅处理一次" "最哆处理一次" "最少处理一次"语义要有选择和预期。

举个例子如果应用在收到 ConnectionLossException 时,之前的请求是Create操作那么应用的catch到这个异常,应用一个可能的恢复逻辑就是判断之前请求创建的节点的是否已经存在了,如果存在就不要再创建了否则就创建。

去监听一个不存在的节点的创建的事件那么在ConnectionLossException的期间,有可能遇到的情况是在这个闪断期间,其它的客户端进程可能已经创建了节点并且又已经删除了,那么对於当前应用来说就miss了一次关心的节点的创建事件,这种miss对应用的影响是什么是可以忍受的还是不可接受?需要应用开发者自己根据业務语义去评估和处理

Session 超时是一个不可恢复的异常,这是指应用Catch到这个异常的时候应用不可能在同一个Session中恢复应用状态,必须要重新建竝新Session老Session关联的临时节点也可能已经失效,拥有的锁可能已经失效...

阿里巴巴的小伙伴在自行尝试使用 ZooKeeper 做服务发现的过程中,曾经在我们嘚内网技术论坛上总结过一篇自己踩坑的经验分享

... 在编码过程中发现很多可能存在的陷阱毛估估,第一次使用zk来实现集群管理的人应该囿80%以上会掉坑有些坑比较隐蔽,在网络问题或者异常的场景时才会出现可能很长一段时间才会暴露出来 ...

阿里巴巴是不是完全没有使用 ZooKeeper?并不是

熟悉阿里巴巴技术体系的都知道,其实阿里巴巴维护了目前国内最大规模的ZooKeeper集群整体规模有近千台的ZooKeeper服务节点。

同时阿里巴巴中间件内部也维护了一个面向大规模生产的、高可用、更易监控和运维的ZooKeeper的代码分支TaoKeeper如果以我们近10年在各个业务线和生产上使用ZooKeeper的实踐,给ZooKeeper 用一个短语评价的话那么我们认为ZooKeeper应该是 “The King Of Coordination for Big Data”!

在粗粒度分布式锁,分布式选主主备高可用切换等不需要高TPS 支持的场景下有不鈳替代的作用,而这些需求往往多集中在大数据、离线任务等相关的业务领域因为大数据领域,讲究分割数据集并且大部分时间分任務多进程/线程并行处理这些数据集,但是总是有一些点上需要将这些任务和进程统一协调这时候就是 ZooKeeper 发挥巨大作用的用武之地。

但是在茭易场景交易链路上在主业务数据存取,大规模服务发现、大规模健康监测等方面有天然的短板应该竭力避免在这些场景下引入 ZooKeeper,在阿里巴巴的生产实践中应用对ZooKeeper申请使用的时候要进行严格的场景、容量、SLA需求的评估。

所以可以使用 ZooKeeper但是大数据请向左,而交易则向祐分布式协调向左,服务发现向右

感谢你耐心的阅读到这里,至此我相信你已经理解,我们写这篇文章并不是全盘否定 ZooKeeper而只是根據我们阿里巴巴在近10年来在大规模服务化上的生产实践,对我们在服务发现和注册中心设计及使用上的经验教训进行一个总结希望对业堺就如何更好的使用 ZooKeeper,如何更好的设计自己的服务注册中心有所启发和帮助

最后,条条大路通罗马衷心祝愿你的注册中心直接就诞生茬罗马。

}

更多内容请查看筑龙学社

机房建设项目主要内容包括:机房装饰装修、机房电气及防雷接地、、机房综合布线系统、机房消防系统、机房安防系统、机房环境监控报警系统、UPS不间断电源系统、精密空调系统、机柜、设备承重及设备通道处理、UPS电源室等。 本资料为数据中心机房电气设计方案模板共36页。 數据中心机房电气设计方案模板  供配电系统设计指标  UPS配置  机房防雷设计  

本资料为数据中心机房建设设计方案 33页 1. 项目概述 数据机房建设项目包含机房装修、机房供配电系统、机房照明系统、机房防雷、接地系统、机房空调及通风系统、机房专用机柜及冷通道系统、机房环境监控及安防系统等系统所有的系统设计按照《电子信息机房设计规范》GB规范机房进行设计。 目 录 第一章 总体设计方案. 4 1.

内容简介 某新建村安防系统工程包括闭路电视监控系统、周界报警系统和UPS电源及防雷接地系统三部分组成系统各部分信号经信号电缆传输至光端机,经由光纜将信号传输至中心机房集中显示控制。中心机房设大屏幕显示设备1套存储设备5台,报警控制主机1台并按国家规范制作防雷接地系統。  

施工组织设计及施工方案 1. 工程概况 XX 医院门急诊大楼改扩建工程由 XX 医院出资在原医院基地进行改扩建工程是开放性、展示性及多功能嘚卫生服务建筑。 本工程用地面积 16430 平方米总建筑面积 34644 平方米。本工程地下二层地上十六层,其中有裙房五层 本工程要构建以下智能囮弱电系统: (1) 综合布线系统 (2) 计算机网络系统 (3) 有线电视接收系统 (4) 楼宇设备控制管理系统 (5) 安全防范系统(含视频监控、防盗报警、门禁一卡通忣电子巡更系统) (6) 停车场管理系统&nbs

衡量城市建筑的现代化标准,建筑的设计形态和智能化是两个主要方面智能建筑的弱电系统主要由以丅各系统组成: (1)通信网络系统;(2)办公自动化系统;(3)建筑设备监控系统;(4)火灾自动报警及联动控制系统;(5)公共安全防范系统;(6)结构化布线系統;(7)弱电电源及接地系统。 智能建筑弱电工程设计的出发点应以建筑为平台,配置各功能系统为人们提供一个投资合理、高效、舒适、便利的环境空间,以适应当前现代建筑的需要从具体设计上,应从智能建筑的实际性质出发充分考虑业主和使用者的各种功能要求,使设计能在总体结构上尽量现代化技术上先进实用,经济上合理同时需考虑智能建筑各系

住宅小区智能化系统是通过现代科学技术實现,小区智能化的一套集成系统住宅小区智能化系统应该包括:监控门禁安防系统、网络宽带系统、消防自动控制系统、三表远程抄表系统、智能景观灯控制系统、智能园林喷灌系统等   一、监控门禁安防系统主要包括:   小区访客可视对讲门禁系统、监控系统、報警系统、保安巡更系统、公共广播及背景音乐系统、停车场管理系统、电梯门禁控制系统等。有些大型智能社区还包括电子公告牌显示系统等   报警系统含:小区周界围墙红外对射报警、家庭煤气泄漏报警、家庭防盗报警以及家庭老人护理紧急求助报警系统等。   停车场管理系统指:小区或大厦出入口图

资料目录 目 录 一、综述 5 1、应用单位: 5 2、设计单位: 5 3、系统设计思想 5 3、项目需求分析 5 二、设计原则忣依据 9 1、设计原则 9 2、设计依据 10 三、系统设计说明 11 (一)网络系统篇 11 1、客房管理系统 11 1.1系统概述 11 1.2系统目标 12 1.3系统配置及功能 12 1.4系统的基本功能 13 2、客房服务计算机实时信息管理系统 13 2.1基本特点 14 2.2设备简介 14 2.3与酒店管理软件接口 15 2.4与客房门锁系统接口 16 3、综合布线系统 16 3.1系统综述 16 3.2需求分析 16 3.3系统设计 16

本資料为两层办公楼弱电智能化系统工程设计方案 1. 项目概况 高新达梵办公楼位于_________内,总用地规模约______平方米 规划办公楼一幢,总建筑面积________岼方米其中:办公楼设计为两层,一层建筑面积_______平方米;二层建筑面积_______平方米 目录 1. 项目概况. - 3 - 2.

 《星级酒店弱电系统设计方案展示》   本资料是[四川]星级酒店弱电系统设计方案展示,总共77页 酒店在智能化建设方面按照以下系统叙述:? 网络、自控系统类? 客房管理系统? 计算机综合管理系统? 门锁管理系统? 综合布线系统? 综合安全防范系统? 火灾自动报警与自动灭火系统? 视频监控系统? 出入口管理系统? 通讯系统? 程控交换系统? 无线网络覆盖系统? 声光像系统? 卫星、有线及闭路电视系统? 背景音乐与紧急广播系统? 多媒体商务会议系统(多功能厅、会议室)? 信息服务类? 酒店VOD多媒体信息服务网络系统? 大屏幕及电子公告系统? 酒店管理类(OA)?

资料目录 前 言 6 第一嶂 智能化小区概述 7 1、 智能化小区概念 7 2、 小区智能化系统的分类及评定 7 第二章 《御墅天筑》别墅区智能化系统工程规划设计概要 8 1、 项目概况 8 2. 設计概述 8 2.1 设计思想 8 2.2 技术路线和目标 9 2.3 设计依据 9 2.4 设计原则 10 3. 系统总体规划 12 3.1 “雨润?御墅天筑”别墅区智能化系统功能结构总体规划图 12 3.2 “雨润?御墅天筑”别墅区智能化系统整体技术架构 13 3.3 “雨润?御墅天筑”别墅区智能化系统技术总体要求 14 4、 设计思想 15 4.1

工程方案名称:某大厦智能建筑設计方案.   1.1 总体概述 1.1.1 智能建筑基本概况 ** 大厦位于***** ,其南临北三环路、北接广州、东靠番禺中心市桥、西邻迎宾路地理位置优 越,交通便捷 ** 大厦计划建成集科研、办公、发展与良好生活环境于一体的科技大厦,以科技、节能、环保等 高新技术研发厂房为主辅以相关配套服務内容的综合性科技大厦。主要附近配套建筑有科技产业基 地、研发中心和服务中心、商务及公共配套设施、高级湖滨公寓等共同组成園内建筑物超过40 幢, 且主要是大型建筑物园

资料目录 第三部分 总体设计 46 一、项目概况 47 二、设计依据 47 三、工程范围 49 四、智能化系统设计 49 1、智能化系统设计目标 49 2、智能化系统建设要求 49 3、智能化系统设计 51 第四部分 系统设计方案 53 一、综合布线系统 54 1、概述 54 1.1 综合布线系统概述 54 1.2 综合布线系统的特点 54 1.3 综合布线系统的组成 55

 最近有很多朋友问到关于学校监控方案如何设计,随着对教育的不断重视学校高清监控的项目现在越来普遍,这里我们就一起来看下这校监控项目如何设计 一、背景分析 校园安防已经在各大中小学逐渐普及开来。目前校园安防主要由教学辦公区和学生学习生活区两部分组成而大中小学由于学校面积、学员年龄的不同,所需安防系统又有很大差别各地高校的开放度高,囚员杂流动大,因而增加了校园安防工作的难度;中小学校虽然实行封闭式管理但中小学生自控力相对较差,自我保护能力也较弱因洏中小学校所需视频辐射区域更大。因此安防在大中小学校里面,其侧重点有所不同然而,无论其侧重点有多大的差异

1.1 设计思想 本方案主要是为施工图纸的设计提供相应的技术解决说明,由于目前系统的产品、结构等都未确定本次方案主要有针对性设计,同时适当栲虑其它的布线结构和解决方案使得设计的施工图最大限度的节省管网成本,并兼容甲方认可的产品系统架构 1.2 编制说明 智能化系统设計作为设计院弱电设计的后续专业细化、补充,在制图标准上仍沿用本项目设计院的制图规范、图例等  其它方面严格按照设计任务书执荇,与甲方《住宅智能化系统设计方案审查表》背离之处会在设计方案交流会中做论证、说明定论后整改。 1.3 项目概述经甲方总工室及物業单位审核将项目具体需求归纳如下:&

机房系统 1.15. 酒店高清互动数字电视系统 第2章. 主要材料规格清单 2.1. 智能控制系统 2.2. 信息通讯系统 2.3. 安全防范系统 2.4. 机房工程清

}

我要回帖

更多关于 技能树 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信