Database 关于ringpop,应用层切分,用于Uber

Database 关于ringpop,应用层切分,用于Uber,database,distributed,distributed-computing,distributed-caching,Database,Distributed,Distributed Computing,Distributed Caching,据我所知,切分可以在一些库例程中实现,而应用程序只是与库链接。如果库是RPC客户端,则可以从服务器端实时查询分片。因此,即使有一个新分区,它对应用程序也是透明的 Ringpop是一种应用层分片策略,基于SWIM成员协议。我想知道应用层的主要优势是什么 另一面是什么,比如说系统层中的分片 谢谢 这个回复可能有点晚了,但可能有人仍然需要这个信息 Ringpop在应用程序中引入了“切分”的思想,而不是数据。它的工作原理或多或少类似于应用程序级中间件,但其优点是它提供了一种构建可伸缩和容错应用程序的简单

据我所知,切分可以在一些库例程中实现,而应用程序只是与库链接。如果库是RPC客户端,则可以从服务器端实时查询分片。因此,即使有一个新分区,它对应用程序也是透明的

Ringpop是一种应用层分片策略,基于SWIM成员协议。我想知道应用层的主要优势是什么

另一面是什么,比如说系统层中的分片


谢谢

这个回复可能有点晚了,但可能有人仍然需要这个信息

Ringpop在应用程序中引入了“切分”的思想,而不是数据。它的工作原理或多或少类似于应用程序级中间件,但其优点是它提供了一种构建可伸缩和容错应用程序的简单方法

Ringpop碎片的内容是来自客户端对特定服务的请求。这是它的主要优点之一。有更多,请继续阅读

在传统的SOA体系结构中,对特定服务的所有请求都会发送到一个独特的系统,该系统会将它们分派给工作人员以实现负载平衡。这些工人彼此不认识,他们是独立的实体,不能相互交流。他们完成了自己的工作,并回信了

Ringpop则相反:员工相互认识,可以发现新的员工,定期交谈以检查他们的健康状况,并与其他员工传播这些信息

Ringpop如何切分请求? 它使用键空间的概念。键空间只是一个数字范围,例如,您可以自由选择您喜欢的范围,但显而易见的选择是对应用程序中对象的ID进行哈希,并使用哈希函数的codomain作为范围

键空间可以想象为一个散列环,但实际上只是一个4或8字节的整数

工作节点(例如,可以为特定服务请求提供服务的节点)被“虚拟”放置在此环上,例如,它拥有环的一个连续部分。实际上,它指定了一个子范围。工作者负责处理属于其子范围的所有请求。处理请求意味着两件事: -处理请求并提供响应,或 -将请求转发给另一个实际知道如何服务它的服务

每个应用程序的构建都嵌入了这种行为。有逻辑来处理一个请求或只是将它转发给另一个可以处理它的服务。转发机制不过是一个远程调用过程,实际上是使用TChannel(Uber针对通用RPC的高性能转发)实现的

如果你仔细想想,你会发现Ringpop实际上提供了一个传统SOA架构所没有的非常好的东西。客户不需要知道或关心能够满足其请求的正确实例。他们可以在Ringpop中的任何地方发送请求,接收者工作人员将提供请求或转发给rigth所有者

Ringpop还有一个有趣的特性。新工人可以直接进入吊环,老工人可以离开吊环,例如,因为碰撞或仅仅是停机而没有任何服务中断。 Ringpop实现了一个基于SWIM的成员协议。 它允许工作人员使用基于tcp的八卦协议相互发现并从环中排除已断开的工作人员。当另一个工作进程发现一个新的工作进程时,将在它们之间建立一个新的连接。每个工作人员映射以固定时间间隔发送ping请求的其他工作人员的状态,如果ping没有得到回复,则与其他工作人员传播状态信息,例如,基于ping/gossip的平台上的背驮成员身份更新


这三个元素包括一致性哈希、请求转发和成员协议,使Ringpop成为一个有趣的解决方案,可在应用层提高可伸缩性和容错性,同时将复杂性和操作开销保持在最低水平

这个回复可能有点晚了,但可能有人仍然需要这个信息

Ringpop在应用程序中引入了“切分”的思想,而不是数据。它的工作原理或多或少类似于应用程序级中间件,但其优点是它提供了一种构建可伸缩和容错应用程序的简单方法

Ringpop碎片的内容是来自客户端对特定服务的请求。这是它的主要优点之一。有更多,请继续阅读

在传统的SOA体系结构中,对特定服务的所有请求都会发送到一个独特的系统,该系统会将它们分派给工作人员以实现负载平衡。这些工人彼此不认识,他们是独立的实体,不能相互交流。他们完成了自己的工作,并回信了

Ringpop正好相反:工人们彼此认识,可以直接对话 嘲笑新员工,定期与他们交谈,检查他们的健康状况,并将此信息传播给其他员工

Ringpop如何切分请求? 它使用键空间的概念。键空间只是一个数字范围,例如,您可以自由选择您喜欢的范围,但显而易见的选择是对应用程序中对象的ID进行哈希,并使用哈希函数的codomain作为范围

键空间可以想象为一个散列环,但实际上只是一个4或8字节的整数

工作节点(例如,可以为特定服务请求提供服务的节点)被“虚拟”放置在此环上,例如,它拥有环的一个连续部分。实际上,它指定了一个子范围。工作者负责处理属于其子范围的所有请求。处理请求意味着两件事: -处理请求并提供响应,或 -将请求转发给另一个实际知道如何服务它的服务

每个应用程序的构建都嵌入了这种行为。有逻辑来处理一个请求或只是将它转发给另一个可以处理它的服务。转发机制不过是一个远程调用过程,实际上是使用TChannel(Uber针对通用RPC的高性能转发)实现的

如果你仔细想想,你会发现Ringpop实际上提供了一个传统SOA架构所没有的非常好的东西。客户不需要知道或关心能够满足其请求的正确实例。他们可以在Ringpop中的任何地方发送请求,接收者工作人员将提供请求或转发给rigth所有者

Ringpop还有一个有趣的特性。新工人可以直接进入吊环,老工人可以离开吊环,例如,因为碰撞或仅仅是停机而没有任何服务中断。 Ringpop实现了一个基于SWIM的成员协议。 它允许工作人员使用基于tcp的八卦协议相互发现并从环中排除已断开的工作人员。当另一个工作进程发现一个新的工作进程时,将在它们之间建立一个新的连接。每个工作人员映射以固定时间间隔发送ping请求的其他工作人员的状态,如果ping没有得到回复,则与其他工作人员传播状态信息,例如,基于ping/gossip的平台上的背驮成员身份更新

这三个元素包括一致性哈希、请求转发和成员协议,使Ringpop成为一个有趣的解决方案,可在应用层提高可伸缩性和容错性,同时将复杂性和操作开销保持在最低水平