Zeus,一個可以快速使用的微服務組件


去年(上周)一直准備着做一個分布式微服務的組件,可以讓使用者用最簡單的方式引入,只需要使用簡單的注解就能夠使用。

用一點一點的空閑時間終於堆出來一個暫時可用的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端口,調用接口分別如下。

http://localhost:5454/v1/node/namespaces

requestMethod : Get

獲取所有集群名。

{
  "code":200,
  "message":"OK",
  "data":[
    "user-center2","user-center1","user-center3"
  ]
}

http://localhost:5454/v1/node/server?namespace=param

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做報表處理,這一部分暫時還沒有做。

還有很多功能正在開發中~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM