項目介紹
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