美文网首页
分布式弹力设计之服务状态

分布式弹力设计之服务状态

作者: Doit8 | 来源:发表于2018-04-05 00:00 被阅读0次

今天我们来谈一谈服务的状态,服务的状态指的是请求是否与不同的服务实例相关。分为两种,有状态和无状态。

无状态服务重要特征是同一个输入对于每个服务实例都会有确定的相同的输出,它要求服务要么是没有存数据只有算法,要么是所有节点的数据均相同。

举个例子,例如电商系统有多个服务实例,用户登陆认证后,向购物车中加入商品和查询购物车中有哪些商品,对于这两个操作无论分配到那个具体的服务实例,都可以保证得到的数据是一致的。

无状态服务的优点?

方便横向扩展,运维简单,可以很容易地增减节点

如何实现无状态服务?

1 服务不保存数据,服务只提供算法和逻辑,那么自然就不会有状态,例如有个压缩文件的服务,他有多个实例,无论调用那个实例我们均可以得到压缩的结果。

2 服务保存请求相关的数据,同时这些数据在所有节点均相同,一般是通过引入第三方的存储,多个服务实例,依赖同一个第三方服务。这样也可以实现服务的无状态。

有状态的服务更加的常见,同一服务的不同实例所拥有的数据不一样,同样说到登陆这个场景,有状态的服务是这样的,用户一的登陆状态可能只保存在服务A中,当请求分配到服务B时,用户是未登陆的状态。那么有状态的服务就必须要保证,每个请求都能准确的落到拥有它状态的那个节点上。常用的做法用一致性hash算法,来实现请求的分配。

有状态服务的优点

1 本地保存着数据,在处理时会减少网络开销。

2 模型简单,可用性和一致性容易保证。

有状态服务如何保证请求落到同一实例上?

1 简单的hash取模,或者一致性hash

2 长连接

有状态与无状态最本质的区别在于,节点的数据是否是全量数据,无状态的服务每个节点的数据均是全量。有状态的服务则不是。

相关文章

  • 分布式弹力设计之服务状态

    今天我们来谈一谈服务的状态,服务的状态指的是请求是否与不同的服务实例相关。分为两种,有状态和无状态。 无状态服务重...

  • 弹力设计总结

    容错设计又叫弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务 隔离、异步调用、请求幂等性)、可...

  • 弹力设计简介

    弹力设计又叫容错设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务隔离、异步调用、请求幂等性)、可伸...

  • 弹力设计概述

    1. 概述 容错设计又叫弹力设计,分布式系统的各种容忍能力。容错能力(服务隔离,异步调用,请求幂等性)可伸缩性(有...

  • 分布式弹力设计之熔断

    前言 熔断机制的灵感来源于保险丝,我们知道家里的电路中有个保险丝,当用电过载或是短路时,保险丝熔断,切断电路,避免...

  • 分布式弹力设计之降级

    当系统遇到大的流量,为了能让系统健康的运行,我们会采取一些措施,上节课讲到的限流是一种方式,拒绝掉一些流量,今天讲...

  • 分布式弹力设计总结

    分布式弹力设计的目的 保证服务的弹力,从两个方面体现,一是出现故障时能够自恢复,另一方面是在无法自愈的情况下,将范...

  • 分布式弹力设计之异步通信

    讲到异步通信,不得不先提同步通信,如果把打电话比做同步,那短信就是异步。同步操作有个优点,实时性好,但存在以下问题...

  • 第二章架构设计之技术实践篇(下)

    本章要点 分布式事务设计与实践 服务降级设计 服务限流/熔断设计 服务灰度发布设计 1.分布式事务设计与实践 分布...

  • 分布式弹力设计之幂等性

    分布式服务之间不可避免要相互通信,通信的结果有三种:成功,失败,超时。而超时状态,有可能是接收方没有接受到数据,另...

网友评论

      本文标题:分布式弹力设计之服务状态

      本文链接:https://www.haomeiwen.com/subject/zjxrhftx.html