
编者注: Zookeeper作为Hadoop的一个子项目,在大多数情况下都可与Hadoop一起使用,但是Zookeeper具有更广泛的应用场景. Zookeeper是GoogleChubby的开源实现,主要用于解决分布式集群中应用系统的一致性问题. 它可以提供类似于文件系统的基于目录节点树方法的数据存储,维护和监视数据的状态变化,并实现数据的集群管理. 本文转载自夏军的博客. 作者从远程呼叫服务的体系结构了解Zookeeper. 相信阅读本文后,我将对Zookeeper有了新的了解. 以下是文章的内容:
远程调用是系统或进程之间的通信机制,是分布式系统开发的核心技术. 远程呼叫技术可以将一组计算机系统组成一个网络系统,并向外界提供整体服务. 然后,这组计算机系统构成了一个更大,性能更高的计算机系统.
首先,我们必须深入理解以下问题: 为什么在应用软件服务中需要远程呼叫服务?远程呼叫服务可以解决软件设计中的哪些问题?
我曾经写过一篇有关分布式网站体系结构设计的文章. 在本文的开头,我将这种新的网站体系结构解决方案与传统的企业软件B / S体系结构进行了比较. 作者将在网站上提供业务. 服务组件抽象为一个独立的服务系统,而接收用户信息的逻辑部分则抽象为一个前端系统. 服务系统和前端系统使用诸如netty之类的通信组件进行通信. 在解释远程呼叫服务的框架设计时,网络通信组件进一步抽象为独立于通信的系统和远程呼叫服务. 这就是设计远程呼叫服务的原因. 远程呼叫服务将带来网站架构的升级. 如果传统的企业B / S体系结构是1.0版,并且前端和业务服务器是独立的系统,则是2.0版,那么远程呼叫服务网站的引入是3.0版,并且从中获得的收益3.0版的体系结构是,由于集成了不止N个前端系统和不止N个业务服务端系统,网站的规模将越来越大,并且将提供越来越多的服务. 这不仅避免了重复轮的问题,而且使网站规模更大. 变大.

3.0版网站体系结构的常规版本
使用远程呼叫服务,我们可以实融业务. 按照传统思想远程调用框架,我们将为每个业务独立开发一个系统. 如果引用了远程呼叫服务,我们可以将这些服务变成独立的服务. 这些服务形成一个业务集群,并且这些服务使用统一的远程呼叫服务作为操作的入口,因此前端呼叫者的应用程序可以统一. 所谓的统一淘宝网站是应用程序的最典型代表. 我们可以在同一网站上运行各种不同的应用程序,并且不会发生. 由于应用程序不同,我们必须重新访问新地址或登录另一个地址. 在系统中执行其他业务操作. 在服务器端,它可以完全摆脱客户端和服务器之间耦合的传统发展,从而增强了整个服务器的性和稳定性. 这样可以更轻松地扩展和维护服务器. 如果服务器还需要相互调用,也可以通过远程调用服务来实现. 由于远程调用服务的统一性,这避免了服务调用之间消息和调用方法的不一致,并调节了整个开发过程. 如果远程呼叫服务还具有负载均衡功能,则整个服务集群都将成为私有云,因此毫不夸张地说远程呼叫服务是云计算的重要组成部分.

远程调用框架
传统服务呼叫是服务提供商和服务呼叫者的直接呼叫. 从体系中,我们看到还有一个附加的远程呼叫管理组件. 远程呼叫管理组件是一个独立的服务系统. 为了确保系统的稳定性,它还必须是分布式系统,但是此分布式系统与Web的分布式系统是完全不同的分布式系统. 传统的Web应用程序集群是基于HTTP协议的无状态特性设计的. 因为每个HTTP请求都是一个独立的事务,所以不同的请求之间没有关系,因此我们可以将Web应用程序部署到不同的服务器上. 无论请求到达哪个服务器,它都可以正常地为用户提供相应的服务,但是Web应用程序的会话机制是有状态的,因此传统的Web集群都需要会话同步操作,并且大型网站通常会抽象化会话功能. 它是一个独立的缓存系统,但是远程呼叫管理组件的群集原理或分布式原理与Web应用程序群集的分布式原理不同. 远程呼叫管理组件可以用作注册中心,它将记录服务提供商和服务呼叫者的相关信息,并将此信息推送给服务提供商或服务呼叫者. 为了确保系统的效率,这些注册信息都被记录在存储器中. 让我们考虑一下. 如果这些注册信息丢失,则整个系统将不可用. 因此,远程呼叫管理组件集群是一个保证数据可靠性和服务提供健壮性的集群,而不是基于HTTP无状态功能的集群. 集群.

