我正在做类似的事情(尽管代码还远未准备好)。我将简要介绍一下我的预期方法,但这是否适合您取决于您需要考虑的一些关键设计点。不幸的是,我不知道有任何现成的项目可以做到这一点。
- 特别是我们需要知道您希望使用哪种语言,或者您希望避免使用哪种语言。
- 另外,请考虑您打算如何进行对等发现 - 您可以手动设置节点对之间的信任,还是希望它们自动发现?
- 大概所有的对等点都可以插入数据?
如果您能够使用 PHP,并且乐于手动对等节点对,那么我的方法可能会引起您的兴趣。设置一个 ORM,例如 Doctrine、Propel 或 NotORM,并让每个节点定期与互联网时间源同步。对于 db 中的每个新行,获取数据(在数组或 ORM 对象中),将其序列化,然后将其推送到与您有信任关系的所有节点。如果推送失败,请记下这一点并定期重试(在远程节点无法响应大量重试后可能会放弃)。
推送可以由创建行的应用程序启动,也可以由每台机器上可用的任何调度程序调用。推送消息可以是 XML,或者为简单起见,可以只是一个 POST 消息,其中包含新行和任何元数据(例如保存的时间戳,以便解析来自多个节点的 INSERT 顺序)。
如果您的节点没有静态 IP 地址,则可以将它们注册到动态 DNS 寻址服务,以便每个节点即使 IP 发生变化也能与对等节点保持联系。您还可以考虑添加消息签名系统,以确保节点之间的消息是真实的。