我的微服务观,surging 2.0将会带来多大的改变
Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康、重庆金翅膀等传统行业的正式使用,自2019年年初,surging2.0 便已正式进入研发阶段,也受到了surging 用户的关注,本文将为您解读2.0的新特性和新功能。在开始之前先解答一下经常被提到的疑问
1.Surging 有没有文档、Demo、官网
因为需要完善Surging,暂时个人还没有时间去写文档,准备官网,但是大家可以通过关注liuhll,因为他正在写surging文档和 基于surging 的案例,
liuhll 文档:https://liuhll.github.io/hexo-blog-deploy/categories/%E5%BE%AE%E6%9C%8D%E5%8A%A1/
surging案例:https://github.com/liuhll/Surging.Sample
2. Surging 有没有公司正在使用
因为Surging 是开源产品,无法统计哪家公司正在使用,所以我提交了《surging 谁在使用》的issues, 大家可以去查看issues来知晓哪家公司正在使用,也请使用了surging的公司留下你所在公司的联系方式,以便收集有意向在生产上使用surging的客户,从而让surging社区和donetcore生态变得更加繁荣。
3. 何时支持Stage组件
对于Surging现在有一套独立的 surging 网关,而网关的设计违反了引擎组件化思想, 所以新的版本会基于KestrelHttpServer 组件扩展Stage,这样就能以组件模块化生成,以代替之前网关无法做到的缓存服务降级,复杂业务服务的聚合,文件服务的支持,大概8月底完工
4. 是否会支持灰度发布
因为.net core 设计问题,暂时无法做到surging 灰度发布, 已将问题提交给coreclr,现已得到解决,等到3.0发布后,surging 也会开始支持灰度发布。
基于 Zookeeper 和 Consul 多注册中心集群支持
Surging 可以支持pull 和 push 两种方式来更新服务路由,而这两种方式是由consul 和zookeeper 来实现的,而pull 是利用心跳的方式,而 push 是利用Watch 的机制,而 同时 注册中心可以支持向多个注册中心注册服务路由,以同步注册服务。当基于pull 和watch更新的时候,可以通过随机算法来负载获取最新的服务路由来更新本地路由,可以通过以下代码配置多注册中心
Consul (surgingSettings.json):
"Consul": {
"ConnectionString": "${Register_Conn}|127.0.0.1:8500,127.0.0.1:9500",
"SessionTimeout": "${Register_SessionTimeout}|50",
"RoutePath": "${Register_RoutePath}",
"ReloadOnChange": true,
"EnableChildrenMonitor": false
}
Zookeeper(surgingSettings.json)
Zookeeper:{
"ConnectionString": "${Zookeeper_ConnectionString}|127.0.0.1:2181, 127.0.0.1:2281",
"SessionTimeout": 50,
"ReloadOnChange": true
}
ApiGateway
"Register": {
"Provider": "Consul",
"Address": "${Register_Conn}|127.0.0.1:8500,127.0.0.1:9500"
}
基于swagger 利用业务模块生成API文档
ASP.NET Core Web API 使用Swagger 可以生成在线帮助测试文档,而surging 维护了一套 基于surging 的swagger 的引擎组件,以便支持业务模块使用Swagger 生成在线帮助测试文档。具体可以按照以下代码进行配置:
"Swagger": {
"Info": {
"Version": "${SwaggerVersion}|V1", // "127.0.0.1:8500",
"Title": "${SwaggerTitle}|Surging Demo",
"Description": "${SwaggerDes}|surging demo",
"Contact": {
"Name": "API Support",
"Url": "https://github.com/dotnetcore/surging",
"Email": "fanliang1@hotmail.com"
},
"License": {
"Name": "MIT",
"Url": "https://github.com/dotnetcore/surging/blob/master/LICENSE"
}
},
"Options": {
"IgnoreFullyQualified": true
}
}
而针对于业务模块生产的测试文档,我们可以通过设置AssemblyInfo.cs,具体代码如下:
using System.Reflection;
[assembly: AssemblyTitle("CommonModule")]
[assembly: AssemblyDescription("业务模块")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("fanly")]
[assembly: AssemblyProduct("surging Micro Service Framework")]
[assembly: AssemblyCopyright("Copyright © fanly All Rights Reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
界面生成如下:

总结
希望大家研究下surging ,surging 会让你对.NET CORE微服务有个全新的认识,也希望大家大力宣传,让surging 发展越来越好。
我的微服务观,surging 2.0将会带来多大的改变的更多相关文章
- surging 微服务引擎 1.0 正式发布
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...
- 0基础搭建Hadoop大数据处理-编程
Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和 ...
- surging 微服务引擎 2.0 会有多少惊喜?
surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情 ...
- 谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能
一.前言 surging是基于.NET CORE 服务引擎.初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务 ...
- 迎元旦,庆surging 1.0发布
一位摄影程序员的独白 每个人都有爱好,都有释放压力的活动,而我也不例外,我除了每天上班,周末就会约一群好友去拍妹子,成家后,就改为拍虫子,一拍就到了30岁,到了30岁就感觉到了中年的压力,这时候停下手 ...
- 微服务架构~Zuul1.0和2.0我们该如何选择?
介绍 在今年5月中,Netflix终于开源了它的支持异步调用模式的Zuul网关2.0版本,真可谓千呼万唤始出来.从Netflix的官方博文[附录1]中,我们获得的信息也比较令人振奋: The Clou ...
- Android应用图标微技巧,8.0系统中应用图标的适配
现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了.三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米.华为.OV等国产手机厂商即将推出的 ...
随机推荐
- codechef Killing Monsters
题目大意:大厨正在玩一个打怪兽的小游戏.游戏中初始时有 n 只怪兽排成一排,从左到右编号为 0 ∼ n − 1.第 i 只怪兽的初始血量为 hi,当怪兽的血量小于等于 0 时,这只怪兽就挂了. 大厨要 ...
- LR性能测试结果样例分析
http://www.cnblogs.com/hyzhou/archive/2011/11/16/2251316.html 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可 ...
- 成功实现在VS2017下编译含<pthread.h>的代码:
VS2017配置使用#<pthread.h> https://blog.csdn.net/cry1994/article/details/79115394(原来SystemWow64里面存 ...
- Docker快速入门(二)
上篇文章<Docker快速入门(一)>介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile. 1 image文件 (1)Docker ...
- Python人脸识别最佳教材典范,40行代码搭建人脸识别系统!
Face Id是一款高端的人脸解锁软件,官方称:"在一百万张脸中识别出你的脸."百度.谷歌.腾讯等各大企业都花费数亿来鞭策人工智能的崛起,而实际的人脸识别技术是否有那么神奇? 绿帽 ...
- 架构之Nginx(负载均衡/反向代理)
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...
- Java中static关键字和final关键字
static: 1. 修饰变量,方法 表示静态方法,静态变量. 2. static修饰代码块 static{ } 此种形式为静态代码块,用于初始化同时被final static修饰的变量.(当然,更常 ...
- 使用input file上传文件中onChange事件只触发一次问题
每次上传文件的时候,都会将当前的文件路径保存至$event.target.value中,当第二次选择文件时,由于两次$event.target.value相同,所以不会触发change事件. 解决方案 ...
- USB/GPIO/SDIO
通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范.它只有4根线,两个电源(5V,地线),两个数据 ...
- SSH整合配置文件概括
配置方式一:struts.xml, applicationContext.xml(hibernate.cfg.xml配置信息写入spring配置文件中) (版本号, struts2:2.3.15; s ...