Web 应用程序如何受并发影响?

How is a web app is affected by concurrency?

有人可以解释并发性如何影响 Web 应用程序吗?

任何帮助! 谢谢。

这是一个非常广泛的问题,但应用程序基础并发错误的常见来源是:

  • 数据库级别(MVCC
  • 运行时级别(编程语言、并发模型、线程、锁、竞争、条件等)
  • Web 服务器级别(多个客户端同时在同一端点上请求)
  • 逻辑:CQRS(最终一致性,写入和读取是分开的,读取可以stale/lagged)
  • 逻辑:分布式事务(想象一下有像 redis 这样的读取缓存和像 mysql 这样的存储,你如何保证它们同步?)

我怎么推荐Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems都不为过,它为您关注的所有重要概念提供了基础!


使用 CQRS 的具体示例:

  • 有一个数据库存储
  • 只有一个作家
  • 有一个Reader

事务向写入器发出持久信息请求,然后立即从该 reader 中读回。根据您的 CQRS 实现,写入和读取之间可能只有最终一致的保证,这意味着读取可能看不到刚刚写入的数据!当然,这可能不是问题,具体取决于您的客户。