一、前言

surging是基于.NET CORE 服务引擎。初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务架构的技术栈,覆盖了从服务注册、服务发现、中间件、协议主机再到链路跟踪,并且制定了一套微服务的规则,形成了一套统一的规范。以下是surging的服务引擎架构图

上图Diagnostic能够实现把整个服务链路的各种信息采集到。

比如来源地址、远程地址、报错、执行时间、调用链路、协议类型以及参数全部采集到,采集完之后通过Skywaking Middleware 中间件的Grpc 推给Skywaking,再通过Skywaking WebUI进行展示。

前面的协议是针对于移动端、Web端和物联网的解决方案。

后面是服务引擎提供的功能。

二、服务调用链路跟踪

链路跟踪集成了Skywalking, 参考了SkyAPM-dotnet 而扩展的Surging.Apm.Skywalking引擎组件,而2.0版本只实现rpc 和rest 调用进行链路跟踪,具体配置如下

1.首先创建文件skyapm.json,放在引擎根目录下或者是指定的rootpathg根目录下,配置代码如下

{

  "SkyWalking": {

    "ServiceName""Surging.Services.Server",

    "Namespace""",

    "HeaderVersions": [

      "sw6"

    ],

    "Sampling": {

      "SamplePer3Secs": -1,

      "Percentage": -1.0

    },

    "Logging": {

      "Level""Information",

      "FilePath""logs/skyapm-{Date}.log"

    },

    "Transport": {

      "Interval": 3000,

      "ProtocolVersion""v6",

      "QueueSize": 30000,

      "BatchSize": 3000,

      "gRPC": {

        "Servers""localhost:11800",

        "Timeout": 100000,

        "ConnectTimeout": 100000,

        "ReportTimeout": 600000

      }

    }

  }

}

2.然后添加引用或者扫描引用Surging.Apm.Skywalking组件,就能把采集的数据提交到Skywalking

3.或者可以通过配置项DisableDiagnostic禁用数据采集,配置如下

  {

"Surging": {

    "DisableDiagnostic"true,

}

}

然后通过stage 组件GET 调用http://127.0.0.1:281/api/user/getusername/222?serviceKey=User 地址,就能通过Skywalking WebUI 看到以下界面

三、Stage支持白黑名单、HttpMethod规则的设定

1.白黑名单可以指定RoutePath,全局配置通过不指定RoutePath进行配置,白名单的配置要高于黑名单的配置,也就说有重合的IP, 白名单会进行覆盖,代码配置具体如下

"Stage": {

  "AccessSetting": [

    {

      "BlackList""${blacklist}|127.0.0.1",

      "Enable"false

    },

    {

      "WhiteList""${whitelist}|192.168.10.50,192.168.43.0/24,127.0.0.1",

      "BlackList""${blacklist}|192.168.2.50,192.168.1.0/16",

      "RoutePath""api/user/exists",

      "Enable"true

    }

  ]

}

2.  通过配置HttpPost ,HttpPut , HttpDelete 和 HttpGet就能配置rest的请求方式,如果不配置,所有请求都支持。而 设置isRegisterMetadata为True,就会把httpmethod注册为服务元数据。如果是微服务可以设置为true ,如果是中转服务或者聚合服务可以设置为false

[ServiceBundle("api/{Service}/{Method}")]

public interface IUserService: IServiceKey

{

    /// <summary>

    /// 判断是否存在

    /// </summary>

    /// <param name="id">用户编号</param>

    /// <returns></returns>

    [ServiceRoute("{id}")]

    [HttpPost(),HttpPut(), HttpDelete(), HttpGet()]

    Task<bool> Exists(int id);

    /// <summary>

    /// 报错用户

    /// </summary>

    /// <param name="requestData">请求参数</param>

    /// <returns></returns>

    [Authorization(AuthType = AuthorizationType.JWT)]

    [HttpPost(true),HttpPut(true)]

    Task<IdentityUser> Save(IdentityUser requestData);

 }

2019年08月28日发布2.0版本,敬请期待

原文链接:https://www.cnblogs.com/fanliang11/p/11373087.html


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

谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能相关推荐

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

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

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

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

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

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

  4. Service Mesh:调度千军万马微服务,2.0妥妥的

    冠望 发自 凹非寺 量子位 报道 | 公众号 QbitAI 过去一年,继Kubernetes风靡,Service Mesh已成功上位变成当之无愧的技术网红. TA不但可以极大简化用户使用体验,还将大中 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. vue el-form鼠标事件导致页面刷新解决方案;vue 阻止多次点击提交数据通用方法...
  2. c语言printf %llo,c++ - Printf疯狂了 - 堆栈内存溢出
  3. python-函数-局部变量与全局变量
  4. Qt从入门到放弃_0x01:建立项目
  5. 十年维护专家的“秘籍
  6. CI(持续集成)/CD(持续部署)
  7. Android音乐播放器-使用FFmpeg及OpenSLES
  8. IOS开发-表视图LV3导航控制器
  9. [转] 基于C#的波形显示控件的实现
  10. 收集 关于IDEA 开发工具的一些有用的设置 或 使用技巧
  11. Matlab中值滤波去噪
  12. LINUX移植——内核移植(一)
  13. 爱普生l360扫描仪显示无法连接计算机,USB连接喷墨机,启动Epson scan提示无法与扫描仪连接如何解决?...
  14. 机器学习中激活函数的作用
  15. 计算机无法找到输出设备,老司机搞定win10声音无法找到输入输出设置的解决方法...
  16. vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...
  17. 常用格式校验正则表达式
  18. vue2项目之async/await 处理 promis
  19. 苹果5s参数_这次,苹果自己革了自己的命---iPhone12发布会全纪实
  20. Python基础(三)

热门文章

  1. xbox可以录视频声音吗_什么是Xbox Live Gold,它值得吗?
  2. 直播源码中有哪些网络协议需要注意?
  3. 2018暑假集训---递推递归----一只小蜜蜂hdu2044
  4. 中国版LinkedIn呼之欲出
  5. 解决windows系统80端口被占用问题
  6. 用java调用.net的wcf其实还是很简单的
  7. ffmpeg speex转换为mp3或者aac
  8. 64位的Linux中运行32位的应用程序
  9. wpf 可以取消的单选checkbox
  10. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