surging 微服务引擎 2.0 会有多少惊喜?
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
|
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端口
|
udp服务接口,需要继承IServiceKey
1 2 3 4 |
|
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 会有多少惊喜?相关推荐
- 谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能
一.前言 surging是基于.NET CORE 服务引擎.初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务 ...
- surging 微服务引擎 1.0 正式发布
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...
- 微服务:简述Surging微服务架构
微服务:简述Surging微服务架构 Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康.重庆金翅膀等传统行业的正式使 ...
- 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代
简介:微服务网关被作为微服务面向客户端的单一入口,用来处理横向的关注点,包括访问控制.速率限制.负载均衡等等.真正用起来时,我们还需要关注更多的纵向因素,例如服务发现能力.更全面的监控可观测能力.更高 ...
- (二)surging 微服务框架使用系列之surging 的准备工作consul安装(转载 https://www.cnblogs.com/alangur/p/8377977.html)...
(二)surging 微服务框架使用系列之surging 的准备工作consul安装 suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多, ...
- springboot接入华为微服务引擎CSE全过程及后续遇到的问题一览
最近有项目需求把现有的单体应用,springboot接入华为的微服务引擎CSE,这里列出我遇到的问题,以及解决方案. 1.华为CSE微服务引擎的POM文件引入 问题:POM文件无法找到对应的华为CSE ...
- 微服务引擎的线上流量治理最佳实践
简介:本实践将重点介绍如何快速集成主流开源微服务框架,实现业务零改造,解决开源框架在生产落地过程中的痛点,例如无损上下线.标签路由等,并通过托管微服务开源组件(API网关.注册中心.配置中心等)的服务 ...
- 微服务最佳实践:MSE 微服务引擎
简介:微服务引擎 MSE(Microservice Engine)是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台.其由四个主要部分组成:微服务治理中心. ...
- surging 微服务框架使用系列之surging介绍
surging 微服务框架使用系列之surging介绍 原文:surging 微服务框架使用系列之surging介绍 surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zook ...
最新文章
- 重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!
- 通过application.properties修改打开网页的方式
- IP协议号(TCP协议号/UDP协议号)
- Swift 异常处理
- CSS手写代码总结02
- 小米手机反复提示“请勿遮挡听筒区域“
- php4 class,PHP在类中获得当前class名称_php
- 银行利率是5.45%,房贷是4.9%,有钱该提前还房贷还是存款?
- ssh 命令行通过私钥登录其它设备
- linux命令哲学,Linux哲学思想、history实现执行命令的时间、Linux命令格式
- vasp-分子动力学模拟
- MR_LINUX_DRIVER安装教程,ovito安装说明(windows+linux)
- ps基础学习:画笔工具实现花丛中蝴蝶效果
- DDPM代码详细解读(1):数据集准备、超参数设置、loss设计、关键参数计算
- Windows server 2008 安装Hyper-V
- 14WPF---关键帧动画
- 软件测试V、W、H模型
- OSI 物理层(设备,技术)
- 在vue项目中引用萤石云播放器插件
- Oracle分区表的使用