11 2008存档
今天是搬进新家一周年。
在这个飘荡的城市有个家真温暖。
在这个飘荡的城市有个家真温暖。
用BerkeleyDB较多了,但它的同步功能却从没用过,文档虽然有,但和BDB的其他文档一样,介绍得很单薄。用心看看示例代码 (源代码解包后,目录db-4.7.25/examples_c/ex_rep/),再结合文档,才算有些收获。
BDB将需要同步的n台机器作为一个Replication-Group,group内有一个master机器负责推数据,其它机器为replica(即 slave),接收数据。BDB同步方法类似mysql的同步,也是记日志并广播消息到slave机。BDB自带的示例程序测试结果显示,BDB可以平均 每秒同步1.2万条记录(单条记录25字节)。在master宕机后,Replication-Group内会进行一次选举,选出新的master,选举 算法应该是Bully算法(看rep_elect.c的代码,如看天书,但从选举时广播消息,猜测是常用的Bully算法)另外BDB要求“获胜者”收到 的票数必须是大于n/2(其中n为group中参选的机器总数,但也可由开发者选择n的值)
BDB为开发者提供两种调用同步机制的方法,一种是简 便的mgr方法,直接调用repmgr_*等API;另一种则由开发者来实现同步的框架。测试表明,直接调用repmgr_*同步速度很慢,建议自行实现 同步框架。同步框架要求开发者来实现Replication-Group内的机器列表、日志发送方式和开始选举的时间,并决定选举的“最少选民数”,即前 面提到的n。
BDB将需要同步的n台机器作为一个Replication-Group,group内有一个master机器负责推数据,其它机器为replica(即 slave),接收数据。BDB同步方法类似mysql的同步,也是记日志并广播消息到slave机。BDB自带的示例程序测试结果显示,BDB可以平均 每秒同步1.2万条记录(单条记录25字节)。在master宕机后,Replication-Group内会进行一次选举,选出新的master,选举 算法应该是Bully算法(看rep_elect.c的代码,如看天书,但从选举时广播消息,猜测是常用的Bully算法)另外BDB要求“获胜者”收到 的票数必须是大于n/2(其中n为group中参选的机器总数,但也可由开发者选择n的值)
BDB为开发者提供两种调用同步机制的方法,一种是简 便的mgr方法,直接调用repmgr_*等API;另一种则由开发者来实现同步的框架。测试表明,直接调用repmgr_*同步速度很慢,建议自行实现 同步框架。同步框架要求开发者来实现Replication-Group内的机器列表、日志发送方式和开始选举的时间,并决定选举的“最少选民数”,即前 面提到的n。
haodong: 今天他们说架构师就只有两个——中中和哼哼,我第一想到的就是——团团和圆圆
中中: 晕
haodong: 俩熊猫
中中: 以后还要增加的,肯定不只两个
haodong: 没关系。 你们俩在人民心目中是,授予你们“人民架构师”的光荣称号
中中: 靠
haodong: 再发个奖章
中中: 小心我去开心网把你买回来折磨一下
中中: 晕
haodong: 俩熊猫
中中: 以后还要增加的,肯定不只两个
haodong: 没关系。 你们俩在人民心目中是,授予你们“人民架构师”的光荣称号
中中: 靠
haodong: 再发个奖章
中中: 小心我去开心网把你买回来折磨一下