silky微服務簡介

Silky發表於2021-11-01

專案介紹

silky框架旨在幫助開發者在.net平臺下,通過簡單程式碼和配置快速構建一個微服務應用的開發框架。它提供了 RPC通訊微服務治理 兩大關鍵能力。這意味著,使用 silky 開發的微服務,將具備相互之間的遠端發現與通訊能力, 同時利用 silky 提供的豐富服務治理能力,可以實現諸如服務發現、負載均衡、流量排程等服務治理訴求。同時 silky 是高度可擴充套件的,使用者幾乎可以在任意功能點去定製自己的實現,以改變框架的預設行為來滿足自己的業務需求。

silky微服務有著如下的優勢:

  • 開箱即用

    • 簡單易用,使用通用主機或是web主機來構建(託管)微服務應用。
    • 易用性高,面向介面代理特效能實現本地透明呼叫。
    • 功能豐富,基於原生庫或輕量擴充套件即可實現絕大多數的微服務治理能力。
  • 超大規模微服務叢集實踐

    • 高效能的跨程式通訊協議,使用DotNetty通訊框架實現了基於介面代理的RPC框架,提供高效能的基於代理的遠端呼叫能力,服務以介面為粒度,為開發者遮蔽遠端呼叫底層細節。
    • 地址發現、流量治理層面,輕鬆支援規模化叢集例項。
  • 企業級微服務治理能力

    • 通過Polly實現的服務治理,提高服務的容錯能力。
    • 內建多種負載均衡策略,智慧感知下游節點健康狀況,顯著減少呼叫延遲,提高系統吞吐量。
    • 支援多種註冊中心服務,服務例項上下線實時感知。
  • 資料一致性的保證

    • 使用TCC分散式事務保證資料最終一致性。

框架特性

silky

服務引擎+模組化設計

  • 負責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服務
  • 透過閘道器代理與前端進行握手、會話

入門

開源地址

github: https://github.com/liuhll/silky

gitee: https://gitee.com/liuhll2/silky

相關文章