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


Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康、重庆金翅膀等传统行业的正式使用,自2019年年初,surging2.0 便已正式进入研发阶段,也受到了surging 用户的关注。

本文将解读Surging 2.0的新特性和新功能。在开始之前先解答一下经常被提到的疑问。

  1. Surging 有没有文档、Demo、官网
    因为需要完善Surging,暂时个人还没有时间去写文档,准备官网,但是大家可以通过关注liuhll的博客,因为他正在写surging文档和 基于surging 的案例,
    liuhll 文 档 :https://liuhll.github.io/hexo-blog-deploy/categories/微服务/
    surging案例:https://github.com/liuhll/Surging.Sample

  2. Surging 有没有公司正在使用
    因为Surging 是开源产品,无法统计哪家公司正在使用。

  3. 何时支持Stage组件
    对于Surging现在有一套独立的 surging 网关,而网关的设计违反了引擎组件化思想, 所以新的版本会基于KestrelHttpServer 组件扩展Stage,这样就能以组件模块化生成,以代替之前网关无法做到的缓存服务降级,复杂业务服务的聚合,文件服务的支持,大概8月底完工。

  4. 是否会支持灰度发布
    因为.net core 设计问题,暂时无法做到surging 灰度发布, 已将问题提交给coreclr,现已得到解决,等到3.0发布后,surging 也会开始支持灰度发布。

下面说说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")]

API文档 界面生成如下:

三、总结

surging 会让大家对.NET CORE微服务有个全新的认识,希望surging 发展越来越好。

微服务:简述Surging微服务架构相关推荐

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

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

  2. 微服务开发中的数据架构设计

    前言 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合.业务的灵活调整组合以及系统的高可用性.为业务创新和业务持续提供了一个良好的基 ...

  3. springcloud全局过滤_微服务技术SpringCloud 互联网网站架构演变过程

    网站架构演变过程 传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没 ...

  4. 基于微服务的电商系统架构

    分层 微服务设计 微服务微内核 基于微服务的电商系统架构 转载于:https://www.cnblogs.com/davidwang456/articles/9221369.html

  5. C++轻量级微服务_从微服务架构解析信源新一代“金融e采”产品

    金融电采,信源信息 信源信息从事电子化采购软件开发已经有15个年头,进行金融保险类采购系统的开发也已经有十多年了. 信源信息针对金融领域客户量身定做的"金融e采"产品线,以前瞻的技 ...

  6. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  7. surging 微服务引擎 2.0 会有多少惊喜?

    surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情 ...

  8. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级

    一.前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation 以方便国内.net core开源项目的推广 ...

  9. 开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器...

    JeeWx捷微4.0   微服务版本发布^_^ 换代产品(全新架构,全新UI,提供强大的图文编辑器) JEEWX 从4.0版本开始,技术架构全新换代,采用微服务架构,插件式开发,每个业务模块都是独立的 ...

最新文章

  1. 【微软亚洲研究院MSRA】招聘多模态方向算法实习生
  2. Confd+Consul 配置文件动态生成
  3. [Object-C语言随笔之二] 《NSLog》常用的打印调试语句与自动排版
  4. 阳江市2021高考成绩查询一下,广东省阳江市2021年高级会计师考试结束后去哪查成绩?...
  5. 利用FFT计算非平稳随机信号WVD分布
  6. sublime text常用快捷键及多行光标批量操作教程
  7. Boost:移动容器的测试程序
  8. md5加密 java原理_md5 32位 加密原理 Java实现md5加密
  9. Swift 开发的工具类,主要是提供正则表达式及其它,Github会长期维护
  10. 1.4万+阅读量,这篇JAMA论文,详细阐述临床试验统计方法,非常值得借鉴!
  11. “当了十年IT程序员,我转型做自动驾驶开发的这五年”
  12. React事件的问题
  13. 纯小白成功安装交叉编译工具arm-none-eabi-gcc
  14. aspose-word主要标签结构图和标签详细作用
  15. mac automator 自动操作 使用初探
  16. 大数据时代来临了,你需要了解什么是大数据
  17. Archlinux无法启动vmware虚拟机
  18. 对于LSB的理解(位的LSB、模数转换的LSB
  19. 【2018-11-15】中证1000指数的估值详情
  20. C1认证:修改《植物大战僵尸》的文件以及code.org绘图以及bmp画图

热门文章

  1. 前端面试(1)——准备
  2. UE4 射线拾取三维画线
  3. 设计院设计项目管理与总承包设计管理,有哪些异同点?
  4. js常用插件(九)之移动端翻书效果turn.js
  5. html边框炫酷效果,6种炫酷的CSS3按钮边框动画特效_html/css_WEB-ITnose
  6. 2022.1.18(一测补题,树的遍历题目,并查集)
  7. 数字识别实例两种实现方式(tensorflow2.x):1.调用高级API 2.手写简单神经网络 3.手写深度神经网络(DNN)
  8. HTML5 canvas画板的制作
  9. zabbix的监控配置
  10. AT+CSQ:检查网络信号强度和SIM卡情况