skywalking

Spring Cloud Gateway全链路实现

China☆狼群 提交于 2020-11-23 20:38:13
随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。而诸多的服务可能分布在了几千台服务器,横跨多个不同的数据中心。为了快速定位和解决故障,应用性能进行分析,全链路监控组件就在这样的问题背景下产生了。最出名的是谷歌公开的论文提到的Google Dapper。本文主要介绍了Spring Cloud Gateway全链路实现解决方案。主要讲解全链路原理和方案;最后分享如何实现探针全链路。 全链路原理 主流的全链路方案都是采用谷歌公开的论文提到的Google Dapper方案。 一个Span表示一个服务的调用开始到结束。 如果一个Span没有父ID则被称之为入口Span,需负责生成本次链路调用全局唯一的TxId。 如果服务间有调用,则透传TxId、SpanId和pSpanId,每个SpanId需重新生成,pSpanId采用调用方的SpanId。 被调用服务需将透传的头信息恢复,继续透传后续节点。 最终根据Span的关联性生成链路树。 将应用以角色进行区分,分为Server端和Client端。 Server端负责接收请求,其流程主要分为三步: 创建入口Span 解析并恢复上游头信息: TxId、SpanId和pSpanId 结束入口Span Client端负责发送请求,其流程也分为三步: 创建子Span 传递给下游头信息:TxId

CI与CD之Docker上安装Jenkins

巧了我就是萌 提交于 2020-11-23 05:43:08
一.CI,CD,Jenkins的介绍 CI:持续集成(Continuous integration,简称 CI),在传统的软件开发环境中,有集成,但是没有持续集成这种说法,长时间的分支与主干脱离,导致分支与主干可能存在较大偏差,在集成代码的时候可能需要花费数小时更久的时间来修复代码,以便最终将代码集成主干(俗称"集成地狱"或"集成灾难");而CI旨在鼓励团队成员进行频繁集成(例如每小时或至少每天一次 ) 来避免这种情况的出现,通过自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程,来保障代码的质量可以进行下一步的使用,这也是持续集成的目的,CI是属于开发人员的自动化流程。 CD:持续交付(Continuous Delivery)和持续部署(Continuous Deployment),这里查阅了一些资料,并简单总结了一下:      1.持续交付意味着所有的变更都可以随时交付生产使用,强调的是一种可交付的能力   2.持续部署意味着所有被发现的release candidate 并且通过所有质量测试的变更都会被自动部署到生产环境中,强调的是一种方式 Jenkins:Jenkins是开源CI&CD软件领导者,并拥有众多插件来支持它用于持续、自动的构建/测试软件项目、监控外部任务的运行 二.在docker上安装Jenkins 选择jenkins的镜像文件

在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记

心已入冬 提交于 2020-10-31 01:58:56
SkyWalking 概述    SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持Java, .Net Core, PHP, NodeJS, Golang, LUA语言探针,支持Envoy + Istio构建的Service Mesh。   这里抛出两个概念,SkyWalking 服务和语言探针。SkyWalking 本身是用 Java 写的,作为应用性能管理系统,探针是收集应用性能指标数据的,比如在 .net core 项目中引入 SkyAPM.Agent.AspNetCore,做一些配置,就可以将该项目的数据报告给 SkyWalking 服务,在 SkyWalking UI 界面看到可视化的数据。   SkyWalking 展示的数据是需要存储的,默认是 H2,同时也支持使用ElasticSearch、MySQL、TiDB、InfluxDB,这里使用 elasticsearch。 环境说明   本机开发环境:Win10 + VS2019,服务器是 CentOS,ip:172.17.81.23 Docker 方式(踩坑)   安装 Elasticsearch docker run --name elasticsearch --restart always -d -p 9200:9200 -p 9300

《掌门1对1微服务体系 Solar | 阿里巴巴 Sentinel 落地实践》

