- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果您对许多用户(和服务器)设置了复杂的要求,那么您的websocket基础架构(服务器)将如何扩展,尤其是在广播方面?
当然,广播不是任何websocket规范的一部分,但即使在基本的聊天示例中(也就是websocket的hello世界),广播都是存在的。
客户端(寻求新数据)解决方案似乎仍然比服务器端(广播)解决方案更具可扩展性,因为Websockets的延迟低且相对便宜(无HTTP header )。
编辑:
好的,只是认为您想用websocket实现替换所有的ajax代码,这可能意味着在这么多不同的上下文中有那么多的连接。如果要跟踪广播的每种可能情况,这将给您的系统增加极大的复杂性。
低级(网络/线程等)实现建议也是问题的一部分,而不是解决方案,因为这意味着您必须编写与常规http服务器不同的特殊服务器代码。
而且,广播给 table 带来了某种状态性,这很难扩展。考虑添加更多服务器和负载平衡。
最佳答案
扩展实时Web解决方案可能是一个复杂的问题,但Pusher(我为之工作)之类的服务已经解决,并且为self hosted realtime web solutions定义了绝对肯定的解决方案是一个问题-PubSub paradigm已广为人知,并且已经按顺序解决了很多次要解决该问题,需要有某种状态(谁在订阅什么)。此范例用于广播您正在谈论的场景类型。
建立实时网络技术时要牢记大量的同时连接-许多都是从头开始的。如果要创建可伸缩的解决方案,则很可能会使用支持WebSocket的现有实时Web服务器,其方式与您不太可能决定实现自己的HTTP Server一样,不太可能希望实现自己的服务器从头开始支持WebSockets。
专用的实时Web服务器还使您可以将应用程序逻辑与实时通信机制分离(关注点分离)。您的应用程序可能需要维护一些状态,但是实时技术需要处理订阅和连接的管理。如何实现应用程序与实时Web技术之间的通信取决于您,但经常使用消息队列,特别是redis在该领域非常流行。
从概念上讲,HTTP轮询可能更容易理解-您可以保持无状态,并且在每个HTTP轮询请求中都可以精确指定要查找的内容。但这绝对意味着您需要更快地开始扩展(添加更多资源来处理负载)。
WebSocket轮询是我以前从未考虑过的事情,而且我认为我也从未在任何地方看到过它的建议。客户应该说“我已经准备好我的下一组数据,这就是我想要的”这一想法很有趣。 WebSocket通常已从请求/响应范例中脱颖而出,但是在某些情况下,提高WebSocket的效率和使用它们的请求/响应可能会带来一些好处。 SocketStream应用程序框架可能是值得一看的,因为它可能是相关的。初始应用程序加载后,所有通信都通过WebSocket执行,这意味着事件基本请求/响应功能使用WebSocket。
但是,由于我们正在谈论广播数据,因此我们需要回到PubSub范例,在该范例中拥有事件订阅更为有意义,并且当有新数据可用时,会将新数据分发给这些事件订阅(推送)。您的应用程序所有需要知道的是是否有任何事件的订阅,以便决定是否发布数据。这个问题已经解决了。
关于scalability - Websocket可扩展性,广播问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779492/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
P-Scalbility 度量是衡量分布式系统可扩展性的方法。我努力在谷歌中找到它的公式。但是在任何地方都找不到它。 如果有人知道,请解释或提供我可以理解该公式的公式详细信息或资源。 感谢期待。 最佳
我阅读了不同的主题,但从未得出明确的结论,在案例 A 或案例 B 上使用 user-scalable=no 有什么区别、优点和缺点? 我要做一个响应式网站,哪种情况比较好? 案例 A: 案例 B:
这意味着什么 - 将可扩展性工程化到应用程序中。是否存在可以使应用程序更具可扩展性的设计模式?这个问题主要是在 Web 应用程序或基于 SOA 中间件的应用程序的上下文中。 最佳答案 当我想到“大规模
我试图通过添加“图像服务器”(用于处理图像请求的专用服务器)并将对 .gif、.jpg、.png 等的所有请求重定向到它来减少我的网络服务器的负载。 我的问题是,处理重定向的最佳方法是什么? 在防火墙
我很想知道是否有关于并行代码是否可扩展的正式定义,或者它是否只是一个时髦的词?如果我将串行壁时间测量为 t_S,将并行壁时间测量为 t(P),那么我可以将效率定义为 E(P) = t_S/(t(P)
我正在考虑使用 Amazon RDS与 read replicas扩展我们的数据库。 我们的 Web 应用程序中的一些 Controller 是读/写的,其中一些是只读的。我们已经有了一种自动识别哪些
作为程序员,我每隔几年就会做出革命性的发现。在阶段中,我要么领先于曲线,要么落后于曲线π。我学到的一个艰苦的教训是,向外扩展并不总是更好,通常,当我们重新组合和扩展时,最大的性能提升就是。 您有什么理
我正在阅读 twitter (http://engineering.twitter.com/2010/04/introducing-gizzard-framework-for.html) 最近发布的
ZeroMQ的可扩展性如何?我对了解其在大量(10,000-15,000)内核上运行的潜力特别感兴趣。 最佳答案 我们试图使它尽可能地可扩展,但是我个人最多只在16个核心盒上进行了测试。达到这个极限,
我听说有人说他们制作了一个可扩展的 Web 应用程序。 什么是缩放? 开发人员可以做些什么来使他们的应用程序可扩展? 开发者在扩容过程中关注的因素有哪些? 有关使用 asp.net 和 sql ser
社交网站可能会为用户、 friend 和事件维护表格...... 他们如何使用这些表以高效且可扩展的方式计算好友事件? 最佳答案 许多社交网站(如 Twitter)根本不使用 RDBMS,而是使用 M
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 2 年前。 Improv
Seaside被称为“异端网络框架”。使它成为异端的原因之一是它有很多共享状态。然而,根据我目前的理解,这阻碍了轻松扩展。 另一方面,Ruby on Rails 共享尽可能少的状态。众所周知,它的扩展
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
facebook、skype、myspace 等......都拥有数以百万计的用户,有谁知道他们的架构是什么样的。是分布在不同的节点上还是使用大规模集群? 最佳答案 查看下面的链接,了解 Amason
是否有一个键值存储会给我以下内容: 允许我简单地添加和删除节点并自动重新分配数据 允许我删除节点并仍然有 2 个额外的数据节点来提供冗余 允许我存储最大 1GB 的文本或图像 可以存储高达 100TB
假设我们在服务器 A 上有 3Gb 键值存储。我开始觉得我们需要另一台服务器(服务器 B)。因此,我必须将服务器 A 数据分离到碎片(服务器 A、服务器 B)上,但是……服务器 A 上的所有键当前都按
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我们即将从一个内容丰富的网站开始,我们正在考虑使用 Dotnetnuke。 与联合国网站(http://www.un.org/en/index.shtml)相比,该网站将是多语言的 问题是:DotNe
我是一名优秀的程序员,十分优秀!