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

标签: Golang doozer golang 可用性 同步 | 发表时间:2011-04-14 11:32 | 作者:mikespook Tim
出处:http://www.mikespook.com

昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗?
好吧,不扯淡,直接翻译 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

得到完整的贡献者名单。

相关 [数据 同步 服务器] 推荐:

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

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

架设SVN服务器并自动同步和验证注释

- - 操作系统 - ITeye博客
搭建SVN服务,有效的管理代码,以下三步可以快速搞定. 有了SVN软件后还需要建立SVN库. 执行上面的命令后,自动在repos下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt.      上面的操作很简单,几个命令就搞定, 下面的操作也不难.

同步mysql数据到hive

- - ITeye博客
地址为:http://archive.cloudera.com/cdh/3/下载相应版本,如sqoop-1.2.0-CDH3B4.tar.gz. 地址为:http://archive.cloudera.com/cdh/3/,版本可以为hadoop-0.20.2-CDH3B4.tar.gz. 3.解压 sqoop-1.2.0-CDH3B4.tar.gz ,hadoop-0.20.2-CDH3B4.tar.gz 到某目录如/home/hadoop/,解压后的目录为.

检查MySQL数据库服务器的shell脚本

- 铭文 - MySQLOPS 数据库与运维自动化技术分享
某著名电子商务公司的同事,编写的shell脚本,用于获得数据库服务器的数据库性能和配置,以及服务器负载LOAD等信息. shell脚本较长,也对shell脚本做了部分修改,同时为使技术朋友们更容易理解和使用,添加相关的文字和图片描述作为手册. 1.         功能描述. 执行shell命令:sh Get_Local_Kpi.sh –help,能显示相关信息,如图1-1:.

从git服务器获取只读项目数据

- - Marshal's Blog
从git服务器获取和同步只读的项目数据. 比如说,通过github,获取人家的项目数据,而且还要和它保持同步,需要以下操作. 拿我现在写的一个发布在github上的项目举例,见: https://github.com/MarshalW/WebBook/tree/gh-pages. 可以通过如下命名clone项目(相当于svn的checkout)数据:.

大数据在服务器运营中的应用

- - 博客园_知识库
  腾讯公司从2012年开始,通过对服务器运营流程、工具系统的建设,服务器从一线到三线的运营基本转入线上自动化. 在服务器静态配置、动态的运行状态和生命周期各个节点的运营这几个方面,产生了大量的运营数据,这些信息像滚雪球一样,以几何量级快速增长. 数据越来越多,该如何着手处理呢. 这就像刚入门的厨子一样,在农贸市场里面对堆积如小山般的食材,无从下手.

应用服务器上在线备份Oracle数据库代码

- - CSDN博客数据库推荐文章
做在线备份时,输出做一个修改,动态把输出内容传到浏览器页面上去. 作者:qm4050 发表于2013-2-28 10:34:34 原文链接. 阅读:75 评论:0 查看评论.

硬件疲软?2013全球服务器市场数据堪忧

- - IT经理网
近年来,全球服务器市场全面进入萧条时期,各大服务器厂商的销售业绩也是每况愈下,而 IBM甚至传出要卖掉部分服务器业务,近日 IDC和 Gartner最新出炉的2013年第二季度服务器市场发货量和收入数据显示,服务器厂商的坏日子还远未结束. IDC和Gartner的服务器市场报告中包含以下关键信息:.

Mysql数据库服务器的CPU占用很高分析

- - ITeye博客
   MySQl服务器CPU占用很高.   一个简单的接口,根据传入的号段查询号码归属地,运行. 性能测试脚本,20个并发mysql的CPU就很高,监控发现只有一个select语句,且表建立了索引.   查询语句索引没有命中导致.   开始时的select. 咨询说where中使用SUBSTRING函数不行,修改函数为LEFT,语句为 SELECT `province_name`, `city_name` FROM `conf_phoneno_section` WHERE LEFT(?, phoneno_section_len) = phoneno_section LIMIT ?.

MySQL数据库设置主从同步

- - CSDN博客架构设计推荐文章
MYSQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力. 1、可以作为一种备份机制,相当于热备份. 2、可以用来做读写分离,均衡数据库负载. 1、主从数据库版本一致,建议版本5.5以上. # 日志文件名 log-bin = mysql-bin # 日志格式,建议mixed binlog_format = mixed # 主数据库端ID号 server-id = 1.