偶尔善良 提交于 2020-10-17 23:36:38
简介: 前言 掌门1对1精耕在线教育领域,近几年业务得到了快速发展,但同时也遭遇了“成长的烦恼”。随着微服务数量不断增加,流量进一步暴增,硬件资源有点不堪重负,那么,如何实现更好的限流熔断降级等流量防护措施,这个课题就摆在了掌门人的面前。由于 Spring Cloud 体系已经演进到第二代,第一代的 Hystrix 限流熔断降级组件已经不大适合现在的业务逻辑和规模,同时它目前被 Spring Cloud 官方置于维护模式,将不再向前发展。 如何选择一个更好的限流熔断降级组件?经过对 Alibaba Sentinel 、 Resilience4j 、 Hystrix 等开源组件做了深入的调研和比较,最终选定 Alibaba Sentinel 做微服务体系 Solar 中的限流熔断降级必选组件。 Sentinel 简介 阿里巴巴中间件部门开发的新一代以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性的分布式系统的流量防卫兵。它承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 它具有非常丰富的开源生态: 它和 Hystrix 相比,有如下差异: 摘自官网 Sentinel Roadmap 关于 Sentinel 如何使用,它的技术实现原理怎样等

.Net微服务实战之DevOps篇

北城余情 提交于 2020-10-07 04:24:00
技术只是基础   该系列的两篇文章《 .Net微服务实战之技术选型篇 》和《 .Net微服务实战之技术架构分层篇 》都是以技术角度出发描述微服务架构的实施。   如果技术选型篇叙述的是 工具 ,那么架构分层篇讲的就是 技巧 ,而本篇要讨论的就是 原则 。一直以来我会给身边向我探讨问题的人灌输一种理念,没有什么技术银弹,因为我们做的是软件工程,提供的是问题相应的解决方案,不同类型问题的解决方案是存在着本质上的差异。   继续提供之前的源码:https://github.com/SkyChenSky/Sikiro PS:该篇文章与.Net无关,其实主要是沿用前面两篇文章的命名,此外我认为DevOps不是简单的工具使用,应从软件工程角度进行出发。 什么才是优秀的架构设计?   曾经有好几个同行问过我同一个问题:什么才是优秀的架构设计?我一直信奉着 两句话 和 一个定律 : 架构服务于业务,技术服务于架构 康威定律(简单理解成组织架构的设计等同于系统架构的设计)    架构设计 其实就是一种 方案 的 取舍 ,在 有限 的 资源 里(包括但不限人力、时间)能让 团队 顺利的实施技术,同时满足 业务规模 的需要,我认为可以称之为优秀的架构设计,简单来说两个字 合适 架构核心要素   核心的主要5大: 性能、可用性、伸缩性、扩展性、安全性 。   而我们所讨论的微服务,选择了扩展性

SkyWalking 采样率设置

点点圈 提交于 2020-10-02 13:13:21
版本:7.0.0 描述 在默认情况下,SkyWalking会采集所有追踪的数据。但是如果系统比较复杂,采集的端点比较多的时候,可能存储压力比较大,这个时候我们可以修改配置,只存储部分的调用链路信息。比如:50%。 设置采样率的时候并不会影响相关指标的计算。服务,服务实例,端点,拓扑图相关指标的计算还是使用完整的数据计算的。 配置 具体配置在 config/application.yml 文件中 receiver-trace 模块。 默认配置 10000 ,采样率精确到 1/10000 ,即 10000 * 1/10000 = 1 = 100% 。 假设我们设计采样 50% ,那么设置为 5000 ,具体如下: receiver-trace: selector: ${SW_RECEIVER_TRACE:default} default: sampleRate: ${SW_TRACE_SAMPLE_RATE:5000} 建议 后算实例可以设置不同的采样率,但是官方建议设置为同样的值。 假设: 实例A采样率 = 35% 实例B采样率 = 55% Agent将所有的跟踪段都上报给后端,全局范围内 35% 的跟踪的所有跟踪段会保存在存储中。 但是,B实例还会有 20% 的跟踪信息,这些跟踪信息里面有一部分的跟踪段被发送 A 实例, 这部分不会持久化。最终导致跟踪段缺失。 来源:

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

