使用 node.js 作为 TCP 服务器,我将管理相对大量的 GPS 设备(~3000个设备),作为第一步仅会将收到的数据存储在数据库中,但即使在这个阶段,我想象中也会有一些性能问题困扰着我,我希望在它们给我带来麻烦之前就能够解决掉它们。
1- 查看使用像 java 或 ruby 这样的语言编写类似服务器的代码时,我看到了以下的代码:
1- 查看使用像 java 或 ruby 这样的语言编写类似服务器的代码时,我看到了以下的代码:
java
Thread serverThread = new Thread(() -> {
System.out.println("Listening to server port 9000");
while (true) {
try {
Socket socket = serverSocket.accept();
...
ruby
require 'socket'
server = TCPServer.new ("127.0.0.1",8080)
loop do
Thread.start(server.accept) do |client|
...
看起来他们为每个连接到tcp服务器的设备(socket)提供了单独的线程?由于node.js是单线程且异步操作,我应该担心传入的连接或者像以下简单方法一样能满足大量同时连接的需求吗?
net.createServer(function(device) {
device.on('data', function(data) {
// parse data
// store in database
});
});
2 - 我应该使用连接池来限制数据库连接吗?因为数据库还会从GIS和监控的另一侧查询,所以连接池的大小应该是多少呢?
3 - 在这样的系统中,我如何受益于缓存(例如使用redis)?
如果有人能为这些想法提供一些启示,那就太好了。我也很愿意听听您在实现这样的系统时可能经历或了解到的任何其他性能方面的想法。谢谢。