从专业角度看看数据可视化
在Go框架下使用Etcd选主demo
在Go语言里,etcd的clientv3.concurrency包开放了选举方法concurrency.NewElection,可以直接调用。我把选举过程打印出来看,发现其内部逻辑和常规的ZK选主一样。
首先开启一个会话,调用election.Campaign时,在指定目录下创建一个有序id用于排队,并判断自己的id是不是最小值。如果是最小值则成为Leader。会话设置了一个TTL值,如果在TTL的时间内重新建立会话并election.Campaign,则重置TTL计时,给Leader Buff续命。超过TTL则Leader Buff消失。
如果自己的id不是最小值,election.Campaign会阻塞形成排队状态,此时的状态是Follower。election会watch队伍中前一个候选人的id,当它消失时则自己成为最小值,当选Leader并退出排队。如果在会话TTL的时间里重新建立会话并election.Campaign,则重置TTL计时,给Follower排队位置Buff续命。如果超过TTL,election.Campaign内部有个waitDelete方法会清除无效的排队信息,退出排队,给别人让出机会。再次election.Campaign需重新排队。
go select与channel操作
select和switch类似,不同的是case内容必须是接收io执行结果(例如<-channel),且不需要break。
具体执行逻辑如下:
- 如果除default之外,只有一个case满足,则执行case内容
- 如果除default之外有多个case满足,则伪随机执行一个case内容
- 如果default之外的case都不满足,则执行default内容
- 如果没有default,所有case都不满足,则阻塞直到有一个case条件满足
Docker配置http代理
编辑配置文件,Ubuntu下是/etc/default/docker,CentOS下是/etc/sysconfig/docker。不过通过修改这两个文件来配置daemon已经是discouraged的了。不鼓励使用这种方法。
HTTP_PROXY=”http://127.0.0.1:1080/"
HTTPS_PROXY=”https://127.0.0.1:1080/"
export HTTP_PROXY HTTPS_PROXY
参考资料
版权声明:本文为CSDN博主「styshoo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/styshoo/article/details/55657714
安装libsodium库支持chacha20
系统默认是没有 chacha20 加密方式的,需要手动编译 libsodium 1.0.8 及以上版本。安装需要以root权限安装