Web applications 如何使用无共享体系结构实现网络商店

Web applications 如何使用无共享体系结构实现网络商店,web-applications,architecture,shared-nothing,Web Applications,Architecture,Shared Nothing,一些人认为,使用无共享架构实现每个webapp是可能的,甚至是必要的。如何使用这种架构风格实现带有购物车的webshop 通常,webshop可以使用会话来实现。在这种情况下,我必须以另一种方式实现它,这样服务器上就不会存储关于购物车的任何信息。但是,有必要将购物车的内容包含到隐藏字段中,以便将它们随每个请求一起传递到服务器。这就是使用无共享架构的webshop的解决方案吗 你对如何实现webapps的无共享架构有什么想法吗 尽管我从来没有明确表示过要构建基于无共享(SN)的系统,但我建议说有必

一些人认为,使用无共享架构实现每个webapp是可能的,甚至是必要的。如何使用这种架构风格实现带有购物车的webshop

通常,webshop可以使用会话来实现。在这种情况下,我必须以另一种方式实现它,这样服务器上就不会存储关于购物车的任何信息。但是,有必要将购物车的内容包含到隐藏字段中,以便将它们随每个请求一起传递到服务器。这就是使用无共享架构的webshop的解决方案吗


你对如何实现webapps的无共享架构有什么想法吗

尽管我从来没有明确表示过要构建基于无共享(SN)的系统,但我建议说有必要使用“纯”SN构建Web应用程序的人是:

  • 拥有如此庞大的预算,他们可以为每一层利用一百万个集群
  • 他们是从未真正实施过任何东西的学者
如果您有一个web服务器集群,并且正在以某种方式平衡流量,这意味着您不能保证同一个web服务器将处理给定会话的每个调用-那么是的,SN的原则适用:您负担不起引入服务器关联性

但将这一点延伸到“每一个”网络应用程序简直是荒谬可笑


SN和所有其他架构一样,就像工具——它们是问题的解决方案;问题定义了解决方案,而不是相反。

就我在网店的经验而言,无共享架构比基于会话的架构更好。我已经有很多次对我的购物卡因为会话过期而消失感到非常恼火!不管是否使用AJAX,webapp至少应该将用户的选择存储在Cookie中,或者在可用的情况下,存储在HTML5存储和其他奇妙的机制中

然而,基于HTTP会话的应用程序也有它们的优点,特别是在服务器端为用户缓存资源时,这是一种昂贵的获取方式——对于负载沉重的业务逻辑事务系统来说是典型的。在许多情况下,混合溶液是最佳选择


所以我的答案是——这要看情况而定。您应该编写需求并选择最好的,而不是考虑您正在应用的模式或体系结构的名称:)

您可以使用分布式缓存(例如memcached)将会话数据存储在服务器端。

领先的云提供商提供的服务可能会让您了解如何在树级应用程序中实现SN。使用具有不同策略的负载平衡器可以帮助您将共享资源移动到它们自己的服务器,从而使您的应用程序服务器可用于网络。但关系数据库管理系统一直是SN的瓶颈

为了从数据库中卸载会话处理负载,内存缓存提供了帮助,因为数据位于RAM中,并且由Redis管理的弹性(例如)会话数据访问变得更快。应用程序和数据库服务器的文件存储由NAS解决,服务器可以安装到NAS,这有助于缓解HDD、SSD故障,并提供更快/更具弹性的IO。搜索活动也是RDBMS的负担。ElasticSearch可以从数据库中卸载搜索负载。可以做的另一个改进是在数据库前面使用内存缓存进行查询。如果一条记录自上次提取后没有更改,您可以简单地从缓存中提取它,而不是从数据库中提取

大多数情况下,读取查询不仅仅是更新/插入。在这种情况下,如果一个数据库无法处理读取负载,则可以创建数据库的多个读取副本


如果加载达到了即使使用读取副本也无法工作的阶段,那么最后一个选项是对数据库进行分片,这样您的业务就会很好,并且在分片时您将有资源来解决此问题。

“无共享”并不意味着“无会话”这是否意味着存储在db上的会话不会违反“无共享”原则?