免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
surging 微服務(wù)引擎 2.0 會(huì)有多少驚喜?

     surging 微服務(wù)引擎從2017年6月至今已經(jīng)有兩年的時(shí)間,這兩年時(shí)間有多家公司使用surging 服務(wù)引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,這里我可以說下幾家公司的服務(wù)搭建情況,公司名不便透露,我們就以字母標(biāo)識(shí)

A公司:40多個(gè)服務(wù)提供者,一個(gè)服務(wù)提供者擴(kuò)展了四五個(gè)實(shí)例節(jié)點(diǎn),只使用了3臺(tái)服務(wù)器,并且搭建了CI/CD, k8s 集群,使用suring 構(gòu)建航空行業(yè)信息化系統(tǒng)

B公司:房產(chǎn)系統(tǒng),門店2300多家,峰值在線使用人數(shù)1700,平均保持在1200人左右,有21個(gè)服務(wù)提供者,每個(gè)服務(wù)提供者有70-80個(gè)服務(wù),使用了三臺(tái)服務(wù)器,部署在linux環(huán)境,并且使用docker, 數(shù)據(jù)庫使用sql server 2017,運(yùn)行了1年,產(chǎn)生的數(shù)據(jù)已經(jīng)超過1億

C公司:業(yè)務(wù)中臺(tái),服務(wù)2000多個(gè),移動(dòng)端和web端都已經(jīng)上線,至今沒產(chǎn)生什么問題,反應(yīng)挺穩(wěn)定

D公司:物聯(lián)網(wǎng),服務(wù)提供者1個(gè),服務(wù)器1臺(tái)8核支持了3.5W+, 部署在window 環(huán)境

....

以上是了解比較詳細(xì)的一些數(shù)據(jù),還有很多公司都采用了surging,還有一些公司采用surging 做二次開發(fā),有了這些市場(chǎng)的證明,說明surging 作為服務(wù)引擎是及格的,可為各行業(yè)公司快速研發(fā)投入市場(chǎng)提供了可靠的解決方案。

那談了這么多surging又是怎么樣定義微服務(wù)這個(gè)邊界的?

微服務(wù)應(yīng)該是粒度最小的功能業(yè)務(wù)模塊,針對(duì)于行業(yè)解決方案,集成相應(yīng)的service host,而針對(duì)于業(yè)務(wù)需要一些中間件來輔助,比如緩存中間件,eventbus中間件(消息中間件),數(shù)據(jù)儲(chǔ)存中間件,而各個(gè)服務(wù)又可以互相通過rpc進(jìn)行可靠性通信。

以下是surging 服務(wù)引擎的調(diào)用鏈

 

 

 

 從以上調(diào)用可以看出surging 可以支持多行業(yè)的解決方案,通過協(xié)議Mqtt、ws、http服務(wù)主機(jī)生成服務(wù)提供者,  在服務(wù)啟動(dòng)的時(shí)候服務(wù)A、服務(wù)B、服務(wù)C、服務(wù)D的ServiceRoute 會(huì)注冊(cè)到注冊(cè)中心,而A,B,C,D如果不是部署在同一個(gè)服務(wù)提供者中就需要通過RPC進(jìn)行通信,而RPC提供了服務(wù)發(fā)現(xiàn) 和服務(wù)治理功能從而保證了通信之間,可靠性,可用性和可擴(kuò)展性。

 

那么新版本surging 又有多少新的功能,多少驚喜呢?

1.靈活配置RoutePath

針對(duì)于RoutePath做了一次優(yōu)化,可以通過ServiceBundle設(shè)置RoutePath, 也可以通過 ServiceRoute進(jìn)行設(shè)置,具體參考以下代碼

 

    [ServiceBundle("api/{Service}")]    //[ServiceBundle("api/{Service}/{Method}")]    //[ServiceBundle("api/{Service}/{Method}/test")]    //[ServiceBundle("api/{Service}/{Method}/test",false)]    public interface IUserService: IServiceKey    {        /// <summary>        /// 獲取用戶姓名        /// </summary>        /// <param name="id">用戶編號(hào)</param>        /// <returns></returns>        [ServiceRoute("{id}")]  //[ServiceRoute("{參數(shù)名}")]         Task<string> GetUserName(int id);    }

 

通過以上設(shè)置,GetUserName 生成的routepath是/api/user/getusername/{id}, 然后我們可以通過引用swagger組件來測(cè)試服務(wù)是否調(diào)用成功,具體效果如下

 

或者也可以用postman進(jìn)行訪問,具體效果如下圖

2.擴(kuò)展Dns 協(xié)議服務(wù)主機(jī)

 因dotnetty沒有dns 組件,擴(kuò)展了基于dotnetty 的dns 編解碼,支持tcp,udp協(xié)議, 但僅支持PTR、OPT記錄類型。

引擎擴(kuò)展了Dns 協(xié)議服務(wù)主機(jī)組件,包含了以下功能

1、Domain Name 解析
2、支持模塊化Domain Name 解析自定義擴(kuò)展
3.、支持引擎模塊的集群化域名解析

那么我們可以按照以下方式把dns 集成到引擎中

1、需要通過nuget包引用Surging.Core.DNS或者通過指定目錄Components進(jìn)行掃描裝載,再通過以下配置RootDnsAddress

  "Dns": {    "RootDnsAddress": "192.168.1.1",    "QueryTimeout": 1000  }

 2. dns服務(wù)接口,需要繼承IServiceKey

1
2
3
4
[ServiceBundle("Dns/{Service}")]
  public interface IDnsService : IServiceKey
 {
 }

 3. dns業(yè)務(wù)模塊需要繼承DnsBehavior,dns 服務(wù)主機(jī)才能進(jìn)行加載

    public class DnsService : DnsBehavior, IDnsService    {        public override Task<IPAddress> Resolve(string domainName)        {            if(domainName=="localhost")            {                return Task.FromResult<IPAddress>(IPAddress.Parse("127.0.0.1"));            }            return Task.FromResult<IPAddress>(null);        }    }

然后通用以上配置,然后指向部署的DNS服務(wù)主機(jī)地址,解析域名規(guī)則為 前綴.(XX.XX.XX).后綴, 前綴會(huì)解析為key,以結(jié)合基于key做哈希一致性負(fù)載算法, (XX.XX.XX)會(huì)解析成routepath, 后綴不解析可以隨便取名。以下是通過nslookup命令進(jìn)行測(cè)試

 3.擴(kuò)展Udp 協(xié)議服務(wù)主機(jī)

需要按照以下方式把Udp集成到引擎中

1、需要通過nuget包引用Surging.Core.Protocol.Udp或者通過指定目錄Components進(jìn)行掃描裝載,再通過以下代碼編寫Udp Service

配置udp端口

1
2
3
4
5
6
7
8
9
"Surging": {
    "Ports": {
      "HttpPort": "${HttpPort}|280",
      "WSPort": "${WSPort}|96",
      "MQTTPort": "${MQTTPort}|97",
      "UdpPort": "${UdpPort}|95"
    }
  }<br>}

udp服務(wù)接口,需要繼承IServiceKey

1
2
3
4
[ServiceBundle("Udp/{Service}")]
public interface IUdpService : IServiceKey
{
}

udp業(yè)務(wù)模塊需要繼承UdpBehavior,udp服務(wù)主機(jī)才能進(jìn)行加載

    public class UdpService : UdpBehavior, IDnsService    {        public override async Task<bool> Dispatch(IEnumerable<byte> bytes)        {            await this.GetService<IMediaService>().Push(bytes);            return await Task.FromResult(true);        }        public override Task<bool> Dispatch(object message)        {            return Task.FromResult(true);        }    }

通過以上代碼,可以通過ffmpeg推流到Udp,再通過udp 推流MPEG-TS 格式分發(fā)到ws 服務(wù),再通過http://127.0.0.1:280/JSMpeg.html查看ws 推送的共享桌面

以下是推送的高清視頻,有可能是播放器緩沖的問題,推送的視頻流解析的不是很清楚

 4.擴(kuò)展基于netty 的ws 協(xié)議服務(wù)主機(jī)

引擎擴(kuò)展了netty 的ws協(xié)議服務(wù)主機(jī)組件,包含了以下功能

1.支持基于webscoket 的Open、Error、nMessage、Close方法的封裝

2.支持消息的發(fā)送和廣播

需要按照以下方式把Udp集成到引擎中

1、需要通過nuget包引用Surging.Core.Protocol.Udp或者通過指定目錄Components進(jìn)行掃描裝載,再通過以下代碼編寫Udp Service