我们在这里假设一个集群运行的远程呼叫服务场景. 如果我们有5台服务器作为运行远程呼叫服务的服务器,则每台服务器必须具有冗余的注册信息备份. 服务运行时,其中之一. 如果服务器发生故障,则发生故障的服务器上的数据将不会丢失. 此外,群集还应具有检查故障的机制. 当发现服务器不可用时,可以及时将其删除,Zookeeper可以解决此问题. 问题的技术框架. 除了确保系统的稳定性和可用性之外,集群的数据存储方法也非常重要. 前面我提到过,集群的数据存储必须具有冗余机制. 除了冗余机制外,还有一种非常适合快速访问和读取的方式. 编写数据模型,然后Zookeeper仅包含此数据模型,因此我设计的远程呼叫服务是非常适合Zookeeper应用程序的场景.
远程呼叫管理组件还具有心跳机制. 心跳机制的功能是检测服务提供者的健康状况以及服务提供者是否可用. 服务提供商启动时,会将其注册信息发送到远程呼叫管理组件. 该注册信息包含服务器的IP地址和端口号. 远程呼叫管理组件将根据ping与此IP地址和端口号对应的应用程序是否可用的时间来启动线程来ping IP地址和端口号. 如果远程呼叫管理不可用,则该组件将反复尝试几次. 此数字以及检测到心跳的频率是可配置的. 如果多次失败,则认为该服务不可用. 一些网民在QQ上问我为什么不检测服务呼叫者的心跳,这完全没有必要,呼叫者是主动方,提供者是被动方,就像您访问网站一样,如果您生病了,不要访问,无需系统检查您是否生病.
编者注: 作为Hadoop的子项目,Zookeeper主要与Hadoop一起使用,但是Zookeeper也具有更广泛的应用场景. Zookeeper是GoogleChubby的开源实现,主要用于解决分布式集群中应用系统的一致性问题. 它可以基于类似于文件系统的目录节点树方法提供数据存储,基于数据的群集管理来维护和监视数据的状态更改. 本文转载自夏军的博客. 作者从远程呼叫服务的体系结构了解Zookeeper. 相信阅读本文后,我将对Zookeeper有了新的了解. 以下是文章的内容:
远程调用是系统或进程之间的通信机制,是分布式系统开发的核心技术. 远程呼叫技术可以将一组计算机系统组成一个网络系统,并向外界提供整体服务. 然后,这组计算机系统构成了一个更大,性能更高的计算机系统.
首先,我们必须深入理解以下问题: 为什么在应用软件服务中需要远程呼叫服务?远程呼叫服务可以解决软件设计中的哪些问题?
我曾经写过一篇有关分布式网站体系结构设计的文章. 在本文的开头,我将这种新的网站体系结构解决方案与传统的企业软件B / S体系结构进行了比较. 作者将在网站上提供业务. 服务组件抽象为一个独立的服务系统,而接收用户信息的逻辑部分则抽象为一个前端系统. 服务系统和前端系统使用诸如netty之类的通信组件进行通信. 在解释远程呼叫服务的框架设计时,网络通信组件进一步抽象为独立于通信的系统和远程呼叫服务. 这就是设计远程呼叫服务的原因. 远程呼叫服务将带来网站架构的升级. 如果传统的企业B / S体系结构是1.0版,并且前端和业务服务器是独立的系统,则是2.0版,那么远程呼叫服务网站的引入是3.0版,并且从中获得的收益3.0版的体系结构是,由于集成了不止N个前端系统和不止N个业务服务端系统,网站的规模将越来越大,并且将提供越来越多的服务. 这不仅避免了重复轮的问题,而且使网站规模更大. 变大.

