根據以前的命名服務,從新構建了下服務框架; 結構模式;c-center-s; 1.服務端: 服務端啟動,講自己的IP,埠註冊到註冊中心節點(master),然後註冊自己的處理類(需要繼承對應介面); 同時需要設置服務類型(是否是主從服務,如果是主從服務還需要設置自己是否是master); 如果不是 ...
根據以前的命名服務,從新構建了下服務框架;
結構模式;c-center-s;
1.服務端:
服務端啟動,講自己的IP,埠註冊到註冊中心節點(master),然後註冊自己的處理類(需要繼承對應介面);
同時需要設置服務類型(是否是主從服務,如果是主從服務還需要設置自己是否是master);
如果不是主從服務則中心採用hash負載均衡進行服務調度;
同時有心跳給註冊中心;
2.註冊中心
啟動註冊中心,註冊中心是主從方式存在,啟動時選舉自己為master;然後接收其餘註冊中心回應,2秒沒有收到則認為自己是master進行發佈,收到master的回覆則更新信息;
master節點實時有心跳;
主要工作:
1.判斷服務狀態是否可以用,調度服務;
主從服務時判斷master服務,進行數據處理;
多服務認為是需要選擇調度,則使用均衡方式;
2.負載均衡服務,調度服務;
3.判斷註冊中心master節點,隨時準備選舉新master
3.客戶端
客戶端直接向註冊中心請求:1.請求服務地址,直接與服務通訊 2.請求數據傳輸,直接由中心傳遞數據 ;同時需要設置是否需要回執數據;
4.通訊
整個框架考慮到數據實時傳輸,大數據量處理,直接採用udp通訊;提供了高層封裝;
封裝的通訊層使用了數據分包,按照udp適合的傳輸包大小設置,你也可以自己調用介面設置分包大小;每包分配了一個ID,同時一次傳輸認為是一個session,分配seesion的id;
接收端按照數據接收,同時有包丟失時會再次向發送端請求再次發送;
接收端設計了接收發送;
發送端進行了數據緩存,記憶體中緩存一定時間,接收到接收端完成的ack就清除,否則保持1分鐘;直到記憶體耗盡;
如果是註冊中心,數據記憶體緩存到期還會緩存到本地資料庫中(持久化),在本地保持最近10分鐘數據;都是timer清除;
採用udp同樣也是基於框架功能,不需要連接,可以在使用時可以直接反向發送數據;也可以不發送;
整個通訊已經測完成;
5.使用包
本框架使用了goolge工具包guava-22.0,界面庫JTattoo-1.6.11,公共序列化包fastjson-1.2.9;持久化資料庫BerkeleyDB