云原生时代分布式链路追踪实践-曲赛云原生时代分布式链路 追踪实践 2021-08 曲赛 (saiqu) 微服务架构的困境 故障定位难 极高的沟通和交接成本 错综难懂的模块依赖关系 链路梳理难 日志分散 定位过程“击鼓传花” 跨端性能瓶颈分析繁杂 性能分析难 缺乏对系统整体认知的把控 不合理的调用关系 不合理的直连存储 架构治理能力匮乏 云原生可观测性 3 4 Trace 标准规范 5 标准 接入便利,只需引入对应的拦截器 组件 trace基础属性自动采集 一次网络调用的经过的拦截器数据流 天机阁2.0 简介 12 天机阁2.0是遵循OpenTelemetry标准的,为各业务或平台提供分布式追踪,监控,日志, 多维染色,容量评估,架构治理等能力的云原生可观测性系统。 愿景:让开发一切尽在掌握 - 分布式追踪 - 日志 - 服务监控 - 火焰图 - 存储监控 - SDK监控 多租户 天机阁2.0 架构 13 天机阁2.0 实践 14 分布式追踪 天机阁2.0 实践 15 分布式追踪 Log详情 点击Log详情中traceID字段的按 钮拉起Trace详情。 天机阁2.0 实践 16 分布式追踪 监控面板 监控到错误码111,点击面板跳转 到相关时间段的分布式追踪 感谢倾听0 码力 | 17 页 | 2.47 MB | 1 年前3
1.Golang工具链选择_水羽哲⼯工具链选择 创业公司 CuriosityChina is a digital and tech company focusing on the development of social CRM, building a one stop social media customer/ user management platform - CURIO. By tracking, analyzing international working environments with employees from all over the world. 创业即修⾏行 昨夜⻄西⻛风凋碧树, 独上⾼高楼, 望尽天涯路。 1 弱⽔水三千,只取⼀一瓢 Godep Godep • messages are not durable (by default) • messages are delivered at0 码力 | 55 页 | 5.09 MB | 1 年前3
Go可观测性实践Go工程可观测性实践 周曙光 得物 Go开发 目 录 可观测性概述 01 链路追踪 02 指标 03 可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分 无所不在的部署 持续监控 低消耗 应用级透明 延展性 链路追踪设计目标 链路追踪 Dapper 每个请求都生成一个全局唯一的 traceid,端到端透传到上下游所有节点,每一层生成一个 spanid, 通过traceid 将不同系统孤立的调用日志和异常信息串联一起,通过 spanid 和 parentid parentid 表达节点 的父子关系 链路追踪 在分布式系统中请求的路径经常很凌乱且无法预测,为了构建我们想要的任何路 径的视图,无论多么复杂,每个组件都需要五段数据: • TraceID:请求唯一标识符,由根span产生,贯穿请求的各个阶段。 • SpanID:span包含单一链路中一个工作单元收到的信息。 • ParentID:区别请求链路中的嵌套包含关系,根Span没有ParentID。0 码力 | 35 页 | 2.88 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬大规模高性能区块链架构 设计模式与测试框架 Gopher Meetup 深圳站 2021 年 8 ⽉ 21 号 趣�科技 李世敬 目录 区块链概述 01 大规模高性能区块链架构设计介绍 02 基于Go插件的区块链性能测试工具 03 写在最后 04 区块链概述 4 趣链科技 版权所有 ©2016-2021 4 趣链科技 版权所有 ©2016-2021 4 趣链科技 版权所有 ©2016-2021 ©2016-2021 4 区块链诞生 区块链是互联网发展到一 定阶段的必然产物,是在 低成本、高效、快捷的基 础上对其安全可信及多元 价值传递与贡献分配体系 的完善。 物理世界 价值互联网 移动互联网 互联网 数据可信 资产可信 合作可信 可信 普适 信息 数字世界 5 趣链科技 版权所有 ©2016-2021 5 趣链科技 版权所有 ©2016-2021 5 趣链科技 版权所有 ©2016-2021 ©2016-2021 5 区块链发展历程 2008 2009 • 中本聪发表了比特币的创世论文 《比特币: 一种点对点的电子现 金系统》,标志着区块链作为一 项完整的集成创新技术正式诞生 • 比特币诞生,是世界上首个区 块链应用系统。发展至今有力 地证明了区块链技术的创新性、 颠覆性和顽强的生存能力 中本聪 比特币Bitcoin 2013 • 以太坊发布以太坊白皮书, 引入智能合约,推出首个0 码力 | 39 页 | 56.58 MB | 1 年前3
2.5 Go在猎豹移动的应用graceful restart依赖健康检测; api质量监控,使用日志来追踪,通过本 地日志+flume+hdfs+hive; 实时监控可以考虑flume sink到kafka,再 依赖Spark计算; RPC 协议&远程调用的选型; net/rpc,thrift,grpc等; 链路追踪,参考Google Dapper论文,核 心思路是关键库植入代码,因为缺乏0 码力 | 24 页 | 4.26 MB | 1 年前3
Go 入门指南(The way to Go)5.5 Break 与 continue 5.6 标签与 goto 第6章:函数(function) 6.1 介绍 6.2 函数参数与返回值 6.3 传递变长参数 6.4 defer 和追踪 6.5 内置函数 6.6 递归函数 6.7 将函数作为参数 6.8 闭包 6.9 应用闭包:将函数作为返回值 6.10 使用闭包调试 6.11 计算函数执行时间 6.12 通过内存缓存来提升性能 语言的情况下在你的浏览器中编译并运 行 Go,它提供了一些示例,其中包括国际惯例 “Hello, World!”。 更多的信息详见 github.com/golang/go,Go 项目 Bug 追踪和功能预期详见 github.com/golang/go/issues。 Go 通过以下的 Logo 来展示它的速度,并以囊地鼠(Gopher)作为它的吉祥物。 图1.2 Go 语言 Logo 分,Go 语言的设计者们还是完成 了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快速迁移。 Go语言通过减少关键字的数量(25 个)来简化编码过程中的混乱和复杂度。干净、整齐和简洁的语法也能够提高程0 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)语言的情况下在你的浏览 器中编译并运行 Go,它提供了一些示例,其中包括国际惯例 “Hello, World!”。 更多的信息详见 github.com/golang/go,Go 项目 Bug 追踪和功能预期详 见 github.com/golang/go/issues。 Go 通过以下的 Logo 来展示它的速度,并以囊地鼠(Gopher)作为它的吉祥物。 Go入门指南 - 5 - 本文档使用 成部分,Go 语言的设计 者们还是完成了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快 速迁移。 1.2.4 指导设计原则 Go语言通过减少关键字的数量(25 个)来简化编码过程中的混乱和复杂度。干净、整齐和简洁的语法也 如果你打算使用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。 1. Go 原生编译器 gc: 主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用的 C 工具链。 Go 语言的编译器和链接器都是使用 C 语言编写并产生本地代码,Go 不存在自我引导之类的功能。因 此如果使用一个有不同指令集的编译器来构建 Go 程序,就需要针对操作系统和处理器架构(32 位操0 码力 | 380 页 | 2.97 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台- 业务配置 - 资源配置 - 依赖配置 - 流⽔线配置 配置即代码 : 实现⼤规模交付的部署过程可被验证 PaaS 平台:资源管理,容器编排,基础监控和告警 APM 监控:应⽤诊断,链路追踪,⽇志分析 微服务治理组件 可靠的业务 贴身护航 基础⽀撑 持续保障系统稳定性 只需很少的运维投⼊即可保证系统稳定性 端点⼀站式 PaaS - Erda 第⼆部分 端点 PaaS 集群核⼼服务 Helm 镜像服务 Add-on filebeat / telegraf 监控 ⽇志 HPA Operator 注册中⼼ 配置中⼼ API ⽹关 微服务拓扑 全链路追踪 错误分析 ⽇志分析 主动监控 浏览器监控 APP 监控 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库0 码力 | 40 页 | 8.60 MB | 1 年前3
Go在工程实践的错误处理错误信息难以识别 如何完善错误信息 第二部分 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 gRPC错误日志:param error 哪个Client 调用? 哪一行代码 调用? 我的 参数问题? 对方的问题? ... 遇到一个问题,我们就追加一个日志字段,排查错误效率非常低 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 对端信息 配置、对端的IP。 对端请求的方法。 请求的参数信息,包括 header 里的 metadata 响应的数据,包括 header 里的 metadata 错误码和错误信息 请求到响应的耗时时间 调用处执行的行号 总结起来,调试阶段需要对接的信息 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 在调试阶段,日志用红色高亮错误 • 肉眼才能最快的定位到error日志 最外层入口处只记录一次错误日志 为什么定位慢?-- 错误处理 带来新的问题,无法定位整个代码执行链路 两个service方法都调用了 findMysqlFile 不要透传错误 错误码唯一性 记录一次错误 日志分析不出是哪个service 调用了MySQL 为什么定位慢?-- 错误处理 带来新的问题,无法定位整个代码执行链路 不要透传错误 错误码唯一性 记录一次错误 • 不能透传错误,fmt.Errorf0 码力 | 30 页 | 3.11 MB | 1 年前3
云原生go-zero微服务框架设计思考缓存层 iOS PC web 安卓 HTTP协议 日志记录 加解密 鉴权&防重放 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 实践检验,配合K8S弹性伸缩 ● http/rpc框架内建 自适应降载 ● 超时 ● 级联调用 ● 跟客户端超时配合 ● 重试 ● 指数退避 ● 流量quota ● 超时相关性 更多组件 Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪 ● Logging ● Metrics ● 监控报警 可观测性0 码力 | 29 页 | 5.70 MB | 9 月前3
共 52 条
- 1
- 2
- 3
- 4
- 5
- 6













