去年(上周)一直准備着做一個分布式微服務的組件,可以讓使用者用最簡單的方式引入,只需要使用簡單的注解就能夠使用。
用一點一點的空閑時間終於堆出來一個暫時可用的zeus-1.0版本。
Zeus,意為宙斯,奧林匹斯十二主神之首,Zeus目前既定的主要功能是服務發現,負載均衡,服務調用,API監控,配置中心,服務治理,服務容錯。
目前完成的功能有服務注冊,服務發現,API監控以及RPC調用。
Zeus的使用方式非常簡單,你只需要在你的項目中引入jar包,或者maven地址就可以直接使用了,maven地址之后會用GitHub倉庫的方式來分享出來。
Zeus項目地址:
https://github.com/CasterWx/Zeus
Zeus-Jar包下載地址:
https://github.com/CasterWx/Zeus/releases
(希望可以幫忙推廣一下,這個項目對我很重要)
Rpc遠程調用
存在一個server-1,地址為localhost:8080,還存在一個server-2,地址為localhost:8090。
server-1中有一個方法,假如它的作用是查詢數據庫返回用戶信息,我們就可以給這個service類加上@RpcService(需要引入zeus-rpc.jar)方法來啟動遠程調用。
在server-2中如果我們想要調用server-1的doHello方法獲取用戶信息,就可以創建一個簡單的RpcClient來調用。
此時訪問這個/hello接口,可以得到遠程接口返回的json結果。
{"code":0,"data":["user-1","user-2","user-3"],"requestId":"1"}
RpcRequest中參數為消息ID,實例類,方法,參數類型列表,參數值列表。
服務注冊
引入zeus-client(client.jar)模塊,在項目中添加@ZeusRegistry注解即可。
@ZeusRegistry注解有四個參數。
- registryName :命名空間(集群管理)
- zkAddr :zookeeper地址
- serverName :服務名稱
- serverAddr :服務注冊地址
目前使用zookeeper來做注冊中心,是因為zookeeper本身比較強大,后期等到項目中netty模塊優化傳輸之后會去掉zookeeper。
服務發現
服務發現目前開放了兩個接口,一個是獲取所有集群,另一個是獲取指定集群下的所有服務。
使用上面的服務注冊標簽@ZeusRegistry注冊了你的服務之后,就可以調用服務中心的 /v1/node 接口來發現服務了。
Zeus-Server默認使用了5454端口,調用接口分別如下。
requestMethod : Get
獲取所有集群名。
{
"code":200,
"message":"OK",
"data":[
"user-center2","user-center1","user-center3"
]
}
requestMethod : Get
獲取指定集群下的所有服務節點信息。
response
{
"code":200,
"message":"OK",
"data":[{
"nameSpace":"user-center1",
"serverName":"server-1",
"data":"126",
"path":"/registry/user-center1/server-1"
}]
}
API監控
為你的方法或是API添加@FlowMonitor(name)注釋,你的該方法訪問將會得到記錄。
例如在之前rpc調用的接口上添加一個FlowMoniter就可以監控rpc的次數以及時間點了。
數據會暫時先放在guava緩存中,定量會使用異步的方式上傳到zeus-server做報表處理,這一部分暫時還沒有做。
還有很多功能正在開發中~