冷暖自知 提交于 2020-10-02 11:21:49
1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking。 Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap、管理界面UI、以及嵌入到程序中的探针Agent部分,大概工作流程就是在程序中添加探针采集各种数据发送给服务端保存,然后在UI界面可以看到收集过来的各种监测数据,来完成它的核心使命:性能监控和分布式调用链追踪能力。下图是skywalking官方的一个图,也可以说明这三者之间的关联关系 2.服务端(OAP)和界面(UI)的安装 这里直接在apache地址: http://skywalking.apache.org/downloads/ 下载了一个6.6.0版本的zip文件,由于之前在本地的windows上安装过,发现安装包里面有两个启动文件,分别为:startup.bat和startup.sh,分别用于window上启动和linux启动,这里我直接将之前下载好的上传到linux上来安装。 上传后解压缩,就会得到以下截图的几个文件 进入到config配置目录下面,有一个名称叫application.yml的文件 对这个配置文件进行编辑 vim application.yml 我们直接定位到数据存储部分,也就是节点storage,官方文档里面也有说明,为了方便快速入门,配置文件默认采用的是H2存储

厉害!40 张图看懂分布式追踪系统原理及实践

浪子不回头ぞ 提交于 2020-09-30 01:05:45
作者 | 码海 来源 | 码海 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。 这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓答案。 本文将会从以下几个方面来阐述: 分布式追踪系统原理及作用 SkyWalking的原理及架构设计 我司在分布式调用链上的实践 分布式追踪系统的原理及作用 如何衡量一个接口的性能好坏,一般我们至少会关注以下三个指标: 接口的 RT 你怎么知道? 是否有异常响应? 主要慢在哪里? 单体架构 在初期,公司刚起步的时候,可能多会采用如下单体架构,对于单体架构我们该用什么方式来计算以上三个指标呢? 最容易想到的显然是用 AOP: 使用 AOP 在调用具体的业务逻辑前后分别打印一下时间即可计算出整体的调用时间,使用 AOP 来 catch 住异常也可知道是哪里的调用导致的异常。 微服务架构 在单体架构中由于所有的服务,组件都在一台机器上,所以相对来说这些监控指标比较容易实现,不过随着业务的快速发展,单体架构必然会朝微服务架构发展,如下: 如图示:一个稍微复杂的微服务架构 如果有用户反馈某个页面很慢,我们知道这个页面的请求调用链是 A -----> C -----> B -----> D

万字谈监控:解答Zabbix与Prometheus选型疑难

半腔热情 提交于 2020-09-24 06:00:06
Zabbix与Prometheus 读完本文,你将收获 两者适用于多大规模的监控场景?超过5000以上监控节点 时怎么办?高可用怎么解决? 两者怎么解决存储问题?对于监控信息是否有历史存储和分析,能从历史信息中挖掘到哪些有价值的信息? 两者怎么应对告警风暴和误报? 在智能监控和自动治愈方面是否有可借鉴的实践?基于什么算法或策略?怎么进行故障预判和预处理? 监控大屏是怎么设计的? 自动化运维管理是两者同时使用还是二选一更合适? 两者在配合使用时,应该怎么分工?怎么落地? 如果已经部署了Zabbix,怎么平稳过渡到Prometheus? 分布式链路的可观测性和端到端诊断怎么做? 大规模场景下,两者的性能和成本哪个比较低? 监控,为什么总让我们头痛 监控一直都是运维工作中不可或缺的部分,一个高效、契合的监控系统是服务赖以健康稳定的基石。 随着业务规模的增长、技术 的发展、行业的变革,企业对用户体验 越来越重视 ,监控的需求发生着日新月异的变化,相应的监控工具和解决方案也层出不穷。其中,Zabbix 和Prometheus就是两款非常典型的监控工具,应用 颇为广泛。 说起来,监控在不同的团队和公司之间,可能会存在各种差异化的需求。如何基于开源产品打造一个符合自己业务场景的监控体系,并且持续迭代?这成为了大家无法绕开的课题。 比如说,如何选择监控方案和开源工具