无状态和有状态架构概念——详解

520 阅读3分钟

在这篇文章中,我们深入解释了无状态和有状态架构的概念。关于无状态架构和有状态架构哪个更好,似乎有一场激烈的辩论。此外,对于这些术语的正确定义也存在各种误解,尤其是在客户端和服务器系统中。

内容表

  1. 引言。陈述简要的历史

  2. 无状态架构
    3.无状态应用的优点
    4
    .
    无状态应用的劣势
    5.无状态应用架构的例子

  3. 有状态架构
    7.有状态应用程序的优点
    8
    .
    有状态应用的缺点
    9
    .
    无状态应用的例子

引言。陈述简要的历史

从历史上看,由于互联网和网络应用很简单,所以无状态的应用占主导地位。然而,随着网站需要变得更加动态,处理用户信息和行动,有状态的架构和应用在一段时间内抢占了战利品,之后由于需要可扩展的网络应用,无状态又变得时髦和酷。有状态的统治了一段时间,这可能是一些人的强硬立场背后的原因,他们认为有状态的永远是最好的,而忽略了各种系统设计的考虑。

无状态架构

无状态应用程序不了解过去,并将事务、请求、处理和操作视为独立于以前的。无状态的一些特点包括。

  • 通常不存储会话中产生的任何客户数据
  • 操作是从头开始的
  • 不使用状态来处理任何请求
  • 相同的请求产生相同的响应
  • 请求是自包含的
  • 涉及到微服务和通过消息传递等进行的通信
  • 通常涉及单一服务或功能

无状态应用的优势

无状态应用程序的优点是。

  • 易于实现
  • 自包含,增加可见性
  • 能更好地处理崩溃问题
  • 更容易横向扩展
  • 允许隔离,减少风险 总的故障转移
  • 易于与广泛使用的无状态协议HTTP结合起来

无状态应用程序的缺点

无状态应用程序的缺点是。

  • 不能存储用户信息,必须依赖低效的cookies
  • 往往被限制在可以做的范围内。

无状态应用程序架构的例子

无状态应用架构的例子包括。

  • 内容交付网络(CDN)
  • 打印、无服务器功能
  • HTTP、容器、离线应用
  • 功能性编程、令牌、REST

有状态的架构

有状态的应用程序保留状态,需要记住过去,并将其应用于当前的响应、交易、处理或操作。有状态的一些特点包括。

  • 将数据、状态存储在存储器中,如MySQL、MongoDB等数据库。
  • 操作不是从头开始的
  • 使用状态,当前的事务受到过去的影响
  • 同一请求可能会产生不同的响应,这取决于状态和背景
  • 请求不是自包含的
  • 涉及到许多调用、流程、步骤,一个接一个。
  • 对过去的了解使它们可以保留到以前的状态

有状态应用程序的优点

有状态的应用程序的优点是。

  • 可以做更复杂的事情,例如设计购物车。

有状态应用程序的缺点

有状态应用程序的缺点是。

  • 实现起来更复杂
  • 更难分析,因为它们不是自带的
  • 不能很好地处理崩溃问题
  • 有较高的全面故障切换风险
  • 难以横向扩展
  • 由于依赖性,用户体验可能很差
  • 存储成本和复杂程度

无状态应用程序的例子

无状态应用的例子是。

  • FTP、Cookies、会话
  • AJAX
  • 存储、数据库、用户会话
  • 有状态的容器

通过OpenGenus的这篇文章,你一定对系统设计中的无状态和有状态架构有了深刻的认识。请欣赏。