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)