高速数据同步服务器——Doozer

昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗?
好吧,不扯淡,直接翻译 Doozer 的 README 吧。Doozer 我还没实测,不过感觉,如果真得像 README 上面说得那样,还是很有用,很有用的。

关键——这个玩意提供了 go 的接口。(补充一点,忘了说了,这个是用 go 开发的)
项目代码托管于此:Doozer
———————-翻译分割线———————-

Doozer

这是什么?

Doozer 是高可用的,完整一致性的用于小量、极端重要的数据的存储。当数据变化时,它立刻通知接入的客户端(不缓存),对于那些很少更新,但是希望更新发生时实时性高的客户端来说是非常理想的。Doozer 对于名字服务、主数据库选取和多个设备之间的配置数据同步很适合。了解什么时候应该使用它?下面,有详细的信息。

通过邮件列表同其他用户和开发者讨论 doozer。

快速开始

  1. 下载 doozerd
  2. 解压缩
  3. 启动 doozerd
          $ doozerd
    
  4. 设置一个键,然后再读出来
          $ echo "hello, world" | doozer set /message 0
          $ doozer get /message
          11046 13
          hello, world
    
  5. 5. 访问 http://localhost:8080 查看消息

它是如何工作的?

Doozer 是一个网络服务。一票机器(通常是三、五或七个)每个都运行一个 doozer 服务进程。这些进程使用标准的全一致性分布式完整性算法进行通讯。客户端接入一个或多个 doozer 服务器,发出命令,如 GET、SET 和 WATCH,并且接收响应。

(在这里插入一个网络结构图)

每个 doozerd 进程完整的复制一份数据存储,并且提供读写请求;没有“master”或“leader”的区别。Doozer 被设计为存储能存放于内存的数据;它永远都不会将数据写入持久化文件。一个独立的工具提供了用于备份和恢复的持久化存储。

什么时候应当使用它?

这里有一些情景:

  1. 名字服务
    有若干机器提供 HTTP 请求的服务。当发生硬件故障,这些机器中的一个坏掉了,你将其替换为另一个网络地址上的新的机器。而由于原有的 DNS 记录的 TTL 使得客户端会缓存一段时间,DNS 数据的更新到达客户端,可能需要一段时间。
    代替 DNS,可以使用 Doozer。客户端可以订阅它们感兴趣的名字,然后在这些名字的地址变化时,客户端会收到通知。
  2. 主数据库选取
    部署了 MySQL 系统。为了使其具有高可用性,在另一台物理独立的机器上增加了一个从服务器。当主服务器异常时,可以将某台从服务器变为主服务器。在任何时间,客户端需要知道哪个服务器是主服务器,而发生问题的时候,从服务器之间也需要协调。
    可以使用 doozer 存储当前主服务器的地址,以及在发生异常时协调所需要的任何信息。
  3. 配置
    在多个不同的机器上有一些进程,并且期望它们使用相同的配置文件,这些文件会不定期更新。所有进程使用相同的配置非常重要。
    将配置文件保存在 doozer 中,然后让进程从 doozer 中读取配置。

我能为这个项目做些什么?

参阅协议说明查看命令列表

类似的项目

Doozer 同下面的软件类似:

* Apache Zookeeper http://zookeeper.apache.org/
* Google Chubby http://labs.google.com/papers/chubby.html

Hacking on Doozer

* hacking on doozer
* 邮件列表

许可证和作者

Doozer 发布于 MIT 许可证。参阅 LICENSE 了解更多信息。

Doozer 由 Blake Mizerany 和 Keith Rarick 创建。输入

git shortlog -s

得到完整的贡献者名单。

Join the Conversation

6 Comments

Leave a comment

Your email address will not be published. Required fields are marked *