使用node.js作爲tcp服務器,我將管理相對大量的GPS設備(〜3000設備),並將第一步存儲到數據庫中,即使在這個階段,我設想一些困擾我的表現問題,我想在他們咬我之前抓住他們。Node.js GPS設備跟蹤性能注意事項
1 - 考慮使用的語言,如的Java或紅寶石書面相似服務器我看到如下一段代碼:
的Java
Thread serverThread = new Thread(() -> {
System.out.println("Listening to server port 9000");
while (true) {
try {
Socket socket = serverSocket.accept();
...
紅寶石
require 'socket'
server = TCPServer.new ("127.0.0.1",8080)
loop do
Thread.start(server.accept) do |client|
...
看起來他們給每個連接到tcp服務器的設備(套接字)提供單獨的線程?由於node.js是單線程的並且是異步操作的,我應該關注傳入連接還是類似以下簡單方法會滿足大量同時連接?
net.createServer(function(device) {
device.on('data', function(data) {
// parse data
// store in database
});
});
2 - 我應該使用連接池來限制數據庫連接嗎?由於數據庫也從另一端查詢GIS和監視,池大小應該是多少?
3 - 我如何在這樣的系統中獲得緩存(例如使用redis)?
如果有人對這個想法有所瞭解,那該多好。我還樂意聽取您在實施此類系統時可能會遇到或意識到的其他表現問題。謝謝。
完整的問題,但爲什麼使用套接字而不是週期性的http請求? – Festo
@Festo,我只是可以在TCP層與GPS設備進行通信,在這一層,我明確應該使用套接字與設備進行通信,在http服務器中,我可以使用定期請求,但由於數據是實時的,我還會使用套接字。 – dNitro