/*
* 这个示例程序演示了使用Berkeley DB的replication功能的方法。
*
* Berkeley DB提供了一套基本API和一套replication manager API来使用
* 它的replication功能。
* 前者有更大的灵活性,用户可以选择各种网络协议来实现数据传输,并且使用各种
* 线程库来进行多线程编程。同时由于使用最基本的API, 用户可以定制选举和
* replication系统的内部消息处理方式,非常灵活。所以这也意味着用户需要更多
* 的代码来使用Berkeley DB replication功能,开发难度相对后者较大;
* 后者基于TCP/IP协议和pthread线程库(Windows上面使用win32线程库),并且按照通常
* 的需求,对选举和内部消息处理进行了通用的处理,并且通过让用户配置
* 策略(policy)和参数的方式提供一定的灵活性和可定制性。
*
* 本程序基于Berkeley DB的replication manager。
*
*
* 名词术语:
*
* site:一个(数据库环境, IP地址, 端口(port))的三元组。所以,多个site可以处于
* 不同的计算机上面,也可以在同一个计算机上面,只要配置了不同的端口并使用不同
* 的数据库环境目录。
*
* replication group:由若干个site组成的集合,其中有且只有一个site 可以写入
* 数据到数据库当中, 称为master;其余的site只可以从中读取数据,称为replica。
*
* master:接受读写请求。如果写入数据,那么这些写入的数据不仅会更新master
* 自己的数据库,还会通过Berkeley DB的
* replication功能,被传播到replication group当中的replica上面。一个
* replication group通过选举或者显式指定的方式,得到master。
*
* replica:接受读请求。从master写入的数据会自动传播到每一个replica上面,从而
* 将replica上面的数据更新。任何一个replica在选举的时候,都有可能成为新的master
*
* 一个replication group作为一个整体来看的话,它比一个单机有
* 更大的数据读写能力,因为所有的site都可以提供数据,自然读数据的吞吐量更大;
* 并且master可以被配置为只写入数据而不必理会读数据请求,由replica提供数据,
* 这样,写入的吞吐量也更大。
*
* replication group比单机的另一个优势,就是高可靠性(high availability),因为,
* 其中如果任何一个site脱离(断电,网络故障,应用程序错误等),这个组都可以
* 继续服务:如果一个replica脱离,那么
* 还有其他replica可以提供数据,并且这个脱离的replica可以重新加入该组,其数据
* 被自动更新到最新;如果master脱离,那么该组的所有replica举行选举,从中选<
Berkeley DB示例程序详解(3.1)
最新推荐文章于 2022-02-15 10:14:07 发布
本文详细介绍了如何使用Berkeley DB的replication manager功能,包括其灵活性、基本API和replication manager API的区别,以及如何配置和启动replication group。示例程序展示了基于TCP/IP和pthread的replication manager操作,如选举、数据传播和错误处理机制。
摘要由CSDN通过智能技术生成