surging 是一個分佈式微服務引擎,提供高性能RPC遠程服務調用,服務引擎支持http、TCP、WS、Mqtt協議,採用Zookeeper、Consul做爲surging服務的註冊中心,集成了哈希一致性,隨機,輪詢、壓力最小優先做爲負載均衡的算法,底層協議集成採用的組件是dotnetty、websocket-sharp、Kestrel。支持經過docker hub 部署服務引擎,也能夠經過nuget 引用組件的方式自定義服務引擎。git
surging 已完成了生成環境的穩定部署,支持超過千臺機器服務的水平擴展,能夠支持超過1000個的serviceroutes部署,能夠支持單臺30000個物聯網設備,平均單次訪問性能能夠達到0.11ms(機器的不一樣,所驗證的結果不一樣,升級.netcore 2.2 使用分層編譯性能會更高)github
以上數據是經過本人測試,還有一些是經過別人的提供的數據得到。基本上數據都是來自於8核16G的服務器,下面咱們來看看如何從各個渠道去構建surging 服務引擎web
構建服務引擎算法
有部分人員經過引用源碼進行開發,多是這樣更容易調試,或者是實時同步surging, surging 是MIT協議,能夠隨便搗鼓,開源地址以下:docker
https://github.com/dotnetcore/surging服務器
首先若是是自定義服務引擎,能夠把鏡像引擎上傳到docker hub 鏡像庫,而後能夠根據鏡像庫作服務編排,如下是全部上傳的surging 鏡像websocket
也能夠經過如下方式獲取官方的服務引擎app
經過如下命令進行構建負載均衡
docker pull serviceengine/surging:v1.0socket
經過如下命令進行運行
#docker run --name surgingserver_v1.0 --env Mapping_ip=192.168.249.162 --env Mapping_Port=198 --env RootPath=/home/fanly --env
Register_Conn=192.168.249.162:8500 --env EventBusConnection=172.17.0.4 --env Surging_Server_IP=0.0.0.0 -v /home/fanly:/home/fanly -it -p 198:198 serviceengine/surging:v1.0
能夠經過nuget 包安裝相關組件,以下圖
以下圖所示
將來展望
對於surging迄今爲止所取得的進展感到很是興奮,有部分已經使用surging用在了生產環境,而且對於surging的性能很是滿意,對於surging將來的規劃是維護現有的組件,而且擴展其它經常使用的協議,好比RTP、RTSP、RTMP ,還有就是作管理中心,包括了發佈管理,配置管理,監控中心,異常通知,組件應用中心等功能,這裏也感謝你們對於surging 的貢獻與支持,也期待你們共同一塊兒完善surging ,一塊兒支持.net core 的生態。