pdf文档 2.5 Go在猎豹移动的应用

4.26 MB 24 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档介绍了猎豹移动在业务系统中使用Go语言的应用与实践,包括业务系统的开发、平台建设、协议优化、系统架构设计、配置管理、缓存策略等方面。GO语言因其性能好、静态类型约束、网络模型、并发同步模型等优势被选用,广泛应用于游戏开放平台、支付体系、推送平台等业务。文档还详细描述了协议压缩、TCP优化、API加速等性能优化方案,以及服务发现、负载均衡、分布式ID生成、内存管理、缓存机制等技术实现。
AI总结
《2.5 Go在猎豹移动的应用》 一、选择Go的原因 1. 优雅简洁,少即是多; 2. 性能好,系统级语言; 3. 静态语言,强类型约束; 4. 支持交叉编译和部署; 5. 网络模型与并发同步模型完善; 6. 标准库和内置工具强大; 7. 开源且社区活跃。 二、猎豹移动的应用实践 1. 业务应用: - 全球Passport体系 - 游戏开放平台 - 游戏支付体系 2. 平台建设: - 基于gopush的推送平台和goim - 基于Redis Sentinel的Smart Client - RPC框架 - Gosnowflake发号器集群 - Goconf统一配置管理 三、关键优化与解决方案 1. 协议优化: - 使用pb+gzip压缩,节约流量; - 合并请求,减少协议开销。 2. 网络优化: - 保持长连接,减少TCP Handshake影响; - 采用Proxy模式和动态CDN加速API。 四、SOA架构设计 1. 国内架构:DNS->VIP->LVS->Tengine->Go 2. 海外架构:DNS->ELB DNS->ELB->Go 3. 服务间通信:Thrift或net/rpc 4. 数据存取:Redis SDK和直连MySQL 5. 链路追踪:基于Google Dapper论文,通过依赖context对象实现 6. 服务发现与负载均衡:依赖ZK 7. 弹性调度:支持降级处理和动态扩容 五、RPC选型对比 1. 性能对比: - Thrift:30秒处理111324次,吞吐量为3710次/秒; - gRPC:30秒处理159999次,吞吐量为5333次/秒。 2. 选择gRPC的原因:支持HTTP2,便于移动端使用。 六、雪花ID算法实现 1. 支持数据中心ID和工人ID(最多32个工人) 2. 同一毫秒内支持4096次序号滚动 3. 实现了net/rpc级别的容错机制 七、开发经验与建议 1. 常见问题:defer内存占用、数据库连接池管理、变量作用域、内存分配等 2. 解决方案:合理管理数据库连接、优化内存使用、注意变量生命周期等 八、GoConf配置管理 1. 配置阶段演变: - 阶段1:逐IDC、逐机器修改 - 阶段2:统一提交配置 - 阶段3:统一配置管理(Agent模型) 2. 功能特点:统一管理、节点状态查看、配置回滚、数据安全保障 九、Cache设计与优化 1. 多级缓存:L1 Cache(Go Map缓存,COW保证无锁更新)和Redis作为核心存储 2. 扩展方式:Hash Mod Region 十、接入层优化 1. 避免DNS劫持和失效 2. 协议压缩与合并请求 3. 长连接优化,减少RTT影响
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 17 页请下载阅读 -
文档评分
请文明评论,理性发言.