Uber的Ringpop和Riak

Wesley13
• 阅读 627

Uber是最流行的按需用车服务商,他们的创新远不止这些,在生活方式和物流等方面有着快速的进步,最近他们的架构师分享了一些最具有魅力的分布式架构。

其中一个不断在进化的分布式系统项目是Ringpop: Ringpop是一个开源的Node.js库,能够在应用级别实现他们的调度平台服务的水平分区sharding。

这个额外的抽象层框架,通过众多Riak粉丝们熟悉的一致性哈希环维持,这样就提供了一种可以在不会中断服务的前提下额外增加新调度服务的手段。
为了平衡可扩展性和稳定性,Ringpop牢记没有分布式网络总是可靠的,服务实例的行为总是不规则不稳定的,缓慢的或其他情况,频繁的更新和持久改变如果形成一个封闭的死循环带来的破坏是巨大的,导致不一致性的哈希搜寻,通过Ringpop能够减轻这种破坏,到达服务高级别的可靠性。
Ringpop是一个可嵌入的服务器,能够可靠地对你的数据进行分区,探测节点失败(类似zooKeeper 服务动态定位器),能够发现集群中可用的服务。
ringpop通过实现SWIM gossip 协议来跨节点维护一致性视图,集群中任何改变能够被发现并通过这个协议发布到其他节点上。ringpop也可以提供一个代理,将客户端请求route路由分发到后端微服务上。TChannel是Ringpop的gossip和代理能力的基础传输组件。
在Ringpop使用场景中,我们看到Uber是如何依赖Riak数据库实现高可用性,Riak作为一个持久层数据存储提供调度服务,这些服务是基于Ringpop之上,举例,如产生的对象需要持久化,比如一个新司机刚上线,他们有关的叫车信箱会显示叫车信息,这些ID是作为key存储在Riak中。
下面这些层被用于进一步的服务,它们也依赖于存储在Riak的数据:
1. 有态的HTTP长轮询long-poll服务
2.客户端/服务器同步服务
3.速率Rate限制器
4.空间信息服务
更详细的信息可见视频演讲:
Uber’s Ringpop and Riak | Basho Technologies
Uber的有关RPC远程服务调用TChannel开源项目
Uber实时调度平台系统的架构概要
Uber’s Ringpop and Riak | Basho Technologies
Uber的有关RPC远程服务调用TChannel开源项目
Uber实时调度平台系统的架构概要 ==========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这