 2.5 Go在猎豹移动的应用
            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 页请下载阅读 -
              
文档评分 
  














 Rust 异步并发框架在移动端的应用 - 陈明煜
          Rust 异步并发框架在移动端的应用 - 陈明煜