http://www.cnblogs.com/cobbliu/archive/2011/11/04/2389009.html 原文有图
通常大型互联网公司都拥有较大规模、结构复杂的服务器集群。随着互联网迅速发展,用户访问量以及服务器规模的越来越大,Web应用项目需要部署在数目众多的服务集群上协同工作,才为用户提供更可靠、稳定、优质的互联网服务。
一般在互联网公司发展初期,服务器以及Web应用程序较少,项目的配置信息都会存放在文件中,比如把一些基本的数据库信息、缓存信息配置在文件中,如***.property文件中,每个项目都有自身单独的一份配置文件。这样的结构如下图所示:
随着互联网的快速发展和用户的访问量越来越大,一个Web应用程序必须部署在几十台应用服务器上才能满足当前需求。此时再将项目的配置信息放入文件中,就会带来众多不便,比如:
1、项目在开发环境、测试环境、正式环境中很多配置信息都不一样,比如数据库配置等。一个项目要维护多个配置信息,以便在项目不同阶段使用。当项目配置越来越多,文件类型的配置则会变得混乱,它缺乏统一管理。
2、一个Web应用项目会部署在多台机器上,每次更新项目任何一个配置,都需要在不同服务器文件上更新很多次,这样容易出错而且麻烦。
3、 当更新项目的配置时,我们必须要将项目服务关闭,然后修改配置文件中的配置信息,并将项目重新发布,这必然造成一段时间内项目不能对外提供服务,一旦出现任何故障,这个一段时间可能更长。将配置信息放入文件中这样的配置方式不能做到配置信息的动态部署以及自动更新。
在这样的情况下,建立集中式的配置系统就变得非常有必要。它的整体的配置架构图如下:
下面讲述如何快速有效搭建大型互联网集群配置系统,它有如下四个重要的点:
1、 配置信息存储:项目配置信息怎么存放,放在那边,怎么保证其安全可靠?因为项目配置关系到项目能否启动以及正常运行。一旦配置系统出问题时,它关系到是整个公司的网站。
2、 请求配置信息:当一个Web应用程序启动时,它如何获取到项目的配置?这里可能会涉及到一些程序之间的通信,比如应用和配置服务器的通信等。简单来说,Web项目启动时需要向集群配置系统发送远程请求,获取项目启动的配置信息。
3、 监听配置信息:当项目某些配置信息修改时,配置系统如何通知到应用这些配置的项目,项目接收到配置修改的通知后,项目会做一些动态修改。如何进行监听配置的动态修改,以及根据配置修改项目能做出配置的动态更新?
4、 统一控制终端:集群配置系统最终要给出一个集中的Web控制终端来管理这些配置,包含配置信息增加、删除、修改、查询、部署等等。
解决了上面的四个问题,您就可以自己搭建了一套集群配置系统。如果有足够的人力资源、技术资源,您可以写一套分布式的存储来解决配置信息的集中式存储。您也可以写一套通信协议、或者在现有的通信协议上做一些封装来解决获取项目配置、以及监听修改配置的问题。最后您可以用PHP或者.Net来写一套配置终端。但当您没有那么多资源和时间时,也许如下的解决方案是个不错的选择,它能帮助你在很短的时间内搭建一套可靠的分布式配置系统。
集群配置系统会应用到一个成熟的分布式服务开源框架—ZooKeeper。它是Apache Hadoop的一个子项目,它主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储。除了数据存储,它还可以用来维护和监控你存储的数据的状态变化。从设计模式角度来看,Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知那些已经注册的观察者做出相应的反应。ZooKeeper典型集群配置应用如下图:
正如上图所示ZooKeeper帮我们解决上面四个问题中的三个。具体如下:ZooKeeper Server可以集中式存放数据,存放于上图的Configuration目录下,它有效解决了配置信息的集中式存储,同时ZooKeeper的工作模式是集群模式,一定程度上解决了配置系统的可靠性、安全性。ZooKeeper在java、ruby、C++都有自己线程的客户端Client。这些客户端负责和ZooKeeper Server进行通信,Client在应用程序启动时候向Server发送请求获取项目的配置信息,同时它还能监听这些配置信息的变化。当配置信息变化时候,项目会根据配置变化有一些自定义的操作,比如数据库重新连接,项目重新启动等等。所以ZooKeeper帮我们解决了第1、2、3个问题。最终我们只需要开发出一套配合集群配置系统运行的统一控制终端就可以了。统一控制终端可以是个B/S的管理类Web应用程序。
下面以Java项目为例,应用ZooKeeper的整个集群配置系统结构图如下:
如上图所示,ZooKeeper集群配置可以参考ZooKeeper开源文档来搭建,ZooKeeper集群由几台Server组成,Server中存放配置数据,集群的工作模式确保了数据的安全可靠。具体Java 应用程序可以通过ZooKeeperClient和ZooKeeper集群进行通信,获取项目的配置信息,同时监控配置变化。控制终端可能是简单的管理界面,在这个终端上管理着所有的项目配置。项目可能包括几个开发环境,因为在不同阶段搭建的配置是不同的。同时控制终端还将这些配置记录在本地数据库,以作备份。用户在控制终端上操作项目具体配置,包括增加、修改、删除等等。
分享到:
相关推荐
假设你需要搭建一个包含大量文档的大规模搜索系统,每天都有成千上万的用户通过不同的终端设备进行搜索。在这种情况下,传统的单机Solr可能无法满足需求,因此需要搭建SolrCloud集群。 1. **硬件准备**:至少准备...
Storm 是一个分布式实时计算系统,用于处理大规模数据流。 **具体步骤如下:** - **步骤1**:将 Storm 安装包拷贝到机器上。 - **步骤2**:解压安装包。 ``` tar -xvf apache-storm-1.0.2.tar.gz ``` - **步骤3...
### 基于ZooKeeper的分布式Session实现 #### 一、ZooKeeper概述 ZooKeeper被形象地比喻为“动物园管理员”,其主要职责在于维护分布式系统中的多个子系统,确保它们能够协同工作,就像动物园管理员管理不同动物...
1. 性能优化:3.4.6版本对性能进行了优化,包括提升客户端的连接速度、降低内存消耗以及减少网络延迟,使得大规模部署下的Zookeeper运行更加稳定和高效。 2. 强化稳定性:修复了多个已知的bug,提高了系统的健壮性和...
《深入理解Zookeeper:从3.4.10版本剖析分布式协调服务》 Apache ZooKeeper,作为一款开源的分布式协调服务,广泛应用于大数据、云计算等...深入了解其工作原理和使用方法,对于构建和维护大规模分布式系统至关重要。
《Zookeeper 3.4.13:分布式协调服务的核心解析》 Zookeeper,作为Apache的一个顶级项目,是分布式系统中的关键组件,尤其在大型分布式...理解和掌握Zookeeper的使用,对于构建和维护大规模分布式系统具有重要意义。
* 可扩展性:Zookeeper 能够水平扩展,能够满足大规模分布式系统的需求。 * 高可用性:Zookeeper 能够提供高可用性服务,能够确保分布式系统中的服务不中断。 Zookeeper 的应用场景 Zookeeper 广泛应用于以下几个...
本文档将详细介绍如何利用 ZooKeeper 实现 ActiveMQ 的 Master-Slave 集群配置,以及具体的部署步骤。 #### 二、ActiveMQ 高可用原理 ##### 2.1 原理概述 在 ActiveMQ 的集群配置中,采用 ZooKeeper 作为集群协调...
《Zookeeper 3.4.8:分布式协调服务的核心与实践》 Zookeeper,作为Apache的一个顶级项目,是分布式系统中的重要组件,尤其在...理解和掌握其工作原理以及配置方法,对于开发和维护大规模分布式系统具有重要意义。
《Zookeeper:分布式协调服务详解...了解并熟练掌握其原理和使用方法,对于构建和维护大规模分布式系统至关重要。无论你是系统架构师、开发人员还是运维工程师,深入理解Zookeeper都将为你在IT领域的发展提供有力支持。
- **性能**:虽然Zookeeper强调一致性,但在性能上也进行了优化,以满足大规模分布式系统的需求。 #### 四、Zookeeper在高可用性中的应用 - **主从方式**:在主从架构中,一个节点(通常是活跃的节点)负责处理...
《Zookeeper 3.4.6 PDF 文档...通过学习这些内容,你可以深入了解 Zookeeper 如何在分布式系统中实现高可用性和一致性,以及如何与其他组件(如 BookKeeper)协同工作,这对于构建和优化大规模分布式应用是非常有益的。
Apache ZooKeeper是一个分布式...总的来说,Apache ZooKeeper是构建大规模分布式系统的关键工具,通过提供一致性服务,简化了分布式环境下的许多复杂问题。正确理解和使用Zookeeper能有效提高系统的可靠性和可维护性。
在实际部署中,Zookeeper的应用需要综合考虑多个因素,包括集群规模、网络延迟、硬件资源等。为了确保Zookeeper能够高效稳定地运行,开发者需要仔细规划其配置参数,包括但不限于: - **日志存储路径**:选择合适的...
在分布式计算领域,Zookeeper广泛应用于Hadoop、HBase、Kafka等项目,作为它们的基石,确保了大规模分布式系统的稳定运行。 10. **未来展望** 随着微服务和云原生架构的普及,Zookeeper将继续在分布式协调领域...