zookeeper在dubbo到底起了什么作用,dubno如何解决了阿里的高并发问题?
2017-10-25 10:50
603 查看
分布式系统是一个由很多进程组成的整体,这个整体中每个成员部分,都会具备一些状态,比如自己的负责模块,自己的负载情况,对某些数据的掌握等等。而这些和其他进程相关的数据,在故障恢复、扩容缩容的时候变得非常重要。
Zookeeper 是java方向一个非常可靠好用的分布式服务,dubbo或者kafka只不过是利用了这个项目,没有自己再重新造轮子而已。
-------------------------------------------------------------------------------------------------------------------------------------------
简单的分布式系统,可以通过静态的配置文件,来记录这些数据:进程之间的连接对应关系,他们的IP地址和端口,等等。然而一个自动化程度高的分布式系统,必然要求这些状态数据都是动态保存的。这样才能让程序自己去做容灾和负载均衡的工作。
一些程序员会专门自己编写一个DIR服务(目录服务),来记录集群中进程的运行状态。集群中进程会和这个DIR服务产生自动关联,这样在容灾、扩容、负载均衡的时候,就可以自动根据这些DIR服务里的数据,来调整请求的发送目地,从而达到绕开故障机器、或连接到新的服务器的操作。
然而,如果我们只是用一个进程来充当这个工作。那么这个进程就成为了这个集群的“单点”——意思就是,如果这个进程故障了,那么整个集群可能都无法运行的。所以存放集群状态的目录服务,也需要是分布式的。幸好我们有ZooKeeper这个优秀的开源软件,它正是一个分布式的目录服务区。
ZooKeeper可以简单启动奇数个进程,来形成一个小的目录服务集群。这个集群会提供给所有其他进程,进行读写其巨大的“配置树”的能力。这些数据不仅仅会存放在一个ZooKeeper进程中,而是会根据一套非常安全的算法,让多个进程来承载。这让ZooKeeper成为一个优秀的分布式数据保存系统。
由于ZooKeeper的数据存储结构,是一个类似文件目录的树状系统,所以我们常常会利用它的功能,把每个进程都绑定到其中一个“分枝”上,然后通过检查这些“分支”,来进行服务器请求的转发,就能简单的解决请求路由(由谁去做)的问题。另外还可以在这些“分支”上标记进程的负载的状态,这样负载均衡也很容易做了。
目录服务是分布式系统中最关键的组件之一。而ZooKeeper是一个很好的开源软件,正好是用来完成这个任务。
Zookeeper 是java方向一个非常可靠好用的分布式服务,dubbo或者kafka只不过是利用了这个项目,没有自己再重新造轮子而已。
-------------------------------------------------------------------------------------------------------------------------------------------
简单的分布式系统,可以通过静态的配置文件,来记录这些数据:进程之间的连接对应关系,他们的IP地址和端口,等等。然而一个自动化程度高的分布式系统,必然要求这些状态数据都是动态保存的。这样才能让程序自己去做容灾和负载均衡的工作。
一些程序员会专门自己编写一个DIR服务(目录服务),来记录集群中进程的运行状态。集群中进程会和这个DIR服务产生自动关联,这样在容灾、扩容、负载均衡的时候,就可以自动根据这些DIR服务里的数据,来调整请求的发送目地,从而达到绕开故障机器、或连接到新的服务器的操作。
然而,如果我们只是用一个进程来充当这个工作。那么这个进程就成为了这个集群的“单点”——意思就是,如果这个进程故障了,那么整个集群可能都无法运行的。所以存放集群状态的目录服务,也需要是分布式的。幸好我们有ZooKeeper这个优秀的开源软件,它正是一个分布式的目录服务区。
ZooKeeper可以简单启动奇数个进程,来形成一个小的目录服务集群。这个集群会提供给所有其他进程,进行读写其巨大的“配置树”的能力。这些数据不仅仅会存放在一个ZooKeeper进程中,而是会根据一套非常安全的算法,让多个进程来承载。这让ZooKeeper成为一个优秀的分布式数据保存系统。
由于ZooKeeper的数据存储结构,是一个类似文件目录的树状系统,所以我们常常会利用它的功能,把每个进程都绑定到其中一个“分枝”上,然后通过检查这些“分支”,来进行服务器请求的转发,就能简单的解决请求路由(由谁去做)的问题。另外还可以在这些“分支”上标记进程的负载的状态,这样负载均衡也很容易做了。
目录服务是分布式系统中最关键的组件之一。而ZooKeeper是一个很好的开源软件,正好是用来完成这个任务。
相关文章推荐
- 什么是高并发?与多线程有什么区别?你的项目有高并发问题吗?是如何解决的?
- zookeeper在dubbo到底起了什么作用
- 互联网到底能为我们解决什么问题?
- 让作者告诉你DirectX修复工具到底能解决什么问题
- 黑马程序员之ASP.NET学习笔记:AJAX解决什么问题?如何使用AJAX?
- ajax是什么? ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?
- PHP如何解决网站大流量与高并发的问题
- linux下不能解决的问题到底有什么?
- PHP网站如何解决大流量与高并发的问题
- jQuery实例化的优势,为什么要有实例化,到底实例化后在解决什么问题?
- 我帮使用者解决了什么问题?我到底帮使用者解决了什么问题?
- 如何解决网站的高流量,高并发问题
- 访问数据库时如何解决并发问题
- PHP如何解决网站大流量与高并发的问题
- 【CC攻击是什么?linux下该如何解决这个问题】
- [ChneChen的随笔][管理之道]什么才是我们需要的解决问题的方法(从如何限制公司电脑使用U盘解决之道谈起)
- 如何解决Win7下ADSL自动断线的问题方法是什么
- PHP网站如何解决网站大流量、高并发的问题
- PHP如何解决网站大流量与高并发的问题
- PHP网站如何解决大流量与高并发的问题