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 年前3Erda 基于云原生的微服务可观测性 - 刘浩杨
基于云原生的微服务可观测性 刘浩杨 端点科技 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 年前31.2 基于 Golang 构建高可扩展的云原生 PaaS 平台
基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 需要⼀个 DevOps 平台来⽀撑敏捷开发的落地 这⾥需要有⼀个标准的交付平台 运⾏环境 业务 数据 业务系统 C 业务 数据 业务系统 A 业务 数据 业务系统 B 系统负 载 进程 Docker Middlewares: MySQL Redis ElasticSearch Jetty ZooKeeper 特点: 插件化体系 ⼀次安装 应⽤观测 应⽤系统: Servlet Service Dubbo- RPC JVM Middlewares: MyBatis Redis ElasticSearch Jetty 特点: ⽆侵⼊的实现⽅案0 码力 | 40 页 | 8.60 MB | 1 年前3Golang大规模云原生应用管理实践
云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正0 码力 | 23 页 | 7.70 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云原生时代分布式链路追踪实践-曲赛
错综难懂的模块依赖关系 链路梳理难 日志分散 定位过程“击鼓传花” 跨端性能瓶颈分析繁杂 性能分析难 缺乏对系统整体认知的把控 不合理的调用关系 不合理的直连存储 架构治理能力匮乏 云原生可观测性 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 年前3TarsGo微服务开发实践-利开园
• 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 年前3Hello 算法 1.2.0 简体中文 Go 版
来完成本书的创作。 本人自知学疏才浅,书中内容虽然已经过一段时间的打磨,但一定仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 www.hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手 ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上 2 0.1 关于本书 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 若你是算法初0 码力 | 384 页 | 18.49 MB | 10 月前3云原生go-zero微服务框架设计思考
跟客户端超时配合 ● 重试 ● 指数退避 ● 流量quota ● 超时相关性 更多组件 Requests 并发控制 自适应降载 自适应熔断 Rpc Call K8S弹性伸缩 限流 负载均衡 多重防护,保障高可用 ● 链路跟踪 ● Logging ● Metrics ● 监控报警 可观测性 没有度量,就没有优化! ● 数据上报到控制台服务 ● 数据上报到prometheus0 码力 | 29 页 | 5.70 MB | 9 月前32.7 Golang与高性能DSP竞价系统
Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 最终在Client端实现 • ⼀一致性hash: github.com/stathat/consistent • 预先开启⾜足够多的Redis实例,预防增加节点带来的数据 迁移⿇麻烦 Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 专为统计分析⽽而⽣生 • 列存储 • shared-nothing的分布式架构,可扩展性、⾼高可⽤用 • 秒级以内对⼗十亿⾏行级别的表进⾏行统计查询 • 对内存要求⾼高,相当于内存数据库 • JAVA系,开源 曝光统计服务: Druid 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司0 码力 | 51 页 | 5.09 MB | 1 年前3
共 82 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9