我想使用節點HTTP代理來創建一個「最少連接」代理。換句話說,它選擇一個當前連接最少的後端。代理有一個「結束」事件,但它不會傳遞給你任何信息,所以我不知道如何用當前的併發請求數來增加/減少我的每個後端的計數器。節點HTTP代理最少連接代理
1
A
回答
2
我想你可以等待響應已被髮送到客戶端。
例如:
var backends = [
{ host : 'backend1', port: 80, active : 0 },
{ host : 'backend2', port: 80, active : 0 },
{ host : 'backend3', port: 80, active : 0 },
{ host : 'backend4', port: 80, active : 0 },
];
httpProxy.createServer(function (req, res, proxy) {
var buffer = httpProxy.buffer(req);
// Pick the backend with the least active requests (naive implementation).
var backend = backends.sort(function(a, b) {
return a.active - b.active;
})[0];
// Add a new active request.
backend.active++;
// Proxy the request.
proxy.proxyRequest(req, res, {
host : backend.host,
port : backend.port,
buffer : buffer
});
// When the response is finished, decrease the count.
res.on('finish', function() {
backend.active--;
});
}).listen(8000);
+0
謝謝!我可能會在proxy.proxyRequest()之前設置res.on('finish'),以防止在設置回調之前res完成。 – Dave
+0
@戴夫這不是絕對必要的([這個答案](http://stackoverflow.com/a/11614706/893780)解釋了爲什麼):) – robertklep
+0
謝謝,現在讓很多我更有意義! – Dave
相關問題
- 1. 使用節點連接的HTTP代理
- 2. 使用節點http代理代理websocket連接
- 3. 節點HTTP代理查找代理URL
- 4. 節點http代理和HTTPS
- 5. 安裝節點HTTP代理
- 6. HTTP代理連接共享
- 7. 節點HTTP代理/ HTTP代理中間件 - 你如何操縱代理響應
- 8. 如何代理根路徑與節點的http代理
- 9. 節點HTTP代理 - 基本反向代理不起作用(404)
- 10. AWS ELB v.s.負載均衡節點http代理反向代理
- 11. 節點http代理SSL透明
- 12. 路由器在節點http代理
- 13. .NET等價於節點http代理
- 14. 代理http請求與節點
- 15. 代理連接的HTTP/s流
- 16. HTTP組件無法連接到代理
- 17. nginx 1.2.0 - socket.io - HTTP/1.1 - 代理websocket連接
- 18. 將代理連接到Charles代理
- 19. HTTP代理與代理
- 20. iphone代理連接
- 21. Java代理連接
- 22. Kubernetes代理連接
- 23. HTTP/S代理起點
- 24. 節點http-server在使用代理時異常停止錯誤:連接EHOSTUNREACH
- 25. 節點代理 - 代理從基本的HTTP服務器SSL localhost目標
- 26. Cassandra添加節點:opscenter代理未連接
- 27. 節點代理錯誤錯誤:連接ECONNREFUSED
- 28. 將DCOS代理節點重新連接到DCOS
- 29. F5 iRule來管理HTTP代理連接請求
- 30. NodeJS HTTP代理?
相當肯定沒有什麼在那裏,可以做到這一點 - 你可能就會有自己的WebSockets使用來構建它。或者,你看過[衛星](https://npmjs.org/package/satellite)嗎? – brandonscript
感謝指向衛星的指針。最後,我還要有這個管理本地主機上的進程(可能是java,節點等),並有周圍循環利用它們,等等一些其他的功能...這樣的衛星碼會很好看在。 – Dave