在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节.那么什么是leader选举呢?zookeeper为什么需要leader选举呢?zookeeper的leader选举的过程又是什么样子的?本文的目的就是解决这三个问题. 首先我们来看看什么是leader选举.其实这个很好理解,leader选举就像总统选举一样,每人一票,获得多数票的人就当选为总统了.在zookeeper集群中也是一样,每个节点都会投票,如…
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本文只关注分布式模式的zookeeper,因为这也是在生产环境的唯一部署方式,单机的zookeeper可以在测试和开发环境使用,但是单机环境的zookeeper就不再是zookeeper了.安装配置很简单,官网也有介绍,这里就只对后面的文章有提到的点说明下. 配置-zoo.cfg 这是zookeepe…
Zookeeper主要可以干哪些事情 配置管理,名字服务,提供分布式同步以及集群管理.那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势? 配置管理 在我们的应用中除了代码外,还有一些就是各种配置.比如数据库连接等.一般我们都是使用配置文件的方式,在代码中引入这些配置文件.但是当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法,但是如果我们配置非常多,有很多服务器都需要这个配置,而…
在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时的位置. Zookeeper的启动入口在org.apache.zookeeper.server.quorum.QuorumPeerMain. 在这个类的main方法里进入了zookeeper的启动过程,首先我们会解析配置文件,即zoo.cfg和myid. 这样我们就知道了dataDir和dataLo…
Zookeeper的client是通过Zookeeper类提供的.前面曾经说过,Zookeeper给使用者提供的是一个类似操作系统的文件结构,只不过这个结构是分布式的.可以理解为一个分布式的文件系统.我们可以通过Zookeeper来访问这个分布式的文件系统. Zookeeper的client api给我们提供以下这些API: 1. create 在给定的path上创建节点,这个path就像文件系统的路径,比如/myapp/data/1,在创建节点的时候还可以指定节点的类型:是永久节点,永久顺序节…
什么是zookeeper zookeeper是分布式协调服务,可以在分布式系统中共享配置.协调锁资源.提供命名服务那分布式协调服务又是个什么东西呢?首先我们来看“协调”是什么意思.在一个并发的环境里,我们为了避免多个运行单元对共享数据同时进行修改,造成数据损坏的情况出现,我们就必须依赖像锁这样的协调机制,让有的线程可以先操作这些资源,然后其他线程等待. 为什么要用zookeeper? 在进程内进行协调我们可以使用语言,平台,操作系统等为我们提供的机制.那么如果我们在一个分布式环境中呢?也就是我们…
接上一讲对mina的简单应用和对mina服务端和客户端中几个重要的技术知识点的理解后,今天着重对mina服务端的NioSocketAcceptor 进行学习. 说这个玩意之前,先整体上看一下在mina框架中NioSocketAcceptor和NioSocketConnector 这两个玩意的整体代码结构: 从上面的代码结构我做如下的解释: 服务端通过创建一个NioSocketAcceptor来接受请求,客户端通过创建NioSocketConnector来连接服务端并发送请求. IoService…
    上一篇写了一下rpc调用过程的实现方式,简单来说就是服务端把实现了接口的结构体对象进行反射,抽取方法,签名,保存,客户端调用的时候go-micro封请求数据,服务端接收到请求时,找到需要调用调用的对象和对应的方法,利用反射进行调用,返回数据. 但是没有说stream的实现方式,感觉单独写一篇帖子来说这个更好一些.上一篇帖子是基础,理解了上一篇,stream实现原理一点即破.先说一下使用方式,再说原理. 当前go-micro对 rpc 调用的方式大概如下: 普通的rpc调用 是这样: 1.…
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. so…
1.打开VS2012,新建一个windows窗体程序,选择.NET4.0版本 2.添加引用 SuperSocket的dll文件( SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此项目的引用 (版本选4.0) SuperWebSocket.dll   到此项目的引用 添加 系统:System.Configuration; System.Configuration.Install;…