谈谈surging引擎的tcp、http、ws协议和如何容器化部署

           分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿。从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果。esb,网关,nginx网关 这些中心化服务治理框架现在都是各个公司比较主流的架构,而最近几年大家炒的比较火的去中心化微服务框架,各个语言都有其代表作品,比如.NET就有orleans、akka.net,这些框架不言而喻都能从网上了解一二,但是针对于这些框架,是不是就满足公司的需要,就能搭建起整个平台呢?

         可以告诉大家,下一代框架应该称为分布式微服务引擎,也可以叫做服务网格,它应该是基础设施引擎,加载驱动业务模块服务,负责服务之间的可靠传递,提供了所需的网络协议,而针对surging 服务引擎就是朝着这个思想前进,内部通过RPC进行调用,有一套完整的服务治理规则,提供了tcp、http、ws 协议,并且可以支持容器化、可定制化引擎部署,下面我们来看看是如何实现的。

2.服务引擎

服务引擎是用于处理服务与服务可靠通信的专用基础设施。而服务应该是独立进行部署的,无需寄宿在其它框架当中,由于服务之间的独立性,业务团队不再需要操心服务治理相关的复杂度,全权交给服务引擎处理即可。针对每一个服务实例,服务引擎都会在同一主机上一对一并行部署一个服务进程,实现该服务实例所有对外的网络通讯(参见下图),借助于良好的框架封装,运维成本也可以得到有效的控制。

谈谈surging引擎的tcp、http、ws协议和如何容器化部署

2.1 演化史

surging从无到有可分为三个演化阶段

第一个阶段RPC服务治理框架,服务与服务之间通信通过接口创建代理的方式进行访问

第二个阶段RPC服务治理框架+网关,服务与服务之间通信通过接口创建代理或RoutePath进行访问,外部通过网关进行调用

第三个阶段服务引擎,服务不再关心通讯细节和通信协议,统统交给引擎, 只需要关注业务的实现

2.2 架构

针对于surging现在提供了tcp、http、ws三种通信协议,tcp、http协议是基于dotnetty,而ws是基于websocket-sharp的分支版本websocketcore(该版本支持.NET CORE)

而整个引擎的架构如下图所示,通过对外的网络通信协议,可以对接移动、web、物联网应用,通过服务发现RPC远程调用内部业务服务。

谈谈surging引擎的tcp、http、ws协议和如何容器化部署

  3.如何开发基于协议的业务模块

3.1 基于http,tcp协议业务接口

继承IServiceKey,并且都需要标识[ServiceBundle("Api/{Service}")],代码如下

[ServiceBundle("api/{Service}")] public interface IManagerService : IServiceKey { [Command(Strategy = StrategyType.Injection, ShuntStrategy = AddressSelectorMode.HashAlgorithm, ExecutionTimeoutInMilliseconds = 2500, BreakerRequestVolumeThreshold = 3, Injection = @"return 1;", RequestCacheEnabled = false)] Task<string> SayHello(string name); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwsyg.html