- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法完全无状态的大型网站如何在 Web 层实现极致的可扩展性?
有像 eBay 和亚马逊这样的网站,它们不能完全无状态,因为它们有购物车或类似的东西。将购物车中的每件商品都编码到 URL 中是不可行的,将每件商品编码为 cookie 并在每次连接时发送它也是不可行的。所以亚马逊只是将 session ID 存储到正在发送的 cookie 中。所以我明白 eBay 和 Amazon 的 web 层的可扩展性应该比谷歌搜索引擎的可扩展性难得多,谷歌搜索引擎的所有内容都可以被编码到 URL 中。
另一方面,eBay 和亚马逊的规模都非常庞大。有传言说 eBay 上有大约 15000 个 J2EE 应用服务器。
这些站点如何同时处理:极端的可扩展性和状态性?由于站点是有状态的,所以做一个简单的 DNS 平衡是不可行的。所以人们会假设这些公司有一个基于硬件的负载平衡器,比如 BigIP、Netscaler 或类似的东西,它是该站点单个 IP 地址背后的唯一设备。此负载均衡器将解密 SSL(如果已编码),检查 cookie 并根据该 cookie 的 session ID 决定哪个应用程序服务器保存该客户的 session 。
但这不可能工作,因为没有一个负载平衡器可以处理数千个应用程序服务器的负载?我想即使是这些硬件负载平衡器也不会扩展到这样的水平。
此外,负载平衡对用户来说是透明的,即用户不会被转发到不同的地址,但仍会一直集中在 www.amazon.com 上。
所以我的问题是:是否有一些特殊的技巧可以实现诸如 Web 层(而不是通常所做的数据库层)的透明分片之类的事情?只要不检查 cookie,就无法知道哪个应用程序服务器正在保存此 session 。
编辑:我意识到,如果需要对站点进行爬行和书签,则只需要透明度。例如。如果该站点仅仅是一个 Web 应用程序,例如飞机或火车票预订系统,那么只需将用户重定向到不同 url 后面的特定 Web 服务器集群应该没有问题,例如a17.ticketreservation.com。在这种特定情况下,只使用多个应用服务器集群是可行的,每个集群都在自己的负载均衡器后面。
有趣的是,我没有找到使用这种概念的网站。
编辑:我发现了这个概念 discussed在 highscalability.com ,这里的讨论引用了朱磊的一篇名为的文章。 "Client Side Load Balancing for Web 2.0 Applications" .朱磊使用交叉脚本来透明地进行客户端负载均衡。
即使有缺点,比如书签、xss 等,我确实认为这对于某些特殊情况来说听起来是一个非常好的主意,即几乎没有内容的 Web 应用程序,不需要被蜘蛛或书签(例如订票系统或类似的东西)。这样就不需要透明地做负载均衡了。
可能有一个从主站点到服务器的简单重定向,例如从 www.ticketreservation.com 重定向到 a17.ticketreservation.com。从那里开始,用户停留在服务器 a17。 a17 不是服务器,而是集群本身,通过它可以实现冗余。
初始重定向服务器本身可能是负载均衡器后面的集群。通过这种方式,可以实现非常高的可扩展性,因为 www 背后的主要负载均衡器仅在每个 session 开始时被命中一次。
当然,重定向到不同的 url 看起来非常讨厌,但是对于单纯的 Web 应用程序(无论如何都不需要蜘蛛网、深度链接或深度书签),这应该只是用户的视觉问题吗?
重定向集群可以轮询应用集群的负载并相应地调整重定向,从而实现平衡而不仅仅是负载分配。
最佳答案
您可能会发现以下论文很有用,该论文介绍了高度可用的键值存储系统的设计和实现,亚马逊的一些核心服务使用该系统来提供“永远在线”的体验:
Giuseppe DeCandia、Deniz Hastorun、Madan Jampani、Gunavardhan Kakulapati、Avinash Lakshman、Alex Pilchin、Swami Sivasubramanian、Peter Vosshall 和 Werner Vogels,“ Dynamo: Amazon's Highly Available Key-Value Store ”,在第 21 届 ACM 操作系统原则研讨会论文集,华盛顿州史蒂文森,2007 年 10 月。
关于design-patterns - 分片(原文如此!)Web 层以防止负载均衡器瓶颈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215347/
在 Web 应用程序架构设计期间,我必须从概念上计算我的服务器之一可以服务多少个当前客户端。然后我可以预算它。 那么,有什么公式可以遵循吗?或者,你如何计算这个?或者,通常,一个 httpd/tomc
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我正在使用 Angular 5,我正在尝试在加载 div 的背景图像时获取加载图标。 如果它是一个普通的 img,我对此没有问题,但如果我尝试将它作为背景,它就不起作用。 这里是一些示例代码 app.
我们怎么知道我们的程序在 CPU 上有多少负载? 我尝试使用 htop 找到它。但是 htop 不会给 cpu 负载。它实际上给出了我程序的 cpu 利用率(使用 pid)。 我正在使用 C 编程,L
我们发现从Spark 1.3到当前的Spark 2.0.1以来,从Oracle数据库使用Spark的API加载数据一直很慢。典型的代码在Java中是这样的: Map options =
我有时会收到 mnesia overloaded主要使用时的错误消息 async_dirty查询和 ram_copies表。所以为了了解发生了什么,我想获得更多关于 mnesia 状态的信息,例如每秒
对于通常使用很少 CPU 的程序来说,内核 CPU 非常高。 Linux 机器在状态之间交替。大多数时候,程序使用低 CPU 正常执行。在 CPU“激增”期间,程序使用 100% 可用 CPU 使用高
我正在使用 Raspberry Pi 2 来路由 wifi-eth 连接。因此,从 eth 方面来看,我有一台可以使用 Pi wifi 连接到互联网的计算机。在 Raspberry 上我启动 htop
基本上我有一个网页,其中有一个 iframe 可以从不同的域加载另一个网页。它移动得很慢,我想证明整个页面很慢只是因为 iframe 内的页面。 有什么方法可以测量总页面负载以及总页面负载中有多少%来
我们有一个基于 Spring 的应用程序,它充当使用其他 Rest API 的编排层。我只想测试这个组件的性能,而不测试正在使用的下游 api。 我正在寻找有关如何完成此操作的任何架构建议? 当前的方
我正在学习 hibernate 。为了进行测试,我使用无效 key 调用了 session.load 。当我在调试器(JB Idea)中跨过该行后,没有任何反应 - 我预计会得到 ObjectNotF
我正在开发一个小型的待办事项 PHP 应用程序。我正在使用 jQuery 构建 HTML。其中一个是一个按钮,用于启动一个模式,允许用户编辑该项目。我很好奇加载数据时更好的方法是什么: 1) 在初始加
我尝试在 twitch 播放器中使用 angular 作为覆盖标记。 我将 ng-repear 与(键,值)结合使用。 //player is here 设置是一个全局对象。但是当我尝试加载页面
我即将了解 C 语言中的特定进程如何在特定时间范围内加载 CPU。该进程可能会在运行时切换处理器核心,因此我也需要处理这个问题。 CPU为ARM处理器。 我研究了从标准顶部获取负载的不同方法,perf
这个问题在这里已经有了答案: XMLHttpRequest Origin null is not allowed Access-Control-Allow-Origin for file:/// t
您好,我正在用 Java 开发负载平衡算法。在我的系统中将有一个主节点和 n 个从节点。主节点将接收查询分发给它的从节点。但是在将查询分发到其从节点之一之前,我想测量从节点中的当前负载,以检查特定从节
我正在渲染由大约 50 万个三角形组成的相当重的对象。我使用 opengl 显示列表,在渲染方法中只调用 glCallList。我认为一旦图形基元被编译成显示列表,cpu 的工作就完成了,它只是告诉
我正在尝试加密 Sipdroid,为此我必须在 RTP 数据包获得编码的音频负载后对其进行加密。我在 RTP 数据包类中使用这个函数: public byte[] getPayload() {
我正在尝试解析以下 JSON 负载: { "results":[ [ 298.648132, 280.68692, 356.54
在动画期间 cpu 负载非常高(高达 75%) 是否有优化代码以降低 CPU 负载的方法? 我的代码: ImageView myImageView = (ImageView)findViewById(
我是一名优秀的程序员,十分优秀!