有一段時間,在考慮下socket 之間集群 可以在Nginx 下可以 但是不同服務器之間怎么通訊呢 后來自己也想可不可以用什么東西或者中間件來通訊 ,后來在百度之下 發現果然就是按照我所想的 ,在網上看了一個方案,架構如下:
說一下這個方案他們之間的作用
redis : 存取用戶和服務器的關系,如果A想發一條數據,是發給B ,這時A發起一個mq訂閱模式推送的數據 ,然后B收到數據處理好 ,在推送給用戶就ok
mq : 是了橋接A和B 的之間的通訊
這樣A和B之間通訊就沒有問題了
以下是搭建過程
首先配置好nginx ,可以百度下載和安裝 ,我的路徑是如下 打開配置nginx.conf vim nginx.conf 配置如下
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream ws_name {
server 127.0.0.1:12345 weight=1; ## weight 權重越大越大獲取鏈接機會就越大
server 127.0.0.1:12346 weight=1;
}
server {
listen 9999;
server_name localhost;
location / {
proxy_pass http://ws_name/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
### 以下配置是為了解決在nginx 下 socket 短時間的斷開 ,即使你配置長鏈接也沒用 必須有如下的配置
proxy_connect_timeout 4s;
proxy_read_timeout 600s; #這個配置連接保持多長時間 這配置十分鍾 ,然后可以自己心跳來保證長鏈接
proxy_send_timeout 12s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
以上是nginx的配置 然后啟動就ok 啟動 命令 :./nginx
查看是否啟動 命令 ps -ef |grep nginx
然后 mq 我的mq是 activemq 這個可以百度看看怎么安裝 ,因為這個安裝比較簡單所以就不說太多了
接下來是代碼的實現了 。