Go可观测性实践Go工程可观测性实践 周曙光 得物 Go开发 目 录 可观测性概述 01 链路追踪 02 指标 03 可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 可观测性开源产品 每种方案都有特定的、自定义的 步骤来生产和转移符合后端存储 的遥测(Telemetry)数据,这就带 来了工具或者厂商的绑定性。 为了解决“厂商锁定问题”,监控和可观测性社区过去创建了很多开源项 目,比如OpenTracing和OpenCensus,这些标准允许用户实时收集遥测 数据并传输到所选择的后端,最终在2019年,两个组织共同组建OTel项目, 并由CNCF负责。 并由CNCF负责。 OTel目前已经成为可观测性方案开源标准,标准的好处就是有了很多选择。 OpenTelemetry OTel 组件 • API • SDK • Exporter • Collector OTel Collector • Receiver • Processor • Exporter 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分0 码力 | 35 页 | 2.88 MB | 1 年前3
Erda 基于云原生的微服务可观测性 - 刘浩杨基于云原生的微服务可观测性 刘浩杨 端点科技 Erda 微服务和监控平台负责人 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 Erda:新一代企业级云原生 PaaS 平台 当前微服务系统面临的挑战 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 可观测性三大支柱 (一)Tracing 模型 (二)Metrics 时序模型 Writes are vertical,reads are horizontal (三)数据关联 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 Erda MSP MSP 微服务观测平台 Erda 微服务观测平台优势 指标覆盖完整 通过多种探针,覆盖基础 设施、业务系统、用户终 端全面的数据指标 高实时性 通过流计算平台,数据 处理和告警延迟都在秒 级别 海量数据 存储处理 高性能的大数据处理架 构,轻松应对海量可观 测性数据处理 平台架构 可观测性数据采集 可观测性数据处理 数据存储选择 ES 数据索引管理 自动路由 指标到索引0 码力 | 25 页 | 6.96 MB | 1 年前3
Golang大规模云原生应用管理实践eventer … 策略 机制 Jaeger 实例 调度策略 链路 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正想要的是策略:大象无形的基础设施,坚如磐石的中间件,丰富高效的应用PaaS平台 基础设施 云原生PaaS平台提供应用管理策略 基础设施 K8s 云原生生态(CNCF) ApplicationConfiguration name: oamhsf uid: 73eec338-c3c1-4936-bc5b-3c47f2eb63bc 使用ownerRef做事件触发 新的复杂度-可观测 应用为什么没有到终态? • 关联资源太多 • 关联控制器太多 • 异步响应式 status: � workloads: - componentName: oamhsf-group-10 码力 | 23 页 | 7.70 MB | 1 年前3
TarsGo微服务开发实践-利开园腾讯内部(TAF)曾经应用最广的开发框架 • Tars应用实践:https://github.com/tarscloud/gopractice RPC:不应该只是RPC • 基本功能:远程函数调用 • 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器 • 格式化 =〉 JSON • 单机withFields • 基于context 基于OpenTracing+Jaeger • 第三库不支持如何解决? 错误码:给主调方更好的提示 • 错误码区分内部错误与请求 • 接口返回error实例 网关: 将问题在团队内部闭环 • 无业务逻辑 • 可观测 • 错误码 • 超时控制 • 增加RPC接口不用发布的解决方案 # curl -d '{"msg":"abc"}' 172.25.0.3:8082/apis/v1/sayHello {"Requ0 码力 | 15 页 | 4.23 MB | 1 年前3
云原生时代分布式链路追踪实践-曲赛错综难懂的模块依赖关系 链路梳理难 日志分散 定位过程“击鼓传花” 跨端性能瓶颈分析繁杂 性能分析难 缺乏对系统整体认知的把控 不合理的调用关系 不合理的直连存储 架构治理能力匮乏 云原生可观测性 3 4 Trace 标准规范 5 标准 概述 Traces Metrics Logs 状态 OpenTracing 2015年底发起,2016年被批准为CNCF第三 个项目 ✓ 停止更新 一次网络调用的经过的拦截器数据流 天机阁2.0 简介 12 天机阁2.0是遵循OpenTelemetry标准的,为各业务或平台提供分布式追踪,监控,日志, 多维染色,容量评估,架构治理等能力的云原生可观测性系统。 愿景:让开发一切尽在掌握 - 分布式追踪 - 日志 - 服务监控 - 火焰图 - 存储监控 - SDK监控 - CI/CD监控 - 发布变更 - 告警历史 - 服务拓扑图0 码力 | 17 页 | 2.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版axuantu、 krahets、night‑cruise、nuomi1、Reanon 和 rongyi 完成(按照首字母顺序排列)。感谢他们付出的时间 与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从算法小 为位数。当数据体量很大时,节省出来的运行时间就能创造较大价值(成本降低、体验变好等)。 在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”地解决了。问题的难易程度一方 面取决于问题本身的性质,另一方面也取决于观测问题的人的知识储备。人的知识越完备、经验越多,分析 问题就会越深入,问题就能被解决得更优雅。 17 第 2 章 复杂度分析 Abstract 复杂度分析犹如浩瀚的算法宇宙中的时空向导。 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 3.4.2 GBK 字符集 后来人们发现,EASCII 码仍然无法满足许多语言的字符数量要求。比如汉字有近十万个,光日常使用的就0 码力 | 384 页 | 18.49 MB | 10 月前3
云原生go-zero微服务框架设计思考Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪 ● Logging ● Metrics ● 监控报警 可观测性 没有度量,就没有优化! ● 数据上报到控制台服务 ● 数据上报到prometheus go-zero如何高效解决问题 支持的特性 ● tag支持:path, form, json ●0 码力 | 29 页 | 5.70 MB | 9 月前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台系统负 载 进程 Docker Middlewares: MySQL Redis ElasticSearch Jetty ZooKeeper 特点: 插件化体系 ⼀次安装 应⽤观测 应⽤系统: Servlet Service Dubbo- RPC JVM Middlewares: MyBatis Redis ElasticSearch Jetty 特点: ⽆侵⼊的实现⽅案0 码力 | 40 页 | 8.60 MB | 1 年前3
对 Go 程序进行可靠的性能测试Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 benchstat 10 benchstat 的功能非常简单,作用只是对性能测试结果进行统计分析,对测量结果进行假设检验,从而消除结果的观测误差 (observational error)。 $ go get golang.org/x/perf/cmd/benchstat $ benchstat --help usage: benchstat0 码力 | 37 页 | 1.23 MB | 1 年前3
GoFrame框架介绍及设计GoFrame框架介绍及设计 郭强 成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 模块丰富、开箱即用 • 简洁易用、快速接入 • 文档详尽、易于维护 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 特点 框架介绍-框架架构 • 发布方式:Docker、二级制、源码模块 • 模块管理: • 核心模块、社区模块、三方模块 • 应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块?0 码力 | 37 页 | 8.84 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













