ArchitectureEvolutionAndGolangPractice

1. 架构演进与Golang实践之路 杨武明 熊猫TV 首席架构师
2. • 杨武明 @yangwm • 熊猫TV • 奇虎360 • 新浪微博 • Golang在视频直播平台的高性能实践 • h1ps://github.com/yangwm/ppt/blob/master/ GolangPerformancePrac@ce.pdf
3. 架构
4. PHP -> 多语言 • PHP+LUA • Node.js • Golang • 少量C/C++
5. 大工程做小 • 轻便构建: 大工程庞大, 不便于快速开发测试 • 服务化部署: 部署机器太多,不便于快速发布与回滚 • 服务依赖: 代码依赖复用,不便于随时更新某块功能 • 模块化持续重构: 大工程,不便于持续重构
6. 服务 • CDN调度:trafficcop • 长连接--房间弹幕: riven • 用户关系: uprofile • 房间: villa • 礼物/数值:magi/count • 用户在线统计: sandglass • API Proxy:apollo • 反作弊--弹幕文本训练:itachi
7. 私有机房 -> 混合云 • 多机房部署 • 私有云/Aliyun/AWS/… • LVS/SLB/ELB • XEN/KVM/Docker • CPU • Net • 普通磁盘/SSD磁盘
8. api服务 • mar@ni / net.h1p / gin / fasth1p • 基于配置/规则的resZul • LB + nginx+h1p • config + rpc • YAML配置文件 • zdaemon / supervisor
9. 多环境配置 • 多环境:dev/demo/beta/online_机房名 • 生成对应环境ini • yaml node to system env
10. logkit • syslog + filelog • 统一根目录 • 子目录:项目名 • 分文件:tag、日志级别 • 同时stdout
11. 数据访问层封装 • 连接池策略 • 负载均衡策略 • 服务发现与健康检查: consul/etcd/自注册 • 拆分策略
12. utils规范逻辑 • resZul路由规则 • 请求参数解析/校验 • 返回值格式 • 扩展concurrent需求 • 自定义加解密规则 • ip格式紧凑/…
13. build templet project • 代码主体结构 • 统一风格与数据格式 • 依赖管理: gvt • 持续集成: termcity/jenkins • 引流测试: gor • 发布部署: rigger/ansible
14. riven • concurrentMap定制化 • 消息优先级 • 消息合并与下发策略 • pprof/GODEBUG
16. Thank You

相关幻灯片