分布式基础通信协议:paxos,totem和gossip

  categories:资料  author:

在分布式中,最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题,涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。

简单即有效——totem协议:

totem协议也许你还比较陌生,但是corosync就是totem协议的一个开源实现。比较火的HA软件pacemaker就是基于corosync来提供各种服务的。说起totem协议,最简单的形象就是,他将多个节点组成一个令牌环。多个节点手拉手形成一个圈,大家依次的传递token。只有获取到token的节点才有发送消息的权利。简单有效的解决了在分布式系统中各个节点的同步问题,因为只有一个节点会在一个时刻发送消息,不会出现冲突。当然,如果有节点发生意外时,令牌环就会断掉,此时大家不能够通信,而是重新组建出一个新的令牌环。

进化的二段提交——paxos协议:

说起paxos,需要稍微提提二段提交。简单来说,二阶段提交就是1.一个节点询问其他节点,我是不是可以进行消息提交。2.如果收到所有人的同意,则告诉大家,开始提交吧。这个协议在实际中并不能很好的解决分布式中信息同步问题。例如只要有节点失效,就会发生得不到所有人同意的结果,在超时后,这一次提交失败,等一系列问题。但是paxos在对二段提交进行了优化后,得到了一个比较好的解决办法。
paxos协议引入了多数派,以及消息编号的概念。在1准备时,询问2/n+1的参与者,要求他们保证不会接受小于编号n的提交。
2.如果得到了2/n+1的回复,则可以开始告诉2/n+1的参与者进行消息的提交。
可以明显的看出,这就是对二段提交的一个优化版。就是这么一个比较巧妙的思想,解决了一些二阶段提交带来的问题。
顺便说一句,这个协议的作者Leslie Lamport。他刚刚获得2013年图灵奖。

奇思妙想——gossip协议:

gossip协议是一个神奇的协议。它常用于P2P的通信协议,这个协议就是模拟人类中传播谣言的行为而来。简单的描述下这个协议,首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表,以及需要传播的消息。任何新加入的节点,就在这种传播方式下很快地被全网所知道。这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点,但是随着时间的增长,在最终的某一时刻,全网会得到相同的信息。当然这个时刻可能仅仅存在于理论,永远不可达。

基础协议的对比:

简单的介绍了这几种协议,下面我们来看看他们的对比:
基础协议paxostotemgossip
数据同步第一阶段:
proposer 选择一个提案编号 n 并将 prepare 请求发送给acceptors 中的一个多数派;acceptor 收到 prepare 消息后,如果提案的编号大于它已经回复的所有 prepare 消息,则 acceptor 将自己上次的批准回复给 proposer并承诺不再批准小于 n 的提案。
第二阶段:
当一个 proposor
阅读全文

Apache Log4j 2.0值得升级吗

  categories:资料  author:
Apache软件基金会最近发布了Log4j 2.0通用版本,相比之前Log4j的1.x版本有了很大的性能提升。本版本的灵感来自于诸如Log4j 1.x和java.util.logging之类的已有日志解决方案,它是经过了数年的努力从头开始编写完成的。

Log4j 2.0引入了新的插件系统、对properties的支持、对基于 JSON配置的支持和配置的自动化重载。它支持很多已有的日志框架,包括SLF4J、Commons Logging、Apache Flum、Log4j 1.x,并提供了新的程序员API。

Apache Logging PMC成员Christian Grobmeier 在2012年12月率先报道了新的Log4j 2.0。他是这样描述流行的API的:

在以前,大家是这么写的:

if (logger.isDebugEnabled()) {
logger.debug("Hi, " + u.getA() + " " + u.getB()); 
}

log4j 2.0的团队对这种写法进行了思考和改进。现在你可以这么写了:

logger.debug("Hi, {} {}", u.getA(), u.getB());

Grobmeier接着阐述了API方面更多的改进,包括Markers和Flow Tracing。他还提到了插件架构的改进,配置的增强(使用热重载、JSON和properties),还有Log4j 2.0如何处理了Log4j 1.x的许多死锁问题。

阅读全文

mBlock教程

  categories:资料  author:
 简介
