surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情况,公司名不便透露,我们就以字母标识

A公司:40多个服务提供者,一个服务提供者扩展了四五个实例节点,只使用了3台服务器,并且搭建了CI/CD, k8s 集群,使用suring 构建航空行业信息化系统

B公司:房产系统,门店2300多家,峰值在线使用人数1700,平均保持在1200人左右,有21个服务提供者,每个服务提供者有70-80个服务,使用了三台服务器,部署在linux环境,并且使用docker, 数据库使用sql server 2017,运行了1年,产生的数据已经超过1亿

C公司:业务中台,服务2000多个,移动端和web端都已经上线,至今没产生什么问题,反应挺稳定

D公司:物联网,服务提供者1个,服务器1台8核支持了3.5W+, 部署在window 环境

....

以上是了解比较详细的一些数据,还有很多公司都采用了surging,还有一些公司采用surging 做二次开发,有了这些市场的证明,说明surging 作为服务引擎是及格的,可为各行业公司快速研发投入市场提供了可靠的解决方案。

那谈了这么多surging又是怎么样定义微服务这个边界的?

微服务应该是粒度最小的功能业务模块,针对于行业解决方案,集成相应的service host,而针对于业务需要一些中间件来辅助,比如缓存中间件,eventbus中间件(消息中间件),数据储存中间件,而各个服务又可以互相通过rpc进行可靠性通信。

以下是surging 服务引擎的调用链

从以上调用可以看出surging 可以支持多行业的解决方案,通过协议Mqtt、ws、http服务主机生成服务提供者,  在服务启动的时候服务A、服务B、服务C、服务D的ServiceRoute 会注册到注册中心,而A,B,C,D如果不是部署在同一个服务提供者中就需要通过RPC进行通信,而RPC提供了服务发现 和服务治理功能从而保证了通信之间,可靠性,可用性和可扩展性。

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

1.灵活配置RoutePath

针对于RoutePath做了一次优化,可以通过ServiceBundle设置RoutePath, 也可以通过 ServiceRoute进行设置,具体参考以下代码

通过以上设置,GetUserName 生成的routepath是/api/user/getusername/{id}, 然后我们可以通过引用swagger组件来测试服务是否调用成功,具体效果如下

或者也可以用postman进行访问,具体效果如下图

2.扩展Dns 协议服务主机

因dotnetty没有dns 组件,扩展了基于dotnetty 的dns 编解码,支持tcp,udp协议, 但仅支持PTR、OPT记录类型。

引擎扩展了Dns 协议服务主机组件,包含了以下功能

1、Domain Name 解析
2、支持模块化Domain Name 解析自定义扩展
3.、支持引擎模块的集群化域名解析

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

1、需要通过nuget包引用Surging.Core.DNS或者通过指定目录Components进行扫描装载,再通过以下配置RootDnsAddress

2. dns服务接口,需要继承IServiceKey

[ServiceBundle("Dns/{Service}")]

  public interface IDnsService : IServiceKey

 {

 }

3. dns业务模块需要继承DnsBehavior,dns 服务主机才能进行加载

然后通用以上配置,然后指向部署的DNS服务主机地址,解析域名规则为 前缀.(XX.XX.XX).后缀, 前缀会解析为key,以结合基于key做哈希一致性负载算法, (XX.XX.XX)会解析成routepath, 后缀不解析可以随便取名。以下是通过nslookup命令进行测试

3.扩展Udp 协议服务主机

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

1、需要通过nuget包引用Surging.Core.Protocol.Udp或者通过指定目录Components进行扫描装载,再通过以下代码编写Udp Service

配置udp端口

"Surging": {

    "Ports": {

      "HttpPort""${HttpPort}|280",

      "WSPort""${WSPort}|96",

      "MQTTPort""${MQTTPort}|97",

      "UdpPort""${UdpPort}|95"

    }

  }<br>}

udp服务接口,需要继承IServiceKey

1

2

3

4

[ServiceBundle("Udp/{Service}")]

public interface IUdpService : IServiceKey

{

}

udp业务模块需要继承UdpBehavior,udp服务主机才能进行加载

通过以上代码,可以通过ffmpeg推流到Udp,再通过udp 推流MPEG-TS 格式分发到ws 服务,再通过http://127.0.0.1:280/JSMpeg.html查看ws 推送的共享桌面

以下是推送的高清视频,有可能是播放器缓冲的问题,推送的视频流解析的不是很清楚

4.扩展基于netty 的ws 协议服务主机

引擎扩展了netty 的ws协议服务主机组件,包含了以下功能

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

2.支持消息的发送和广播

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

1、需要通过nuget包引用Surging.Core.Protocol.Udp或者通过指定目录Components进行扫描装载,再通过以下代码编写Udp Service

配置ws端口

ws服务接口,需要继承IServiceKey

ws业务模块需要继承WSBehavior,ws服务主机才能进行加载

5. 多注册中心集群支持

可以通过设置多注册中心进行服务注册,配有健康检查和负载均衡,注册中心地址以,隔开,具体按照以下进行配置

以下是通过网关的管理界面配置

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

