orleans集群及負載均衡實現

  • 2022 年 1 月 15 日
  • 筆記

netcore6項目,微服務框架選orleans ,國內似乎沒什麼項目在用,坑多無資料。
orleans文檔可以解決幾乎,只能看官方資料。

Introduction | Microsoft Orleans 中文文檔

服務異常客戶端怎麼接收,鏈接釋放,內存泄露等各種問題都迎刃而解。
早先弄了幾個服務測試,發現同一個請求或者同幾個請求,都只集中在一個服務上,而且不管服務多耗時間,都是無限等待一個請求完再下一個,除非一個掛了,下一個就頂上。這顯然不是想要的效果
(這裡的服務是cpoy改文件就行)。這就是遇到無法負載均衡的問題
,網上翻遍資料,源碼test過了一遍,除了Azure提到了無關緊要的負載,已無辦法可尋。
晚上打王者突然有了靈感,既然外面獲取不到,不如自己創造條件。
很早想過用consul,但是它不是http請求那麼簡單,所以以自己的能力行不通。那想做負載,為什麼不弄幾個一樣的服務呢,在客戶端隨機或者循環請求幾個服務,而服務的接口應該是一模一樣的,只是看起來像不同的服務而已。
結果比想的還要簡單,只需要做配置端口,後面請求不需要自己手動去輪詢或者隨機。
這,也是最終的辦法了,雖然會多出來幾個服務。(這裡是實實在在的新建服務,代碼一樣,服務名空間名不一樣。)

demo代碼如下:

項目中各種配置比這複雜的多,就不多贅述

exercise/Orleans/Orleans.MultiClient-Test at master · liuzhixin405/exercise (github.com)

這是我提的issue:

how can orleans server response load balancing · Issue #7497 · dotnet/orleans (github.com)