Author: admin

使用四种框架分别实现百万websocket常连接的服务器

使用四种框架分别实现百万websocket常连接的服务器

目录 [−]

  1. 服务器的参数调优
    1. TCP/IP参数配置
    2. 最大文件描述符
    3. 应用运行时调优
    4. OutOfMemory Killer
  2. 客户端的参数调优
  3. 服务器测试
    1. Netty服务器
    2. Spray服务器
    3. Undertow
    4. node.js
  4. 参考文档

事实上,最近我又增加了几个框架,现在包括 Netty, Undertow, Jetty, Spray, Vert.x, Grizzly 和 Node.js七种框架。
测试数据可以看下一篇文章: 七种WebSocket框架的性能比较

著名的 C10K 问题提出的时候, 正是 2001 年。这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务这个问题,当时因为硬件和软件的限制,单机1万还是一个非常值得挑战的目标。但是时光荏苒,随着硬件和软件的飞速发展,单机1万的目标已经变成了最简单不过的事情。现在用任何一种主流语言都能提供单机1万的并发处理的能力。所以现在目标早已提高了100倍,变成C1000k,也就是一台服务器为100万连接提供服务。在2010年,2011年已经看到一些实现C1000K的文章了,所以在2015年,实现C1000K应该不是一件困难的事情。

本文是我在实践过程中的记录,我的目标是使用spran-websocket,netty, undertow和node.js四种框架分别实现C1000K的服务器,看看这几个框架实现的难以程度,性能如何。开发语言为Scala和Javascript。

当然,谈起性能,我们还必须谈到每秒每个连接有多少个请求,也就是RPS数,还要考虑每条消息的大小。
一般来说,我们会选取一个百分比,比如每秒20%的连接会收发消息。我的需求是服务器只是push,客户端不会主动发送消息。

用 Shared Workers减少 WebSocket 连接数

支持中经常提出的一个问题是如何减少并发 Pusher 连接并避免与您的计划相关的任何限制。鉴于每当您的页面在新选项卡中加载时都会创建与我们的 API 的新连接 - 如果客户可以跨多个选项卡共享单个连接,这将对客户非常有利。解决方案?在共享工作线程中使用 Pusher ,我们可以为每个浏览器窗口仅保留一个 Websocket 连接。这样,如果您的用户在多个选项卡中打开您的应用程序,您就可以保持较低的连接数。这篇博文将为您提供有关如何设置的分步指南。如果您在任何时候遇到困难,请随时查阅我们在 Github 上的示例

        

安装 github package时出现 403 禁止错误解决

npm ERR! 403 403 Forbidden - GET https://npm.pkg.github.com/@ltts-dtp-appstudio%2fform - Permission permission_denied: The token provided does not match expected scopes.

安装 github package时出现 403 禁止错误解决

 

感谢所有试图在这方面帮助我的人。此问题已得到解决。在我想要安装包的应用程序中,我在根路径中创建了一个 .npmrc 文件并将这部分添加到该文件中

@username:registry = https://npm.pkg.github.com/ //npm.pkg.github.com/: _authToken = token

这里的 username 替换为您的用户名,at token -

Git忽略规则(.gitignore配置)不生效原因和解决

第一种方法:
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。…

    

为什么 Rust 是开发者中最受推崇的语言

Rust 作为最受开发者推崇和渴望的语言继续位居榜首,在这篇文章中,我们将更深入地探讨 Rust 如何(以及为何)赢得世界各地开发者的青睐。

在Stack Overflow 的年度开发者调查中, Rust连续第八年位居“最受欢迎的编程语言”榜首。超过 80% 的开发人员表示他们希望明年再次使用该语言,您不得不想知道一种不到 20 年前创建的语言如何俘获了世界各地开发人员的心。

在本文中,我们将了解 Rust 的历史、它的常用用途、为什么开发人员如此喜爱它,以及一些可帮助您开始学习 GitHub 上增长最快的语言之一的资源

ServiceWorker、MessageChannel 和 postMessage

上周我写了一篇关于渐进式网络的缓存策略的文章,该策略首先使用缓存,然后进入网络,在网页之间共享消息并ServiceWorker协调对缓存内容的更新。swivel今天我将描述用于简化 ServiceWorkers 消息传递的库的内部工作原理。

事实证明,您可以通过多种不同的方式在 aServiceWorker及其控制的网页之间共享消息。
  • 客户端可能想要向a 发送消息ServiceWorker、询问某事或通知某事– 这是“单播”(1 对 1)
  • A可能想要向客户端ServiceWorker发送回复– 单播
  • AServiceWorker可能想要向其控制下的每个客户端发送更新– 一条“广播”(一对多)消息
  • AServiceWorker可能想要向发起请求的客户端发送更新– 单播