分布式学习 12.27 服务的状态

无状态服务:因为需要把状态放到第三方存储,经常会依赖高可用服务(zookeeper)或底层分布式文件系统。

优点:Bug少,易横向扩展。

有状态服务:通过长链接或哈希进行数据分片。

节点的负载和数据不均匀时,需要客户端在服务端成为热点时主动断开连接;

如果要做到负载和数据均匀,需一个元数据索引来映射后端服务实例和请求的对应关系,由路由节点会根据元数据索引来路由,元数据索引表根据后端服务的压力来重新组织相关的映射。

如果去掉路由节点,让有状态的服务直接路由,有两种方式:直接使用配置,在节点启动时把其元数据读到内存中,但是这样一来增加或减少节点都需要更新这个配置,会导致其它节点也一同要重新读入;或者使用Gossip 协议,通过协议在各个节点之间互相散播消息来同步元数据。

优点:数据本地化、高可用、强一致。

服务状态的容错设计:

·运行时复制&两段提交(Zookeeper.Redis.ES)

·底层分布式文件系统将数据持久化

你可能感兴趣的:(分布式学习 12.27 服务的状态)