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


一、前言

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

640?wx_fmt=png

上图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 看到以下界面

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

 三、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 

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019-ACM-ICPC-南京区网络赛-E. K Sum(莫比乌斯反演 + 杜教筛)

K Sum 推式子 Fn(k)∑l11n∑l21n⋯∑lk1n(gcd(l1,l2,…,lk))2∑d1nd2∑l11nd∑l21nd⋯∑lk1nd(gcd(l1,l2,…,lk)1)∑d1nd2∑l11nd∑l21nd⋯∑lk1nd∑t∣gcd(l1,l2,…,lk)μ(t)∑d1nd2∑t1ndμ(t)(ntd)2另Ttd∑T1n(nT)k∑d∣Td2μ(Td)∑i2nFn(i)∑T1n∑i2k(nT)i∑d∣Td2μ(Td)到…

【BZOJ4028】[HEOI2015]公约数数列(分块/数量级很小法)

【BZOJ4028】[HEOI2015]公约数数列 https://www.luogu.com.cn/problem/P4108 求解最靠前的一个位置前缀gcd和前缀异或的乘积恰好等于x&#xff0c;并且要求支持单点修改 首先我们可以发现这个问题没法使用线段树维护&#xff0c;因为不仅前缀没有单调性&#xff0c;而且修改也…

GuGuFishtion(2018 Multi-University Training Contest 7)

GuGuFishtion 推式子 ∑a1m∑b1nϕ(a,b)ϕ(a)ϕ(b)∑a1m∑b1ngcd(a,b)ϕ(gcd(a,b))∑d1mdϕ(d)∑a1md∑b1mdgcd(a,b)1∑d1mdϕ(d)∑a1md∑b1md∑k∣gcd(a,b)μ(k)我们约定n,m&#xff0c;满足n<m∑d1ndϕ(d)∑k1ndμ(k)⌊nkd⌋⌊mkd⌋\sum_{a 1 } ^{m} \sum_{b 1 } ^{n} …

奇淫巧技-Flutter调用C#

前言众所周知&#xff0c;Xamarin应该是.net下的跨平台开发工具。2016年之前还处于收费状态&#xff0c;后被微软收购后开源。但似乎有个现象&#xff0c;开源后的Xamarin发展似乎有些停滞&#xff0c;而且维护Xamarin的团队又很固执不愿变通。社区多次建议UI层应该统一绘图引擎…

【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)

【UOJ#33】【UR #2】树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演&#xff0c;那么利用倍数形式&#xff0c;我们只需要求解是i的倍数的对数。 考虑枚举lca&#xff0c;这个问题就和深度有关&#xff0c;那么可以长链剖分&…

.NET World——gPRC概览

官方的定义&#xff1a;gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authen…

51NOD 1220 约数之和(杜教筛)

1220 约数之和 推式子 ∑i1n∑j1nd(i,j)∑i1n∑j1n∑x∣i∑y∣j(gcd(x,y)1)xjy∑d1ndμ(d)∑i1nd∑x∣iix∑j1nd∑y∣jj∑d1ndμ(d)(∑i1nd∑x∣ix)2∑d1ndμ(d)(∑x1nx∑x∣i)2∑d1ndμ(d)(∑x1nxnx)2接下来就是杜教筛求dμ(d)的前缀和&#xff0c;然后再直接分块求∑x1nxnx&…

P4151 [WC2011]最大XOR和路径(线性基)

P4151 [WC2011]最大XOR和路径 对于求解最大异或和路径&#xff0c;首先边可以重复走&#xff0c;最终的结果一定是一条路径和许多环的异或和&#xff0c;因为路径和环之间的边会被走两次&#xff0c;不会被计算&#xff0c;所以我们可以通过dfs树求解所有的环的线性基&#xf…

P6222 「P6156 简单题」(反演 + 积性函数线性筛)

