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

一、前言

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}")]
    //[ServiceBundle("api/{Service}")]
    //[ServiceBundle("api/{Service}/{Method}/test")]
    //[ServiceBundle("api/{Service}/{Method}/test",false)]
    public interface IUserService: IServiceKey
    {

        /// <summary>
        /// 判断是否存在
        /// </summary>
        /// <param name="id">用户编号</param>
        /// <returns></returns>
        [ServiceRoute("{id}")]
        [HttpPost(),HttpPut(), HttpDelete(), HttpGet()]
        // [ServiceBundle("api/{Service}/{id}", false)]
        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

时间: 2024-10-08 20:18:50

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

surging 微服务引擎 1.0 正式发布

surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希一致性,随机,轮询.压力最小优先作为负载均衡的算法,底层协议集成采用的组件是dotnetty.websocket-sharp.Kestrel.支持通过docker hub 部署服务引擎,也可以通过nuget 引用组件的方式自定义服务引擎. surging 已完成了生成环境的稳定部署,支持超过千台机器

surging 微服务引擎 -协议主机的Behavior特性

1.前言 因为工作的关系,最近很少更新surging,因为surging 一直处在不温不火的状态,而自己每天利用业余时间进行完善,每天都是疲惫的状态,还要应付新手的提问,曾经一度想放弃,但是有些人劝说,surging 已经有一定的忠粉,放弃难免可惜,你可以发展收费版本,这样你也有动力进行更新,用户也有需求,付费也是情理之中,你也能更好的发展下去.就在上个月我剥离了企业版.预定版.社区版. 社区版:阉割版本,不带配置中心,文档,服务编排流程引擎,管理中心等功能,而且没有咨询服务 预定版:部分企业版

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

一.前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation以方便国内.net core开源项目的推广,我果断接受邀请加入了队伍进行互相交流学习,最近也更新了surging新的版本 更新内容: 1. Castle.Core 兼容性问题,下一版本会去除,解决部分用户第一次编译VS卡死问题2. 增加容错降级3. 路由容错重构,针对于失败重试和失败没有重试,失败回调,4.增加部分功能单元测试5. 升级支持.

(二)surging 微服务框架使用系列之surging 的准备工作consul安装

suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多,所以只是consul的配置 consul下载地址:https://www.consul.io/downloads.html consul agent 命令的常用选项,如下: -data-dir 作用:指定agent储存状态的数据目录 这是所有agent都必须的 对于server尤其重要,因为他们必须持久化集群的状态 -config-dir  作用:指定service的配置文件和检查定

(五)surging 微服务框架使用系列之缓存-reids

1.服务跟客户端初始化的时候需要添加缓存配置 1 var host = new ServiceHostBuilder() 2 .RegisterServices(builder => 3 { 4 builder.AddMicroService(option => 5 { 6 option .AddCache()//缓存初始化28 });29 }).Configure(build =>47 build.AddCacheFile("cacheSettings.json",

微服务 SpringBoot 2.0(二):配置文件解析

properties我用了好多年,你却让我用yml,这是什么鬼 -- Java面试必修 引言 上一篇介绍了Spring Boot的轻松入门项目构建,对Spring Boot的特性有了初步了解.但如果要想玩得很熟练的话就请看接下来的文章,这样有助于后续我们快速的构建企业级应用,打怪咱得先熟悉地图对吧 配置详解 工具 SpringBoot版本:2.0.4 开发工具:IDEA 2018 Maven:3.3 9 JDK:1.8 配置文件类型 本文主要讲解SpringBoot的配置文件,常用的配置文件类型

微服务 SpringBoot 2.0(四):启动剖析之SpringApplication.run

我以为只是运行了个main方法,可却启动了服务 -- Java面试必修 引言 前一章我们讲解了启动原理的@SpringBootApplication部分,仔细跟着看代码还是很好理解,若需观看@SpringBootApplication注解部分请点击,接下来这章主要讲解run方法运行部分,run方法运行这里很枯燥乏味,所以请带好你的精气神,准备好水,因为实在是太干了. 运行启动 工具 SpringBoot版本:2.0.4 开发工具:IDEA 2018 Maven:3.3 9 JDK:1.8 我们继

微服务 SpringBoot 2.0(六):常用配置(properties、yml)

约定优于配置,但配置不能为0 -- Java面试必修 引言 在前面的章节中,我们已经知道,SpringBoot的配置文件分为properties和yml,而我个人更青睐yml,其书写格式让人觉得很舒服,那这篇文章了就将配置文件中的各个属性列出来供大家参考,在IDE工具中也会有相应的提示,若出现红色,说明该属性已经在2.0中变更,请查看变更后的书写格式. SPRING CONFIG spring.config.name 配置文件名称,默认为application spring.config.loc

基于docker 如何部署surging分布式微服务引擎

1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎,再把业务进行剥离, 通过配置路径就能驱动加载业务模块,这样的细粒度设计,能更加灵活从业务中针对于对象加以细分,能更加灵活的拆分聚合服务.而这篇文章我们来谈谈基于docker 如何部署 surging源码下载 2.概述 容器,就是用来存放镜像的器皿,而镜像是构建成的一个轻量的.独立的.可执行