什么技术可以用于一个应用程序,为小型资源受限的主机(例如Rasbperry Pi或类似的)上的许多并发用户提供服务?
也就是说,它不需要像Apache这样的通用Web服务器,因为它只需要支持一个应用程序和几个活动的网页,但是需要多个连接。
我了解大型服务器上的Apache / PHP / MySQL,但是这似乎需要太多的资源来支持在一个小型主机上同时进行多个连接(每秒连接100个) – 每个连接在其自己的副本中冗余加载相同的解释码。
我想,例如,跳过通用Web服务器,并有一个内存驻留编译C + +程序,服务许多并发HTTP连接 – 重量轻,速度快。 应用程序将相当简单。 或者可能是轻量级Web服务器的附件或模块。 或者,也许像node.js,如果这是非常节约资源,即使在一个小主机容易扩展。 我甚至不知道我正在寻找的编程风格的术语或关键字,因此我的问题。
我尝试了StackOverflow,build议树莓派交换,build议交换。 任何提示或线索?
不需要像Apache这样的通用Web服务器
寻找一个轻量级的 Web服务器,如Mathopd , thttpd , Lighttpd 。
一个内存驻留编译的C ++程序,它为许多并发的HTTP连接提供服务 – 重量轻,速度快
“用于UN X系统的一个快速,轻量级,非分支HTTP服务器 ”*在小于4K LoC的C – Mathopd中。
许多同时(例如100的顺序)连接
显然地
我认为你的主要select是节点和golang。 表面上,Go会根据性能获得胜利, https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang= go &lang2=node ,然而取决于你正在编写的程序的复杂性,你需要的节点的可靠性可能是足够高效的,编写一个简单的程序肯定更容易。
我会研究这两个选项写一个简单的程序和testing,看看哪个最适合你的用例。
如果您的站点是静态的,那么使用CDN将允许您在树莓派上为成千上万的客户端提供服务。 CDN将获取页面并caching它们给你。 只有当您更改页面时,CDN才能再次获取它们。
如果只有部分网站是dynamic的,可以采用混合方式。 使站点成为最可能的静态,并使用Ajax来检索已更改的数据。 只用一个用户数据检索一个小json比使用检索整个HTML页面的资源less。 客户端脚本将获取dynamic数据,并在浏览器上呈现HTML。 拥有由CDN托pipe的静态部分。
正如其他人指出的,你不需要Apache在小型设备上的小型站点。 除了Mathopd,thttp和lighthttpd,你可以试试Nginx , Hiawata , Monkey Server , kHTTP Server , libmicrohttpd 。
Flask是一个用于Web开发的轻量级Python框架。 这可能工作,这取决于你的意思是“很多”。