设为首页 加入收藏

TOP

CentOS环境安装zookeeper服务并用golang实现分布式系统的Leader选举(三)
2017-09-30 13:32:45 】 浏览:7814
Tags:CentOS 环境 安装 zookeeper 服务 并用 golang 实现 分布式 系统 Leader 选举
for { select { case isMaster = <-isMasterChan: if isMaster { // do some job on master fmt.Println("do some job on master") } } } }

 

其中,main函数的ip改写成上面查到的虚拟机ip。

在Xshell5中输入:

ls /

我们可以看到目前根目录下只有一个zookeeper。

要使用golang程序成功调用zookeeper,还需要关掉我们CentOS系统下的防火墙。

在Xshell5中输入:

systemctl | grep fire

可以看到防火墙正在运行。

我们先停止防火墙:

stop firewalld

然后禁用防火墙:

disable firewalld

保存修改:

iptables-save

 

成功关掉防火墙之后,运行上述go程序,我们可以看到第一个进程成功成为了leader:

GOROOT=C:\Go
GOPATH=D:/golang
C:\Go\bin\go.exe build -i -o C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_rungo D:/golang/src/leader/main.go
"C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.5\bin\runnerw.exe" C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_rungo
connect to zookeeper server success!
2017/07/27 21:02:38 Connected to 192.168.40.129:2181
2017/07/27 21:02:38 Authenticated: id=72057981844586499, timeout=4000
2017/07/27 21:02:38 Re-submitting `0` credentials after reconnect
elect master success!
do some job on master
watch children result,  [] &{9 9 1501160558009 1501160558009 0 0 0 72057981844586499 0 0 9}

  

不要关闭这个程序,再执行一个此go程序,我们可以看到,因为有第一个进程已经成为了leader,第二个进程只能等待:

GOROOT=C:\Go
GOPATH=D:/golang
C:\Go\bin\go.exe build -i -o C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_run1go D:/golang/src/leader/main.go
"C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.5\bin\runnerw.exe" C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_run1go
connect to zookeeper server success!
2017/07/27 21:05:29 Connected to 192.168.40.129:2181
2017/07/27 21:05:29 Authenticated: id=72057981844586500, timeout=4000
2017/07/27 21:05:29 Re-submitting `0` credentials after reconnect
elect master failure, %!(EXTRA *errors.errorString=zk: node already exists)watch children result,  [] &{9 9 1501160558009 1501160558009 0 0 0 72057981844586499 0 0 9}

  

此时我们关闭第一个进程,可以看到第二个进程的变化:

GOROOT=C:\Go
GOPATH=D:/golang
C:\Go\bin\go.exe build -i -o C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_run1go D:/golang/src/leader/main.go
"C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.5\bin\runnerw.exe" C:\Users\renjiashuo\AppData\Local\Temp\Build_main_go_and_run1go
connect to zookeeper server success!
2017/07/27 21:05:29 Connected to 192.168.40.129:2181
2017/07/27 21:05:29 Authenticated: id=72057981844586500, timeout=4000
2017/07/27 21:05:29 Re-submitting `0` credentials after reconnect
elect master failure, %!(EXTRA *errors.errorString=zk: node already exists)watch children result,  [] &{9 9 1501160558009 1501160558009 0 0 0 72057981844586499 0 0 9}
receive znode delete event,  {EventNodeDeleted Unknown /ElectMasterDemo/master <nil> }
start elect new master ...
connect to zookeeper server success!
2017/07/27 21:06:28 Connected to 192.168.40.129:2181
2017/07/27 21:06:28 Authenticated: id=72057981844586501, timeout=4000
2017/07/27 21:06:28 Re-submitting `0` credentials after reconnect
elect master success!
do some job on master
watch children result,  [] &{14 14 1501160787685 1501160787685 0 0 0 72057981844586501 0 0 14}

  

第二个进程成功成为了leader。

程序代码的注释比较详细,这里不做详解,所有调用的api接口都可以进入查看其go源码。

自此,CentOS环境安装zookeeper服务并用golang实现分布式系统的Leader选举实现完毕。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Go语言学习笔记(四)结构体struc.. 下一篇Go语言学习笔记(五)文件操作

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目