当前位置:  软件>java软件

时间戳服务器 XiaoMi Chronos

    来源:    发布时间:2014-12-22

    本文导语:  Chronos,在古希腊语意为时间,是小米公司开发的实现高可用、高性能、提供全局唯一而且严格单调递增timestamp的服务。 Chronos 采用主备架构,主服务器挂了以后备服务器迅速感知并接替服务,从而实现系统的高可用。服务端使...

Chronos,在古希腊语意为时间,是小米公司开发的实现高可用、高性能、提供全局唯一而且严格单调递增timestamp的服务。

Chronos 采用主备架构,主服务器挂了以后备服务器迅速感知并接替服务,从而实现系统的高可用。服务端使用Thrift框 架,经测试每秒可处理约60万次RPC请求,客户端单线程每秒可请求6万次(本地服务器),保证高性能与低延时。全局只有唯一的 ChronosServer提供服务,分配的timestamp保证严格单调递增,并且将已分配的值持久化到ZooKeeper上,即使发生 failover也能保证服务的正确性。

原理

时间戳服务器 XiaoMi Chronos[图片]

Chronos依赖ZooKeeper实现与HBase类 似的Leader Election机制,ChronosServer启动时将自己的信息写到ZooKeeper的Master临时节点上,如果主服务器已经存在,那么就记 录到BackupServers节点上。一旦Master临时节点消失(主服务器发生failover),所有备服务器收到ZooKeeper通知后参与 新一轮的选主,保证最终只有一个新的主服务器接替服务。

ChronosServer运行时会启动一个Thrift服务器,提供getTimestamp()和getTimestamps(int)接口, 并且保证每次返回的timestamp都是严格单调递增的。返回的timestamp与现实时间有基本对应关系,为当前Unix time乘以2的18次方(足够使用1115年),由于我们优化了性能,所以如果存在failover就不能保证这种对应关系的可靠性。

ChronosClient启动时,通过访问ZooKeeper获得当前的主ChronosServer地址,连接该服务器后就可以发送 Thrift RPC请求了。一旦主服务器发生failover,客户端请求失败,它会自动到ZooKeeper获得新的主ChronosServer地址重新建立连 接。


    
 
 

您可能感兴趣的文章:

  • date显示的时间和程序里头取服务器上数据库的当前时间为什么不一致
  • linux服务器之间如何实现时间同步?
  • LINUX服务器时间问题
  • 服务器时间
  • 在服务器端怎样检测客户端与服务器端的某个会话在一段时间里面没有通信,然后在服务器端终止该会话??
  • 怎么让客户端从服务器下载图片后,看不到图片的最后修改时间
  • 如何取消开机时的时间服务器同步?
  • 在局域网中设置Linux时间服务器
  • linux 设置时间同步服务器后,时间未同步
  • jsp页面获取服务器时间的简单调用示例
  • 怎样查看linux服务器的开机时间和日期
  • 怎么在jsp中读取服务器时间并且将它放到access数据库中?
  • JSP如何得到服务器端的系统时间!!谢谢
  • 每隔一段时间在Linux系统下执行 wget 命令请求服务器网页,会使内存增加吗?
  • linux下配置时间服务器的问题
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!
  • linux服务器运行一段时间了,空间告急,现在我想增加一个硬盘。如何处理?
  • linux 服务器,每周神秘死机,这个怎么查?有没有类似于crash report之类的东西?看过System Log了没有可以参考的地方,只是在某段时间没记录
  • Java从服务器上获取时间动态显示在jsp页面实现思路
  • JSP获取服务器时间以倒计时的形式在页面显示
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • linux设置时间和把时间从UTC转成本地时间的
  • Linux下用ntpdate同步时间及date显示设置时间
  • 用哪些函数可以得到执行一个程序的系统CPU时间,用户CPU时间,时钟时间啊?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 用户CPU时间 系统CPU时间 时钟时间 不懂
  • Python将日期时间按照格式转换成字符串
  • 用touch命令修改访问时间时,却发现连修改时间和状态时间也改了.疑惑
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • ★★怎样获得一个文件的创建时间,修改时间,和访问时间?急!在线等待...
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • arm2440下,系统时间和硬件时间一致,但创建文件得到的时间不一致,想过几种方法,似乎无用
  • php将unix时间戳转换成字符串时间函数(date)
  • 获取系统时间和修改系统时间
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 关于内核时间与用户时间;我在线等你回复,所以你要告诉我!
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • 求助,Linux系统时间总比硬件时间慢!
  • aps.net session全面介绍(生命周期,超时时间)
  • UNIX的时间为什么会隔一段时间就提前一个小时
  • php时间格式化函数date介绍及用法参考
  • 如何让centos系统时间和另外一台window系统时间保持同步


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3