最近在做分布式的系統,使用netty與mq進行遠程RPC調用,現將心得經驗總結一下。
我們公司的服務器在雲端機房,在每一個店面有一個服務器,店面服務器外網無法訪問。
我們的做法是店面服務器在啟動時與雲服務器建立長鏈接,這樣兩台服務器之間可以雙向通信。
不過使用netty做RPC代碼量偏多,業務比較復雜時代碼維護稍微復雜,所以后來新的接口我嘗試
使用MQ來代替netty進行通信。使用MQ之后代碼相對減少,也不用定時發送心跳來保持長鏈接,還可以將
消息持久化。
不過任何東西都有兩面,現對比一下兩者優缺點:
1. 使用netty的優缺點:
優點:高效、穩定、
缺點:代碼量稍多、要維持長鏈接、消息如果要持久化需要單獨處理
2. MQ的優缺點:
優點:編程簡單、消息可持久化
缺點: 可能要搭建單獨的MQ服務器、穩定性不高、效率偏低
個人覺得如果需要高效穩定的接口還是用netty,對於同一個接口本人經測試使用netty的話
平均在80ms左右,而卻波動較小,換成mq的話接口執行時間波動比較大,平均執行時間
也偏長。