Zookeeper 的使命 - 利用Zookeeper构建分布式系统

优质
小牛编辑
112浏览
2023-12-01

分离协同组件有个很多重要的优势。第一,它允许组件被独立的设计和实现。比如一个独立的组件能多个应用共享。第二,它使得一个系统架构师在协同部分的论证更加简单,当然这不是重点(至少在本书不是)。最后,它能使得一个系统能够将允许和管理协同组件分开。分开运行一个这样的组件能够简化产品中解决问题的任务。

软件组件运行在操作系统的进程中,大部分情况下是以多线程执行的。因此,Zookeeper服务器和客户端都是经常。通常,单个物理服务器(无论是单个机器还是在虚拟环境中的操作系统)运行着单个应用进程,虽然进程可能执行多线程来发掘现代处理器的多核能力。

在现实的系统中,需要十分注意一下几个问题:

消息随时都会发生延迟;比如,由于网络拥塞的原因。这样随时都会发生延迟的情况会导致不可预期的结果。比如,根据时钟来说,进程P可能在另外一进程Q发送消息请发送一条消息,但是进程Q的消息可能会先传递。

系统中使用时间的概念并不少见,比如决定什么时间在系统中发生什么事件。处理时时钟是不可靠的,和其他的处理器相比它们能随意的发生漂移。自然而然的,依赖于处理器时钟可能导致不正确的决定。

这些问题中一个重要推论的就是非常难判断一个进程实际上是否已经奔溃还是其中任意一个因素引入了延迟。没有从一个进程中接受到信息可能因为这它已经奔溃了,可能是网络任意的延迟了最后一条消息,可能是其他的什么事情引起了延迟,或者处理时钟发什么漂移。这样无法区分原因的系统被称之为异步的。

Zookeeper被精巧的设计成能更加简单的处理这些问题。Zookeeper不会使得问题消失或者把它们完全对应用屏蔽,但是它能使得问题变得更加的易于处理。Zookeeper实现了对分布式计算问题的解决方案,并把这些实现以一种更加直观的方式打包起来开放给开发者,至少,这是我们一直希望的。