P6156 简单题 推式子 ∑i1n∑j1n(ij)kf(gcd(i,j))gcd(i,j)∑i1n∑j1n(ij)kμ2(gcd(i,j))gcd(i,j)∑d1nμ2(d)dk1∑i1nd∑j1nd(ij)k(gcd(i,j)1)∑d1nμ2(d)dk1∑p1ndp2μ(p)∑i1npd∑j1npd(ij)ktpd,f(n)∑i1n∑j1n(ij)k∑t1nf(nt)tk∑d∣tμ2(d)μ(td)d\sum_{i 1} ^{n} \sum_{…

推荐高质量的公众号,值得跟进学习!

为大家推荐几个高质量的公众号&#xff1a;当你迷茫的时候刷刷这些大公司的牛人所运营的公众号&#xff0c;就可以知道自己的不足&#xff0c;不是仅仅局限于.NET技术之下&#xff0c;通过他们扩展我们的知识宽度&#xff0c;我们可以一起来学习。人工智能爱好者社区专注人工智…

P3733 [HAOI2017]八纵八横(线性基/线段树分治)

P3733 [HAOI2017]八纵八横 这是那道线性基的加强版&#xff0c;现在要求从1节点出发的一条路径异或和最大&#xff0c;并且还要支持修改权值和加边删边。 我们可以直接线段树分治然后将所有修改用vector存下来&#xff0c;然后最后dfs一遍整个线段树&#xff0c;然后每次类似…

.net core redis的全套操作

Redis支持五种数据类型&#xff1a;string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xff08;列表&#xff09;&#xff0c;set&#xff08;集合&#xff09;及zset(sorted set&#xff1a;有序集合)。Redis支持主从同步…

二次剩余模板

二次剩余模板 x2≡n(modp)x ^ 2 \equiv n \pmod px2≡n(modp) /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc.h>#define mp make_pair #define pb push_back #define endl \n #define mid (l r >> 1) #define l…

CF938G Shortest Path Queries(线性基/线段树分治/异或)

CF938G Shortest Path Queries 支持加边删边和查询两点之间的异或最短路&#xff0c;我们可以使用线段树分治&#xff0c;然后利用线性基求解。 但是这里图可能不是联通的&#xff0c;所以查询两点之间的异或和需要边带权并查集维护&#xff0c;然后还不能路径压缩&#xff0…

Stack Overflow引入CROKAGE,搜问题不用再东拼西凑

许多开发者使用 Stack Overflow 搜索开发中遇到的问题&#xff0c;有时候需要查询的结果中有通俗的讲解&#xff0c;而且最好还能够带上代码 demo&#xff0c;但是两者同时很完美地满足要求还是比较困难的。不过最近 Stack Overflow 官方博客上介绍了一种智能化的技术&#xff…

P2487 [SDOI2011]拦截导弹(cdq分治/计数问题思想)

P2487 [SDOI2011]拦截导弹 求解二维上的LIS&#xff0c;并且要求出每个点的选中概率。 首先对于每个点的选中概率&#xff0c;可以通过方案数计算&#xff0c;那么就是选中它的方案数除以总方案数。关键在于选中它的方案数怎么求&#xff0c;可以通过以它开头的LIS方案数和以…

dsu on tree 题集 + ac代码

文章目录**入门讲解****[600E - Lomsat gelral](https://codeforces.ml/problemset/problem/600/E)****[树上数颜色](https://www.luogu.org/problemnew/show/U41492)****[570D - Tree Requests](https://codeforces.ml/problemset/problem/570/D)****[ 阔力梯的树](https://ac…

使用Kubectl部署应用

目录 使用Kubectl部署应用 Kubectl部署流程 部署一个简单的Demo网站 使用Kubectl部署应用一旦运行了Kubernetes集群&#xff0c;就可以在其上部署容器化应用程序。因此在开始之前&#xff0c;我们需要先确保集群已经准备就绪&#xff0c;无论是使用Minikube还是kubeadm创建的集…

SP22343 NORMA2 - Norma(分治优化复杂度)

SP22343 NORMA2 - Norma 一看就像是一个序列分治的题目&#xff0c;求解序列上区间长度乘区间最大值最小值的和&#xff0c;然后考虑如何处理&#xff0c;分治之后每次就可以将右边部分分成三部分&#xff0c;然后对于这三部分可以批量求和&#xff0c;这样就起到优化复杂度的…

Docker系列之.NET Core入门(三)

在Docker生态系统中除了上一节所讲解的基本概念&#xff0c;还有其他专业术语&#xff0c;本文我们将一笔带过&#xff0c;同时会开始陆续进入到在.NET Core中使用Docker。专业术语Docker Engine&#xff08;Docker引擎&#xff09;&#xff1a;客户端 - 服务器应用程序。Docke…