数据分片--请求路由
2018-05-19 本文已影响10人
MontyOak
当请求发送过来时,如何根据请求的键来确定应该吧请求发往哪个节点?这就是路由问题,延伸开来,可以被叫做是服务发现。在现有服务系统架构中,各个服务由网络交互,就会出现这个问题。
一般来讲有三种策略:
- 由客户端随机发送请求到某一数据节点,由该节点负责把请求转发给正确的数据节点;
- 由一个路由绑定器来负责将请求转发给正确的数据片,路由绑定器就是一个数据键与数据片/数据节点的映射表;
-
由客户端维护键与数据片/数据节点的映射关系,据此发送请求到目标节点;
三种路由策略
三种策略的区别仅仅在于由哪里维护路由信息并负责请求转发。许多分布式系统中由一个服务发现中心负责维护这个信息,例如Zookeeper,etcd,consul等等。这个服务发现中心负责接收各个节点发送来的注册信息,并提供给路由绑定器。(另外一个不依赖注册中心的方案是Gossip协议,它避免了潜在的单点问题,但是存在一个数据不一致的窗口期)