3.0版网站体系结构的常规版本
使用远程呼叫服务,我们可以实融业务. 按照传统思想,我们将为每个业务独立开发一个系统. 如果引用了远程呼叫服务,我们可以将这些服务变成独立的服务. 这些服务形成一个业务集群,并且这些服务使用统一的远程呼叫服务作为操作的入口,因此前端呼叫者的应用程序可以统一. 所谓的统一淘宝网站是应用程序的最典型代表. 我们可以在同一网站上运行各种不同的应用程序,并且不会发生. 由于应用程序不同,我们必须重新访问新地址或登录另一个地址. 在系统中执行其他业务操作. 在服务器端,它可以完全摆脱客户端和服务器之间耦合的传统发展,从而增强了整个服务器的性和稳定性. 这样可以更轻松地扩展和维护服务器. 如果服务器还需要相互调用,也可以通过远程调用服务来实现. 由于远程调用服务的统一性,这避免了服务调用之间消息和调用方法的不一致,并调节了整个开发过程. 如果远程呼叫服务还具有负载均衡功能,则整个服务集群都将成为私有云,因此毫不夸张地说远程呼叫服务是云计算的重要组成部分.


远程调用框架
传统服务呼叫是服务提供商和服务呼叫者的直接呼叫. 从体系中,我们看到还有一个附加的远程呼叫管理组件. 远程呼叫管理组件是一个独立的服务系统. 为了确保系统的稳定性,它还必须是分布式系统,但是此分布式系统与Web的分布式系统是完全不同的分布式系统. 传统的Web应用程序集群是基于HTTP协议的无状态特性设计的. 因为每个HTTP请求都是一个独立的事务,所以不同的请求之间没有关系,因此我们可以将Web应用程序部署到不同的服务器上. 无论请求到达哪个服务器,它都可以正常地为用户提供相应的服务,但是Web应用程序的会话机制是有状态的,因此传统的Web集群都需要会话同步操作,并且大型网站通常会抽象化会话功能. 它是一个独立的缓存系统,但是远程呼叫管理组件的群集原理或分布式原理与Web应用程序群集的分布式原理不同. 远程呼叫管理组件可以用作注册中心,它将记录服务提供商和服务呼叫者的相关信息,并将此信息推送给服务提供商或服务呼叫者. 为了确保系统的效率,这些注册信息都被记录在存储器中. 让我们考虑一下. 如果这些注册信息丢失,则整个系统将不可用. 因此,远程呼叫管理组件集群是一个保证数据可靠性和服务提供健壮性的集群,而不是基于HTTP无状态功能的集群. 集群.
我们在这里假设一个集群运行的远程呼叫服务场景. 如果我们有5台服务器作为运行远程呼叫服务的服务器,则每台服务器必须具有冗余的注册信息备份. 服务运行时,其中之一. 如果服务器发生故障,则发生故障的服务器上的数据将不会丢失. 此外,群集还应具有检查故障的机制. 当发现服务器不可用时,可以及时将其删除,Zookeeper可以解决此问题. 问题的技术框架. 除了确保系统的稳定性和可用性之外,集群的数据存储方法也非常重要. 前面我提到过,集群的数据存储必须具有冗余机制. 除了冗余机制外,还有一种非常适合快速访问和读取的方式. 编写数据模型,然后Zookeeper仅包含此数据模型,因此我设计的远程呼叫服务是非常适合Zookeeper应用程序的场景.
远程呼叫管理组件还具有心跳机制. 心跳机制的功能是检测服务提供者的健康状况以及服务提供者是否可用. 服务提供商启动时,会将其注册信息发送到远程呼叫管理组件. 该注册信息包含服务器的IP地址和端口号. 远程呼叫管理组件将根据ping与此IP地址和端口号对应的应用程序是否可用的时间来启动线程来ping IP地址和端口号. 如果远程呼叫管理不可用,则该组件将反复尝试几次. 此数字以及检测到心跳的频率是可配置的. 如果多次失败,则认为该服务不可用. 一些网民在QQ上问我为什么不检测服务呼叫者的心跳,这完全没有必要,呼叫者是主动方,提供者是被动方,就像您访问网站一样,如果您生病了,不要访问,无需系统检查您是否生病.
在远程呼叫服务中,在远程呼叫管理组件中使用Zookeeper,并且服务调用者是Zookeeper的客户端. 远程呼叫管理组件也是远程呼叫服务的核心. 如果远程呼叫管理组件在其中如果运行时挂起,则整个应用程序将不可用,因此远程呼叫管理组件必须可靠. 可靠性要求甚至高于服务提供商和服务呼叫者的可靠性水平. 因此,远程呼叫管理组件的设计必须是分布式的,并且必须可靠且分布式.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-186411-1.html
巴菲特呢
我想这样就好了
我的9