当前位置: 首页 > 知识库问答 >
问题:

服务器端应用程序的可扩展性,最佳方法

贺正祥
2023-03-14

我正在编写一个服务器端应用程序,它将管理来自以下位置的请求:

  • 游戏客户端
  • 网站(HTTP请求)
  • API

到目前为止,我只对每种类型的请求使用一个(NodeJS)应用程序,问题是随着用户群的增长,这种方法将产生瓶颈。

我想要一些关于如何开发服务器架构的建议,以便它具有可扩展性。

我知道的唯一解决方案是使用运行相同应用程序的多台服务器,它们将共享相同的内存(Redis服务器)。

在nodeJS中,是否可以将这些类型的请求的管理拆分为多个服务器?对于每种类型的请求,可能需要一个或多个服务器?

目前我正在使用:

  • 节点
  • 雷迪斯
  • 我的学习障碍
  • 表达
  • Socket.io

提前谢谢,你能推荐一些关于这件事的书吗?

共有1个答案

孔宇
2023-03-14

在一台机器上处理多核架构的强大功能,您可以使用node.jsCluster模块(https://nodejs.org/api/cluster.html)。

我认为在不同的应用程序上拆分API和网站是一个好主意。如果您决定在一台机器上运行多个node.js应用程序,请尝试使用< code > PM2 (http://PM2 . key metrics . io/)。你可能会把你的API拆分成一堆小的应用——这叫做微服务架构。我个人不喜欢微服务的方法,你可以在网上查找利弊。

此外,如果您将应用程序(或一组应用程序)部署在不同的虚拟/仿冒计算机上(这在生产中很常见),您可以使用haproxy进行平衡和容错(http://www.haproxy.org/).

 类似资料:
  • 后端使用Spring Data+Spring MVC。 谢谢你。

  • 我有两个问题,我找不到任何流行/广泛接受的解决方案: > 使用Java程序启动zookeeper服务器最简单的方法是什么? 而且,是否可以将服务器添加到zookeeper集群,而无需手动转到每台机器并使用新节点的id和ip:端口条目更新其配置文件? 有人能帮忙吗?谢谢。

  • 我对如何开发大型Web应用程序有些怀疑。经过一番研究,我想到了一些想法: 1: 用能够处理大量并发请求的语言开发前端。将前端理解为负责将页面交付给客户的模块/服务。 2:使用Nodejs作为前端语言(Go语言不是这里的选项)。 3: AJAX将向后端模块发出请求,服务器必须重定向到适当的模块。 4:后端被分成模块/服务,使用技术(编程语言)更好地供每个模块/服务使用。 5:每个模块都有自己的服务器

  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • 问题内容: 我正在制作一个Android应用程序。因为它是如此简单,所以我首先想到我可以简单地消除充当中间件的服务器上对Java应用程序的需求。我尝试使用MySQL的JDBC驱动程序直接连接到数据库,但是我的程序崩溃了,所以我不确定Android是否“支持” MySQL的JDBC驱动程序。 因此,我正在考虑如何实施该应用程序。基本上,应用程序从远程MySQL数据库写入一些数据,并从远程MySQL数

  • 我试图在Netty 4.0中实现一个服务器应用程序,它通过TCP/IP Socket与客户端通信。一旦建立连接,客户端将进行初始连接。服务器将每隔X分钟向客户端发送一个ping消息,每个客户端的X可能不同。一旦客户端成功获得“ping”,客户端将尝试上载/传输文件到服务器。服务器接收文件,并将其写入磁盘。 我想知道在Netty中做这件事的最佳方法是什么,主要是调度部分(在cron基础上发送ping