1.每秒百万数据点 Go 应用监控系统演进
VictoriaMetrics Bytes / Sample 1.2B ~ 1.79B 1.5B 0.69B 压缩率对比 不可忽略的问题 ● 数据完整性校验缺失 ● 可能会丢数据 ○ 没有 WAL(Write-Ahead Log) ● 扩容/维护时可能容易崩溃 ○ vmstorage 没有服务自动发现 ● 兼容性需要关注 ○ MetricsQL 与 PromQL 有差异 总结与展望0 码力 | 42 页 | 2.32 MB | 1 年前3Go在工程实践的错误处理
错误信息难以识别 如何完善错误信息 第二部分 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 gRPC错误日志:param error 哪个Client 调用? 哪一行代码 调用? 我的 参数问题? 对方的问题? ... 遇到一个问题,我们就追加一个日志字段,排查错误效率非常低 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 对端信息 请求方法 总结起来,调试阶段需要对接的信息 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 • 在调试阶段,日志用红色高亮错误 • 肉眼才能最快的定位到error日志 • 利用IDE规则,直接点开代码执行行号,跳到指定的代码位置 • 一堆info日志中藏着error日志 • 你能一眼找到error日志吗? 为什么调试慢?-- 错误信息 高亮信息 封装组件 充足信息 框架封装错误信息 gRPC 我们的程序员非常认真 记录了文件不存在的错误日志 • 同样的错误信息,非常多的杂音 • 每个Error,都去查看一次对应代码,排查效率低 • 占用存储空间 • 最外层入口处只记录一次错误日志 为什么定位慢?-- 错误处理 带来新的问题,无法定位整个代码执行链路 两个service方法都调用了 findMysqlFile 不要透传错误 错误码唯一性 记录一次错误 日志分析不出是哪个service0 码力 | 30 页 | 3.11 MB | 1 年前3Go Web编程
使用GDB调试 11.3 Go怎么写测试用例 11.4 小结 12.部署与维护 12.1 应用日志 12.2 网站错误处理 12.3 应用部署 12.4 备份和恢复 12.5 小结 13.如何设计一个Web框架 13.1 项目规划 13.2 自定义路由器设计 13.3 controller设计 13.4 日志和配置设计 13.5 实现博客的增删改 13.6 小结 14.扩展Web框架 14 合 法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。 XSS通常可以分为两大类:一类是存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方, 包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输 入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程 序->进 分,要真正成为让人信任并使用的优秀应用,需要考虑到一些细 节,以上所说的10%就是指这些小细节。 本章我们将通过四个小节来介绍这些小细节的处理,第一小节介绍如何在生产服务上记录程序产生的日志,如何记录 日志,第二小节介绍发生错误时我们的程序如何处理,如何保证尽量少的影响到用户的访问,第三小节介绍如何来部 署Go的独立程序,由于目前Go程序还无法像C那样写成daemon,那么我们如何管理这样的进程程序后台运行呢?第四0 码力 | 295 页 | 5.91 MB | 1 年前3TarsGo微服务开发实践-利开园
TarsGo微服务高效开发 最佳实践 利开园 腾讯高级工程师 2021-08-21 关于我 Docker TarsGo Tars+K8S DevOps 2015至今 腾讯 目录 1. RPC 2. 日志 3. 监控 4. 调用链 5. 网关 6. 错误码 7. 配置 8. 云原生 9. 标准化 背景 • Tars是腾讯开源的微服务解决方案 • 高性能的RPC框架 • 丰富的服务治理能力 • 支 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器 • 格式化 =〉 JSON • 单机withFields • 基于context • 跨服务withFields • 基于透传元数据 • 按大小/时间滚动 • 远程日志 vs 本地日志 的取舍 监控:主动发现问题 • RPC接口默认监控 • 自定义业务监控 • 基于Prometheus0 码力 | 15 页 | 4.23 MB | 1 年前3基于 mesos 的容器调度框架
(https://github.com/hashicorp/raft) 领导选举: 心跳机制来触发选举, term 充当逻辑时钟的作用 日志复制: 领导者把一条指令(能被复制状态机执行)附加到日志中,发起附加条目 RPC 请求 给其他角色 强领导者:日志条目只从 leader 发送给其他的服务器 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 26/36 raft 日志复制 Image credit: the Raft paper (https://raft.github.io/raft.pdf) 2017/8/3 基于 mesos 的容器调度框架 http://go-talks0 码力 | 36 页 | 2.49 MB | 1 年前3Golang大规模云原生应用管理实践
策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 "2020-11-17T18:33:02Z" reason: Successfully reconciled resource status: "True" type: Synced � 应用关联的事件与日志 LAST SEEN TYPE REASON OBJECT MESSAGE 8m56s 新的复杂度-控制器运维 我们要管控大规模的集群,每个集群也会部署大量的控制器,控制器本身的运维成为问题 • 控制器管控平台 • 升级 • 回滚 • 灰度 • 重启 • 观测性 • Prometheus • 统一日志收集 • 事件中心 • 告警 • 能力管控 • 版本管理 • 依赖满足 • 健康检查 云原生PaaS平台的发展趋势 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生PaaS平台0 码力 | 23 页 | 7.70 MB | 1 年前3Go 入门指南(The way to Go)
//do something with e.Value } - `ring`: 环形链表。 time - log : time : 日期和时间的基本操作。 log : 记录程序运行时产生的日志,我们将在后面的章节使用它。 encoding/json - encoding/xml - text/template : encoding/json : 读取并解码和写入并编码 JSON 数据。 为了使这些概念具体化,假设有一个 Customer 类型,我们想让它通过 Log 类型来包含日志功能, Log 类型只是简单地包含一个累积的消息(当然它可以是复杂的)。如果想让特定类型都具备日志功 能,你可以实现一个这样的 Log 类型,然后将它作为特定类型的一个字段,并提供 Log() ,它返回这个 日志的引用。 方式 A 可以通过如下方法实现(使用了第 10.7 节中的 String() runtime.MemStats.Alloc/1024) 上面的程序会给出已分配内存的总量,单位是 Kb。进一步的测量参考 文档页面。 如果需要在一个对象 obj 被从内存移除前执行一些特殊操作,比如写到日志文件中,可以通过如下方式调 用函数来实现: runtime.SetFinalizer(obj, func(obj *typeObj)) func(obj *typeObj) 需要一个 typeObj0 码力 | 380 页 | 2.97 MB | 1 年前31.1 Go语言游戏项目应用情况汇报
玩家数据库切⽚片,减⼩小查询时的集合 • ⽀支持内存事务 • 以事务为单位同步到数据库 • ⽀支持Redo、Undo以及数据挖掘的同步⽇日志 • GC优化 内存数据库代码⽚片段 内存数据库事务(⽰示意) 内存数据库事务回滚 事务⽇日志(⽰示意) 使⽤用lua脚本对同步⽇日志进⾏行数据挖掘 内存数据库的GC优化 - CGO 内存数据库的GC优化 - 数据读取 内存数据库的GC优化 - 数据存⼊入0 码力 | 21 页 | 1.63 MB | 1 年前3云原生时代分布式链路追踪实践-曲赛
云原生时代分布式链路 追踪实践 2021-08 曲赛 (saiqu) 微服务架构的困境 故障定位难 极高的沟通和交接成本 错综难懂的模块依赖关系 链路梳理难 日志分散 定位过程“击鼓传花” 跨端性能瓶颈分析繁杂 性能分析难 缺乏对系统整体认知的把控 不合理的调用关系 不合理的直连存储 架构治理能力匮乏 云原生可观测性 3 4 Trace 标准规范 5 标准 一次网络调用的经过的拦截器数据流 天机阁2.0 简介 12 天机阁2.0是遵循OpenTelemetry标准的,为各业务或平台提供分布式追踪,监控,日志, 多维染色,容量评估,架构治理等能力的云原生可观测性系统。 愿景:让开发一切尽在掌握 - 分布式追踪 - 日志 - 服务监控 - 火焰图 - 存储监控 - SDK监控 - CI/CD监控 - 发布变更 - 告警历史 - 服务拓扑图0 码力 | 17 页 | 2.47 MB | 1 年前3Go在数据库中间件的应用
机房B Dead-Master Latest-Slave Slave Latest-Slave与Master差异 日志 Latest-Slave与Slave差异 日志 Master故障时试图通过Rsync拉取Binlog,最大程度保 证数据不丢失; Slave之间的数据差异通过中继日志恢复。 • 数据恢复工作原理 11 故障主备切换 • 双主多从模式 master slave slave0 码力 | 17 页 | 4.02 MB | 1 年前3
共 26 条
- 1
- 2
- 3