專案介紹
silky框架旨在幫助開發者在.net平臺下,通過簡單程式碼和配置快速構建一個微服務應用的開發框架。它提供了 RPC通訊 與 微服務治理 兩大關鍵能力。這意味著,使用 silky 開發的微服務,將具備相互之間的遠端發現與通訊能力, 同時利用 silky 提供的豐富服務治理能力,可以實現諸如服務發現、負載均衡、流量排程等服務治理訴求。同時 silky 是高度可擴充套件的,使用者幾乎可以在任意功能點去定製自己的實現,以改變框架的預設行為來滿足自己的業務需求。
silky微服務有著如下的優勢:
-
開箱即用
-
超大規模微服務叢集實踐
- 高效能的跨程式通訊協議,使用DotNetty通訊框架實現了基於介面代理的RPC框架,提供高效能的基於代理的遠端呼叫能力,服務以介面為粒度,為開發者遮蔽遠端呼叫底層細節。
- 地址發現、流量治理層面,輕鬆支援規模化叢集例項。
-
企業級微服務治理能力
- 通過Polly實現的服務治理,提高服務的容錯能力。
- 內建多種負載均衡策略,智慧感知下游節點健康狀況,顯著減少呼叫延遲,提高系統吞吐量。
- 支援多種註冊中心服務,服務例項上下線實時感知。
-
資料一致性的保證
- 使用TCC分散式事務保證資料最終一致性。
框架特性
服務引擎+模組化設計
- 負責silky主機的初始化過程
- 負責模組解析、依賴管理與載入
- 服務註冊與解析
RPC通訊
- 使用Dotnetty作為底層通訊元件,使用TCP作為通訊協議, 採用長連結方式提高系統吞吐量
- 基於介面的動態代理
- 支援JSON、MessagePack、ProtoBuf編解碼方式
- RPC通訊過程中支援快取攔截,提高通訊效能
- RPC呼叫監控
服務治理
- 服務自動註冊和發現,服務例項上下線智慧感知
- RPC呼叫失敗重試
- 支援輪詢、隨機路由、雜湊一致性等負載均衡路由方式, 智慧感知下游節點健康狀況,顯著減少呼叫延遲,提高系統吞吐量。
- 支援HTTP限流和RPC呼叫限流
- 支援熔斷保護,當發生非友好類異常n次後開啟熔斷保護
- 支援RPC呼叫的監視
- 服務降級,當RPC呼叫失敗後呼叫
Fabllback
指定的方法達到服務容錯的目的 - 通過配置支援禁止服務被外部訪問
通過.net主機構建
- 使用web主機構建微服務應用
- 使用通用主機構建微服務應用
- 構建具有websocket能力的微服務應用
- 構建閘道器應用
安全設計
- 閘道器統一進行身份認證與鑑權
- rpc token用於保護RPC通訊,保證外部無法直接訪問rpc服務
- RPC通訊支援ssl加密
多種配置方式
- 支援Json格式配置檔案
- 支援Yaml格式配置檔案
- 支援Apollo作為配置服務中心
- 使用環境變數
鏈路跟蹤
- HTTP請求
- RPC呼叫
- TCC分散式事務
- 其他(EFCore)...
支援分散式事務
- RPC通訊過程中,通過TCC分散式框架保證資料最終一致性
- 使用攔截器+TODO日誌實現
- 使用 Redis作為TODO日誌儲存倉庫
支援websocket通訊
- 通過websocketsharp.core元件構建websocket服務
- 透過閘道器代理與前端進行握手、會話
入門
- 通過開發者文件學習Silky框架。
- 通過silky.samples專案熟悉如何使用Silky框架構建一個微服務應用。
- 通過配置文件熟悉Silky框架的相關配置屬性。
開源地址
github: https://github.com/liuhll/silky