gpt4 book ai didi

架构设计(五):有状态服务和无状态服务

转载 作者:我是一只小鸟 更新时间:2022-12-17 22:33:26 33 4
gpt4 key购买 nike

架构设计(五):有状态服务和无状态服务

作者: Grey 。

原文地址:

博客园:架构设计(五):有状态服务和无状态服务 。

CSDN:架构设计(五):有状态服务和无状态服务 。

无状态的服务 。

在横向扩展服务的过程中,将状态(例如用户会话数据)从服务中移出并将会话数据存储在持久性存储介质中,如关系型数据库或 NoSQL。集群中的每个服务都可以从数据库中访问状态数据。这就是所谓的无状态服务。架构如下 。

img

有状态的服务 。

和无状态服务不一样,有状态的服务从一个请求到下一个请求都会记住客户数据(状态)。而无状态服务器不保留任何状态信息,架构如下 。

img

上图中,如果使用有状态服务,用户1的状态数据(比如:会话数据和资料图片)都存储在Server 1中。如果这是一个验证用户身份的服务,为了验证用户1,请求必须被发送到 Server 1 上。如果请求被发送到其他服务器,如 Server 2,认证将失败,因为 Server 2 不包含用户 A 的会话数据。同样地,来自用户2的所有请求必须被路由到 Server 2;来自用户3的所有请求必须被发送到 Server 3.

这就会导致一个问题:来自同一个客户端的每个请求都 必须 被路由到同一个服务器。虽然可以通过负载均衡器的 粘性会话 来完成这个功能,但是这增加系统复杂度和开销。使用这种方法,在增加或删除服务的时候比较困难.

使用无状态服务,来自用户的请求可以被发送到任何服务节点,这些服务节点从共享数据存储中获取状态数据。状态数据被存储在共享数据存储中。无状态系统更简单、更稳健、可扩展.

无状态服务中的共享数据存储可以是一个关系型数据库、Memcached/Redis、NoSQL等。选择 NoSQL 数据存储是因为它很容易扩展。可以实现自动缩放(根据流量负载自动添加或删除服务)。在状态数据被单独存放在一个共享存储以后,通过根据流量负载添加或删除服务,可以很容易地实现网络层的自动扩展.

参考资料

System Design Interview 。

最后此篇关于架构设计(五):有状态服务和无状态服务的文章就讲到这里了,如果你想了解更多关于架构设计(五):有状态服务和无状态服务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com