6,扩展支持ABP 组件

ABP 组件在.NET使用者还是比较多,ABP是一套业务封装快速开发框架,大多数使用者都是使用abp 架设单体应用和垂直应用SOA服务,那么使用微服务,必然需要用到ABP的组件,那么对于一些组件可以集成到surging 引擎中来,

其中通过引入Surging.Core.Abp组件,就能装载ABP组件。那么有多少ABP组件可以引入到引擎,这个等后面的章节会讲到。

7.  扩展关卡组件

surging 外层只能通过网关进行访问,这样破坏了组件引擎化思想,后面会考虑扩展关卡组件,以代替网关的路由转发、鉴权,具体设想会有以下功能

1. 支持AppSecret,能支持第三方调用

2.支持jwt来实现鉴权功能

3. 通过业务模块生成服务聚合服务提供者,服务聚合无需注册到注册中心

4.支持SSL配置

8. 扩展支持Reactive Extensions(Rx)响应式编程

计划是surging 能支持响应式编程,扩展支持Reactive Extensions, 具体实现哪些功能,还需要考虑

总结

针对.NET还有很多很多人对于微服务这个概念模拟两可,很多人分不清微服务的边界,那么对于这种情况,你们可以花点时间研究下surging 或者看下其它语言是如何定义这个边界的,也希望.NET同僚们能分清正确的微服务系统的架设,也希望.NET 在微服务迎头赶上,能给公司带来一套稳定高效的解决方案。

原文地址:https://www.cnblogs.com/fanliang11/p/11109364.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

surging 微服务引擎 2.0 会有多少惊喜?相关推荐

  1. 谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能

    一.前言 surging是基于.NET CORE 服务引擎.初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务 ...

  2. surging 微服务引擎 1.0 正式发布

    surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...

  3. 微服务:简述Surging微服务架构

    微服务:简述Surging微服务架构 Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康.重庆金翅膀等传统行业的正式使 ...

  4. 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代

    简介:微服务网关被作为微服务面向客户端的单一入口,用来处理横向的关注点,包括访问控制.速率限制.负载均衡等等.真正用起来时,我们还需要关注更多的纵向因素,例如服务发现能力.更全面的监控可观测能力.更高 ...

  5. (二)surging 微服务框架使用系列之surging 的准备工作consul安装(转载 https://www.cnblogs.com/alangur/p/8377977.html)...

    (二)surging 微服务框架使用系列之surging 的准备工作consul安装 suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多, ...

  6. springboot接入华为微服务引擎CSE全过程及后续遇到的问题一览

    最近有项目需求把现有的单体应用,springboot接入华为的微服务引擎CSE,这里列出我遇到的问题,以及解决方案. 1.华为CSE微服务引擎的POM文件引入 问题:POM文件无法找到对应的华为CSE ...

  7. 微服务引擎的线上流量治理最佳实践

    简介:本实践将重点介绍如何快速集成主流开源微服务框架,实现业务零改造,解决开源框架在生产落地过程中的痛点,例如无损上下线.标签路由等,并通过托管微服务开源组件(API网关.注册中心.配置中心等)的服务 ...

  8. 微服务最佳实践:MSE 微服务引擎

    简介:微服务引擎 MSE(Microservice Engine)是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台.其由四个主要部分组成:微服务治理中心. ...

  9. surging 微服务框架使用系列之surging介绍

    surging 微服务框架使用系列之surging介绍 原文:surging 微服务框架使用系列之surging介绍 surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zook ...

最新文章

  1. 重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!
  2. 通过application.properties修改打开网页的方式
  3. IP协议号(TCP协议号/UDP协议号)
  4. Swift 异常处理
  5. CSS手写代码总结02
  6. 小米手机反复提示“请勿遮挡听筒区域“
  7. php4 class,PHP在类中获得当前class名称_php
  8. 银行利率是5.45%,房贷是4.9%,有钱该提前还房贷还是存款?
  9. ssh 命令行通过私钥登录其它设备
  10. linux命令哲学,Linux哲学思想、history实现执行命令的时间、Linux命令格式
  11. vasp-分子动力学模拟
  12. MR_LINUX_DRIVER安装教程,ovito安装说明(windows+linux)
  13. ps基础学习:画笔工具实现花丛中蝴蝶效果
  14. DDPM代码详细解读(1):数据集准备、超参数设置、loss设计、关键参数计算
  15. Windows server 2008 安装Hyper-V
  16. 14WPF---关键帧动画
  17. 软件测试V、W、H模型
  18. OSI 物理层(设备,技术)
  19. 在vue项目中引用萤石云播放器插件
  20. Oracle分区表的使用

热门文章

  1. 用Emesene替换Windows Live Messenger
  2. 如何在Microsoft Excel中将文本转换为日期值
  3. Fish Shell 使用笔记
  4. java 简单json和对象相互转换
  5. PHP会话控制考察点
  6. Hibernate简单例子以及笔记
  7. SQL SERVER2000存储过程调试
  8. Hibernate HQL 语法大全(上)
  9. .NET 6新特性试用 | SDK工作负载
  10. C#位图BitArray 小试牛刀