配置ws端口

 

{  "Surging": {    "Ports": {      "HttpPort": "${HttpPort}|280",      "WSPort": "${WSPort}|96",      "MQTTPort": "${MQTTPort}|97",      "UdpPort": "${UdpPort}|95"    }  }}

 ws服務(wù)接口,需要繼承IServiceKey

 

    [ServiceBundle("Api/{Service}")]    [BehaviorContract(Protocol = "media")]    public interface IMediaService : IServiceKey    {         Task Push(IEnumerable<byte> data);    }

 

ws業(yè)務(wù)模塊需要繼承WSBehavior,ws服務(wù)主機(jī)才能進(jìn)行加載

 

    public class MediaService : WSBehavior, IMediaService    {        public   Task Push(IEnumerable<byte> data)        {              this..Broadcast(data.ToArray());              return Task.CompletedTask;        }    }

 

5. 多注冊(cè)中心集群支持

可以通過設(shè)置多注冊(cè)中心進(jìn)行服務(wù)注冊(cè),配有健康檢查和負(fù)載均衡,注冊(cè)中心地址以,隔開,具體按照以下進(jìn)行配置

  "Consul": {    "ConnectionString": "${Register_Conn}|127.0.0.1:8500,127.0.0.1:9500", // "127.0.0.1:8500,127.0.0.1:9500",    "SessionTimeout": "${Register_SessionTimeout}|50",    "RoutePath": "${Register_RoutePath}",    "ReloadOnChange": true,    "EnableChildrenMonitor": false  }

 

以下是通過網(wǎng)關(guān)的管理界面配置
  "Register": {    "Provider": "Consul",    "Address": "${Register_Conn}|127.0.0.1:8500,127.0.0.1:9500"  }

以下查看以下界面,就說明配置成功

6,擴(kuò)展支持ABP 組件

 ABP 組件在.NET使用者還是比較多,ABP是一套業(yè)務(wù)封裝快速開發(fā)框架,大多數(shù)使用者都是使用abp 架設(shè)單體應(yīng)用和垂直應(yīng)用SOA服務(wù),那么使用微服務(wù),必然需要用到ABP的組件,那么對(duì)于一些組件可以集成到surging 引擎中來,

其中通過引入Surging.Core.Abp組件,就能裝載ABP組件。那么有多少ABP組件可以引入到引擎,這個(gè)等后面的章節(jié)會(huì)講到。

7.  擴(kuò)展關(guān)卡組件

surging 外層只能通過網(wǎng)關(guān)進(jìn)行訪問,這樣破壞了組件引擎化思想,后面會(huì)考慮擴(kuò)展關(guān)卡組件,以代替網(wǎng)關(guān)的路由轉(zhuǎn)發(fā)、鑒權(quán),具體設(shè)想會(huì)有以下功能

1. 支持AppSecret,能支持第三方調(diào)用

2.支持jwt來實(shí)現(xiàn)鑒權(quán)功能

3. 通過業(yè)務(wù)模塊生成服務(wù)聚合服務(wù)提供者,服務(wù)聚合無需注冊(cè)到注冊(cè)中心

4.支持SSL配置

8. 擴(kuò)展支持Reactive Extensions(Rx)響應(yīng)式編程

 計(jì)劃是surging 能支持響應(yīng)式編程,擴(kuò)展支持Reactive Extensions, 具體實(shí)現(xiàn)哪些功能,還需要考慮

總結(jié)

針對(duì).NET還有很多很多人對(duì)于微服務(wù)這個(gè)概念模擬兩可,很多人分不清微服務(wù)的邊界,那么對(duì)于這種情況,你們可以花點(diǎn)時(shí)間研究下surging 或者看下其它語言是如何定義這個(gè)邊界的,也希望.NET同僚們能分清正確的微服務(wù)系統(tǒng)的架設(shè),也希望.NET 在微服務(wù)迎頭趕上,能給公司帶來一套穩(wěn)定高效的解決方案。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
surging 社區(qū)版本支持.net core 3.1
加任何人為好友:QQ新技巧八則
如何使用thrift 服務(wù)引擎組件
CactiEZ V10.1 中文版 Cacti中文解決方案+使用教程
Linux系統(tǒng)管理工具包: 網(wǎng)絡(luò)掃描
SAP Web Service簡介與配置方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服