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大规模云原生应用管理实践频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正 事件驱动+主动轮询 • 重试 + 幂等 • 自愈 • e2e测试 • Ginkgo BDD • Kind本地K8s集群 新的复杂度-最终一致性 status: … phase: succeed … • 过期的状态 • 版本冲突 • 业务及时性 status: currentBatch: 1 lastPhaseTransitionTime: "2020-10-29T13:43:48Z" ApplicationConfiguration name: oamhsf uid: 73eec338-c3c1-4936-bc5b-3c47f2eb63bc 使用ownerRef做事件触发 新的复杂度-可观测 应用为什么没有到终态? • 关联资源太多 • 关联控制器太多 • 异步响应式 status: � workloads: - componentName: oamhsf-group-10 码力 | 23 页 | 7.70 MB | 1 年前3
云原生时代分布式链路追踪实践-曲赛错综难懂的模块依赖关系 链路梳理难 日志分散 定位过程“击鼓传花” 跨端性能瓶颈分析繁杂 性能分析难 缺乏对系统整体认知的把控 不合理的调用关系 不合理的直连存储 架构治理能力匮乏 云原生可观测性 3 4 Trace 标准规范 5 标准 概述 Traces Metrics Logs 状态 OpenTracing 2015年底发起,2016年被批准为CNCF第三 个项目 ✓ 停止更新 务或平台提供分布式追踪,监控,日志, 多维染色,容量评估,架构治理等能力的云原生可观测性系统。 愿景:让开发一切尽在掌握 - 分布式追踪 - 日志 - 服务监控 - 火焰图 - 存储监控 - SDK监控 - CI/CD监控 - 发布变更 - 告警历史 - 服务拓扑图 正交,模块化 相关性 多租户 天机阁2.0 架构 13 天机阁2.0 实践 14 分布式追踪0 码力 | 17 页 | 2.47 MB | 1 年前3
TarsGo微服务开发实践-利开园• Tars应用实践:https://github.com/tarscloud/gopractice RPC:不应该只是RPC • 基本功能:远程函数调用 • 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器 • 格式化 =〉 JSON • 单机withFields • 基于context • 跨服务withFields 基于OpenTracing+Jaeger • 第三库不支持如何解决? 错误码:给主调方更好的提示 • 错误码区分内部错误与请求 • 接口返回error实例 网关: 将问题在团队内部闭环 • 无业务逻辑 • 可观测 • 错误码 • 超时控制 • 增加RPC接口不用发布的解决方案 # curl -d '{"msg":"abc"}' 172.25.0.3:8082/apis/v1/sayHello {"Requ "Data":{"reply":"reply message:hi abc"}} 配置:业务逻辑的高效定制化 • Web配置管理 • 配置热更新 • 基于本地文件 • 线程安全 • 代码可维护性 • 文件读取不全问题(读写冲突) • 使用JSON格式 云原生:TARS上云实践 • K8S+TARS方案:https://github.com/tarscloud/k8stars • 使用Tars名字服务0 码力 | 15 页 | 4.23 MB | 1 年前3
对 Go 程序进行可靠的性能测试夜读 · 对 Go 程序进行可靠的性能测试 主要内容 ● 可靠的测试环境 ● benchstat ● 例子与实践 ○ 例1: 对代码块进行性能调优 ○ 例2: Benchmark 的正确性分析 ○ 例3: 其他的影响因素 ● 假设检验的原理 ● 局限与应对措施 ● 总结 2020 © Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 教科书式的性能测试方法论 码可能先得到短暂的性 能提升,而后由于温度的上升导致性能下降 ○ 虚拟机或(共享)云服务器上可能受到宿主机资源分配等因素导致测量结果不稳定 2020 © Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 性能基准测试的两个基本目标 6 可重复性:在其他外在条件不 变的情况下,性能度量 结果是稳定、可重复的(能复现的才叫 Bug) 可比较性:总是存在一个可以比较的基本线(有比较才有伤害) ,从而消除结果的观测误差 (observational error)。 $ go get golang.org/x/perf/cmd/benchstat $ benchstat --help usage: benchstat [options] old.txt [new.txt] [more.txt ...] options: -alpha α 设置显著性水平 α 的值(默认0 码力 | 37 页 | 1.23 MB | 1 年前3
云原生go-zero微服务框架设计思考跟客户端超时配合 ● 重试 ● 指数退避 ● 流量quota ● 超时相关性 更多组件 Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪 ● Logging ● Metrics ● 监控报警 可观测性 没有度量,就没有优化! ● 数据上报到控制台服务 ● 数据上报到prometheus0 码力 | 29 页 | 5.70 MB | 9 月前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台架构的思考 03 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 需要⼀个 DevOps 平台来⽀撑敏捷开发的落地 这⾥需要有⼀个标准的交付平台 运⾏环境 业务 数据 业务系统 C 业务 数据 业务系统 A 业务 系统负 载 进程 Docker Middlewares: MySQL Redis ElasticSearch Jetty ZooKeeper 特点: 插件化体系 ⼀次安装 应⽤观测 应⽤系统: Servlet Service Dubbo- RPC JVM Middlewares: MyBatis Redis ElasticSearch Jetty 特点: ⽆侵⼊的实现⽅案 实时调⽤延迟展示 特点: 实时反应系统状况 运营决策 视⻆: 系统资源使⽤,系统健康度 报告: 周报 ⽇报 ⼤盘 特点: 提供⾼视⻆的IT运营决策分析 Erda 的可观察性能⼒ 可观察性数据采集 - ⾃动发现并识别 services、 jobs 和 addons - 兼容 telegraf 和 prometheus 协 议 - 即将⽀持 skywalking 和 opentelemetry0 码力 | 40 页 | 8.60 MB | 1 年前3
2.7 Golang与高性能DSP竞价系统Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 最终在Client端实现 • ⼀一致性hash: github.com/stathat/consistent • 预先开启⾜足够多的Redis实例,预防增加节点带来的数据 迁移⿇麻烦 Redis集群 专业DSP解决⽅方案 ©0 码力 | 51 页 | 5.09 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上 提供的排版建议,以及他开发的开源文档主题 Material‑for‑MkDocs 。 在写作过程中,我阅读了许多关于数据结构与算法的教材和文章。这些作品为本书提供了优秀的范本,确保 了本书内容的准确性与品质。在此感谢所有老师和前辈的杰出贡献! 本书倡导手脑并用的学习方式,在这一点上我深受《动手学深度学习》的启发。在此向各位读者强烈推荐这 本优秀的著作。 衷心感谢我的父母,正是你们一直以来的支 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 专业术语会使用黑体(纸质版和 PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 ‧ 重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。0 码力 | 384 页 | 18.49 MB | 10 月前3
共 72 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8