Scratch是一款由麻省理工学院(MIT)设计开发的一款面向少年的简易编程工具。它不仅易于孩子们使用,又能寓教于乐,让孩子们获得创作中的乐趣。 Scratch的下载和使用是完全免费的。

mBlock由深圳市创客工场科技有限公司基于开源Scaratch2.0软件研发出来。为了提高同学们的编程兴趣以及更加广泛地学习电子知识,mBlock在这基础上添加了电子模块指令,将学生从电脑的虚拟世界带到了现实的物理世界。极大的扩展了学生的编程领域。



1、最新版本的mBlock,哪里可以下载?答:http://www.mblock.cc/index.php?c=index&a=download


2、刚接触mBlock ,有什么入门教程吗?


答:优酷视频上搜索mBlock,使用教程持续更新中,敬请关注….


http://www.soku.com/search_video/q_mBlock?f=1&kb=040200000000000__mBlock&_rp=14421613246850vFME9&_rp=14421613246850vFME9

下面介绍怎么操作mBlock来控制电子模块。

● USB连接步骤
第一步:安装并打开mBlock软件。
                                                              软件主界面

第二步:主控板接上USB,选择板型和串口,以Orion为例子。
                                                                选择串口和板型



第三步:安装固件
                                                                 安装固件



第四步:接上电机和电池,编程控制电机正反转,点击绿旗运行程序。
                                                            点击绿旗能运行



● 蓝牙连接步骤
第一步:USB连接主控板,确保主控板已经下载固件。



第二步:拔掉USB线,5口接蓝牙模块(以Orion主控板为例),接上两个电机和电池供电,然后编程控制小车行进。

第三步:主控板上电后,点击工具栏的蓝牙连接,选择Makeblock蓝牙模块。
                                                            蓝牙连接过程


                                                            蓝牙连接成功标志

第四步:连上后可以通过键盘控制小车行进啦。



● 脱机下载步骤

第一步:将原来的绿旗触发换成Makeblock触发。



第二步:右键“Makeblock主程序”指令,选择上传到Arduino,这样就完成脱机啦。
阅读全文

selenium中https时安全证书认证失败的错误

  categories:资料  author:

在使用selenium做测试的时候,如果使用不同的浏览器模式,比如说*pifirefox 就会遇到,安全证书认证失败的错误,必须要手动去处理。不然测试就进行不下去。如下图所示。

 

我们要做的就是设置好firefox让它自动去处理。

1.       保存证书。我们点击View certificate 然后出现下面的界面。

然后选择Export保存在你想要的位置。

2.       现在你要做的是,导入证书然后做相应的设置。

a)         导入证书:打开firefox的certificate manager,然后点击导入

 

b)导入证书后做一下设置,选择信任证书。然后点击ok保存。

 

解决Selenium测试Https(IE)证书错误

访问Https的的网站,你一定遇到过“停止访问”、“继续前往”这样的选择题吧。。我们人很好处理它,可以工具Selenium就犯愁了。。伙计不如这样试试(在IE8中)

driver.get(url); //下面的这句js脚本就会帮你点击“继续前往”连接,我们通过driver.get执行这句脚本。 driver.get("javascript:document.getElementById('overridelink').click();");
阅读全文

DNS BIND 搭建域名智能解析DNS服务器之动态添加解析

  categories:资料  author:

本节我们将通过脚本来实现动态添加域名及解析记录。

1.安装bind

请参考:http://blog.csdn.net/zhu_tianwei/article/details/45045431

2.管理脚本

脚本都放在chroot/bin目录下

管理脚本./bin/slim-bind

  1. ./bin/slim-bind
  2. Usage:./bin/slim-bind start | stop | restart |reload |status

管理bind的启动、关闭、重启、重新加载配置、状态。
3.检查脚本

1)检查zone文件是否有效

  1. ./bin/slim-checkzone -h
  2. usage: ./bin/slim-checkzone [-z zone -f zonefile] [-h]
  3.     z   zone name
  4.     f   zone file
  5.     h   output this help and exit

说明:z

阅读全文


快乐成长 每天进步一点点