Go在工程实践的错误处理Golang在工程实践中的错误处理 彭友顺 石墨文档 产研负责人 目 录 为什么我们处理错误会这么慢 01 如何完善错误信息 02 优雅处理错误信息 03 分布式错误处理 04 错误信息手册的必要性 05 为什么我们处理错误 会这么慢 第一部分 错误信息不够完善 why 原因 出现 错误 定位 慢 恢复 慢 效率低 为什么我们处理错误会这么慢 错误处理不够优雅 如果不在写代码的时候花时间做唯一错误码,那么只能在排查的时候 花更多时间查问题 并没有定位到根本问题 分布式错误处理 第四部分 为什么定位慢?-- 分布式错误 TraceId 分布式信息 在微服务体系中,每个应用会涉及多种组件和调用多个业务API, 导致调用链变得复杂,整体架构的复杂度也随之增加。 A服务出现了问题,可能是由其他B,C,F,G等服务引起的 错误尽早失败 串联信息 为什么定位慢?--0 码力 | 30 页 | 3.11 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣Golang 在接入层长连接服务中的实践 黄欣 基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率0 码力 | 31 页 | 1.67 MB | 1 年前3
GoFrame框架介绍及设计• 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 • 文档详尽、易于维护 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 特点 应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 实现相同功能逻辑的模块百花齐放,选择成本过高 • 项目依赖的模块过多,项目整体的稳定性会受到影响 • 项目依赖的模块过多,无从下手是否应当升级模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高, 开发体系难以建立,开发规范难以统一 模块化设计-模块聚合设计 • 框架核心维护较全面的通用基础模块,降低基础模块选择成本 • 我们只需要维护一个统一的框架版本,而不是数十个模块版本 • 我们只需要了0 码力 | 37 页 | 8.84 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬©2016-2021 4 趣链科技 版权所有 ©2016-2021 4 区块链诞生 区块链是互联网发展到一 定阶段的必然产物,是在 低成本、高效、快捷的基 础上对其安全可信及多元 价值传递与贡献分配体系 的完善。 物理世界 价值互联网 移动互联网 互联网 数据可信 资产可信 合作可信 可信 普适 信息 数字世界 5 趣链科技 版权所有 ©2016-2021 5 趣链科技 版权所有 术相互促进,融合发展,共同开创更大价值空间,加快新兴技术商业落地 利用区块链的去中心化、数据 不能篡改的特性,解决制约云 计算发展的“可信、可靠、可 控”的问题。 融入大数据采集和共享中,作 为数据源接入大数据分析平台。 强化分布式数据存 储和边缘计算能力, 拓展物联安全边界 和应用范围。 为训练深度学习系统提供可信数据, 优化分析决策的准确性和可信性。 人工智能 区块链 云计算 物联网 数据层 区块结构 账户体系 账本数据结构 安全层 核⼼安全机制 ⾝份隐私保护 数据隐私保护 共识层 分布式⼀致性算法 典型共识算法 新型共识算法 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计0 码力 | 39 页 | 56.58 MB | 1 年前3
2.5 Go在猎豹移动的应用 业务 猎豹移动全球passport体系; 游戏开放平台; 游戏支付体系; 平台 基于gopush的推送平台&goim; 基于redis sentinel的smart client; rpc框架; gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 0 码力 | 24 页 | 4.26 MB | 1 年前3
Go可观测性实践Go工程可观测性实践 周曙光 得物 Go开发 目 录 可观测性概述 01 链路追踪 02 指标 03 可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 API • SDK • Exporter • Collector OTel Collector • Receiver • Processor • Exporter 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分 无所不在的部署 持续监控 低消耗 应用级透明 延展性 链路追踪设计目标 链路追踪 Dapper 每个请求都生成一个全局唯一的 ParentID:区别请求链路中的嵌套包含关系,根Span没有ParentID。 • 时间戳:每个Span必须展示开始时间。 • 执行时长:每个Span都必须记录工作开始到结束时花费的时长。 Go工程插桩(Instrument) 需要对业务开发者几乎零成本的接入链路追踪,几乎完全依赖于少量通用组件库的改造。 当一个请求在处理跟踪控制路径的过程中,需要把跟踪的上下文存储在ThreadLocal中,在Go中 就是存储在Con0 码力 | 35 页 | 2.88 MB | 1 年前3
2.游戏战中陪伴助手微服务架构设计与应用游戏战中陪伴助手微服务架构设计与应用 张敏 - AndruZhang 腾讯 - 高级后台工程师 目 录 功能介绍 01 早期探索 02 方案设计和工程实现 03 性能和成本优化 04 DevOps 建设 05 总结 & QA 06 功能介绍 第一部分 战中陪伴助手介绍——和平精英最佳第五人 战中陪伴助手介绍——和平精英最佳第五人 • 游戏战斗中指导 / 建议 • 敌人在附近 运营简易度: 设计新运营策略的难度 - 开发迭代: 如需开发介入,那么功能迭代的速度 - 可解释性: 理由是否能否说服玩家遵从建议 - 对用户价值: 提升玩家体验 / 吃鸡率的帮助有多大 推荐系统接入——系统架构 推荐系统: 向量化 方案探索——资源点推荐 针对具体场景开发 - 专利:《一种在游戏中离线挖掘、实时推荐资源点的方案》 - 大数据挖掘资源出现位置 - 左:配置文件 - 右:大数据挖掘 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 方案设计和工程实现 第三部分 方案设计——Token、策略 更加具有通用性的方案 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配0 码力 | 47 页 | 11.10 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路数据存储、数据传输 带宽减少40% 2GB -> 1.2GB MaxwellConsumer 03. 通过golang接口的方式,实现业务与框架代码分离 DataManager 04. 工程化的通用数据管理器,提供正排、倒排等丰富的查询模式 数据存储 倒排更新过程 冷热数据交换后,DataManager中 部分数据可能交换到远端存储 本地没有数据实体,数据发生更新, 主动式内存缓存框架,增加研发效率,为业务赋能 业务代码与框架代码分离,聚焦业务开发 缓存接入成本低,无需关注内部的管理,开箱即用 提供灵活的查询、过滤、排序、分页等接口,为查询业务赋能 开发者无需关注缓存与数据库的数据一致性,框架层面有保障 框架提供脚手架,框架代码自动生成,减少心智负担 海量数据可扩展,接入冷热数据交换策略,只需简单配置 海量数据存储,不会触发GC扫描,服务性能无压力0 码力 | 48 页 | 6.06 MB | 1 年前3
Golang 微服务在腾讯游戏用户运营领域的探索及实践DSL加速敏捷 基准数据 总结及展望 腾讯游戏用户运营 关于腾讯游戏用户运营 Intervene 干预 Measure 评估 User 用户 核心 用户 特权 服务 忠诚度 技术体系 服务化架构演进 演进历程 MVC Middleware Gateway MicroServic e 经典LNMPA架构 先抗住再优化 业务混合部署 面向需求实现 效率质量之痛 流程 高性能 高可用 扩展性 安全性 可运营性 业务发展驱动技术演进 服务网关 过载保护 流控降级 SET部署 立体监控 敏捷集成 微服务探索 跨部门 异构系统 非标接口 托管接入 业务隔离 解析适配 IDL • 标准接口 • 字段约定 Script 转码逻辑 • 非标接口 • 逻辑编码 问题 手段 嵌入脚本选型 • Expression、Learning0 码力 | 34 页 | 1.22 MB | 1 年前3
基于open-falcon的平安云监控为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 为什么选用Go Ø 自带goroutine,容易实现高并发程序 Ø 标准库功能键全 Ø 方便引用第三次库 Ø 为工程化设计的语言 Ø Interface的设计 Ø 自带profile工具 Ø 自带单元测试框架 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go 做到租户隔离 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 argus的现状 Ø 接入云平台24K台虚拟机的监控 Ø 采集480W监控项 Ø QPS为80K Ø 每天处理69亿条数据 Ø 性能数据查询毫秒级返回 Ø 当前系统负载40%左右 Ø 用户完全自助操作 目录 Ø0 码力 | 30 页 | 10.40 MB | 1 年前3
共 47 条
- 1
- 2
- 3
- 4
- 5













