1-5 Go 语言构建高并发分布式系统实践

上传人:飞****9 文档编号:131329152 上传时间:2020-05-06 格式:PDF 页数:39 大小:5.23MB
返回 下载 相关 举报
1-5 Go 语言构建高并发分布式系统实践_第1页
第1页 / 共39页
1-5 Go 语言构建高并发分布式系统实践_第2页
第2页 / 共39页
1-5 Go 语言构建高并发分布式系统实践_第3页
第3页 / 共39页
1-5 Go 语言构建高并发分布式系统实践_第4页
第4页 / 共39页
1-5 Go 语言构建高并发分布式系统实践_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《1-5 Go 语言构建高并发分布式系统实践》由会员分享,可在线阅读,更多相关《1-5 Go 语言构建高并发分布式系统实践(39页珍藏版)》请在金锄头文库上搜索。

1、 周洋 周洋 部 门 360 手机助 手 Weibo johntech o Date 2015 04 25 go语 言并发编程实践语 言并发编程实践 以以360消息推送系统消息推送系统为例为例 如何应对的 go语 言在基础服务开发领域的优势 我遭遇了哪些挑战 目录 具有go特 色的运维 在 高并发 通信交互复杂 重业务逻辑的分布式系统中 Go语 言优势体现在 开发体验好 一定量级下服务稳定 性能满 足 需要 一定量级下服务稳定 50 内部产品 万款开发平台app 实时 长连接数亿量级 日独数 十亿量级 1分钟内亿量级 广播 日下发峰值百亿量级 400台物理机 9个独 立集群 国内外近10个ID

2、C 运维管理的go语 言编写的常驻service服务实例接近3000个 业务场景多样 支持聊天场景业务 稳定 支持多款聊天业务app 单通道多app复 用 上 行通道 回调 支持 对智能硬件产品 提供定制化消息推送与转发服务 性能满 足需要 线上单机最 高160w 长连接 24核 E5 2630 2 30GHz 64G内存 qps在2 5w 取决于协议版本 业务逻辑 接 入端 网络状况 测试环境 可以通过300w 长连接压测 网络 连接稳定 无带宽限制 实际可以更 高 决定于 广播时候业务内存开销的cpu消耗带来的 心跳或者业务延时能否接受 以以360消息推送系统为例消息推送系统为例 高并发

3、通信交互复杂 Dispatcher Service Room Service Proxy Service Register Service Saver Service Router Service Session Service Center Service Keeper Agent Zookeeper deployd Logger Service Coordinator Service Id Service deprecat ed 接接入入客客户户端端 AndroidIOSLinux Web WindowsFlash Iframe for ever 消息系统简要架构 单实例 单端 口 多协议

4、复 用 全双 工 单客户端 多app复 用服务单通道 适 用于复杂环境下的 网络的接 入策略 协议完备 简单 数据安全 可扩展 省流量 接 入层 DES RSA ECC AES crossdomain xml ZooKeeper Keeper room register session Coordinator Http PB 0 6 KickTransfer AndroidIOSLinux Web Windows FlashIframe for ever regi ster RPC Admin push 消息系统规模架构 重业务逻辑 高并发 通信交互复杂 Dispatcher Service

5、Room Service Proxy Service Register Service Saver Service Router Service Session Service Center Service Keeper Agent Zookeeper deployd Logger Service Coordinator Service Id Service deprecat ed 接接入入客客户户端端 AndroidIOSLinux Web WindowsFlash Iframe for ever 写 长长连连接接客客户户端端 认认证证或或注注册册的的io调调 用用 加加载载离离线线消消息息

6、 客客户户端端关关注注的的 阻阻塞塞io逻逻辑辑 放放 心心阻阻塞塞执执行行不不 用用担担心心阻阻塞塞线线 程程 调调度度器器会会 帮帮忙忙调调度度其其他他 可可执执行行协协程程 读 内部接 口发送数据 Golang开发 C语 言开发 按 用户来思考问题 按 用户数量开协程 对 一个 用户 至少有两个协程为其服务 Oneloop per thread原则 人为控制线程数 量 使 用epoll timefd eventfd来做 用户io控 制 超时控制 对 用户的通知 io是阻塞执 行的 直接设置deadline 调度 器会对阻塞的协成进 行调度 deadline到了 阻塞解除 超时出错 对于所

7、有io操作建 立的fd映射到指定loop 同 时记录上下 文关系进 行回调设置 超时控制 使 用timefd 通过channel与其他 用户通信 使 用eventfd事件通知的 方式 根据epoll获取 的fd绑定的回调函数和参数进 行回调操作 对外的通信采取阻io或者也可以go出去 不 阻塞主循环 对外通信信全局消息list 在映射到的 eventloop上开连接池进 行消耗 推荐使用 开发体会的对 比 如何应对的 go语 言在基础服务开发领域的优势 我遭遇了哪些挑战 目录 具有go特 色的运维 问题与瓶颈 问题与瓶颈 单机内存占 用 高达69G GC 3 6s 瓶颈 散列在协程 里 面的i

8、o buffer和 对象不复 用 问题与瓶颈 问题与瓶颈 瓶颈 散列在协程 里 面的io 问题与瓶颈 奔放的协程使 用 网络环境不好 引起激增 问题与瓶颈 2 3s的GC 瓶颈 散列在协程 里 面的io 问题与瓶颈 奔放的协程使 用 接 口响应速度 降低 重试 增多 压 力倍增 问题与瓶颈 2 3s的GC 瓶颈 散列在协程 里 面的io 问题与瓶颈 奔放的协程使 用 内存暴涨 问题与瓶颈 io阻塞 协程激增 瓶颈 问题与瓶颈 问题与瓶颈 如何应对的 go语 言在基础服务开发领域的优势 我遭遇了哪些挑战 目录 具有go特 色的运维 go语 言程序开发需要找到 一种平衡 既利 用协程带来的便利性

9、又做适当 集中化处理 套路 任务池集中数据合并请求 连接池 pipeline 利 用全双 工特性 经验 一 性能优化 性能优化 io集中处理 通信库 性能优化 io集中处理 通信库 性能优化 数据集中处理 性能优化 数据集中处理 go语 言开发追求开销优化的极限 谨慎引 入其他语 言领域 高性能 服务的通 用 方案 关注 内存池 对象池使 用与代码可读性与整体效率的权衡 经验 二 性能优化 内存池 性能优化 通 用 方案 性能优化 对象池 性能优化 通 用 方案 如何应对的 go语 言在基础服务开发领域的优势 我遭遇了哪些挑战 目录 具有go特 色的运维 go语 言原 生提供的各组 工具 构建

10、分布式系统配套设施 方 面 提供了 便利 配套设施 测试 调优 监控 运维 便利 原 生profiling 工具 开协程模拟测试终端 协程协作模拟业务 go语 言运维管理 方 面的独特魅 力 具有go语 言特 色的运维 可视化平台 Profiling可视化 将常规排查问题从 手 工经验化 变成流程化的过程 比较不同时间维度 两次上线后 进程的各种状态 对于优化上线的效果 可评估 上线新功能发现问题与后续确定KPI神器 具有go语 言特 色的运维 以项 目为例 性能可视化 具有go语 言特 色的运维 可视化平台 Profiling可视化 将常规排查问题从 手 工经验化 变成流程化的过程 比较不同

11、时间维度 两次上线后 进程的各种状态 对于优化上线的效果 可评估 上线新功能发现问题与后续确定KPI神器 通信库状态可视化 最接近业务场景的百万级别压测后台 架构迭代 所有实例组通信数据监控 性能监控与调优 架构迭代 压测平台 拆分多实例 l 缓解GC压 力 gc时间减少40 按业务类型聚类 广播 io密集 多播 点对点 内部通信密集 聊天室 cpu密集 分层服务 按层次扩展改为分集群 Set Cell思想 各 自独 立 又具备全被全部功能 子集群 l 按业务拆分 助 手 卫 士 浏览器 l 按功能拆分 push 聊天 嵌 入式产品 l 按IDC拆分 zwt bjsc bjdt bjcc sh

12、gt shjc shhm Amazon Singapore 拆解后带来管理成本 引 入 zookeeper deployd Keeper Agent 对各节点进 行管理 l 监控集群 l 控制组件 行为 用户重定向 l 连接监控 push 具有go语 言特 色的运维 配置管理 具有go语 言特 色的运维 配置 文件管理与监控 后台 生成配置 文件 全部服务器 调 用deployd接 口 重启或者reload zookeeper 动态修改配置 文件 各个服务器上实例通过sdk订阅 profiling 接 口 后台定期获取 调 用go pprof 生成 文件 存储 通信库实时数据http接 口 后

13、台定期获取 进 入数据库 展 示 具有go语 言特 色的运维 工具 生成项 目公共 文件夹下的 go 配置 文件 客户端sdk keeper通信 告知 身份 原 子性的换掉全局配置 文件 客户端sdk 集成profiling功能 keeper调 用并存储 客户端sdk 自定义信息 通信库信息 keeper调 用并存储 keeper本地保持所有客户端状态信息 按时间和需求获取其他富信息 提供接 口给后台 所有组件都必须通过 网络启动 通过agent调 用命令 行 架构迭代 总结回顾 go语 言在基于并发协作的 重业务逻辑的基础服务 方向 非常适 用 适 用 开发体验好 服务稳定 性能满 足需 要 go语 言程序开发需要找到 一种平衡 既利 用协程带来的便利性 又做适当集中化处理 套路 按请求和业务逻辑并 行 任务池集中数据合并请求 连接池集中收发 go语 言开发追求开销优化的极限 谨慎引 入其他语 言领域 高性能服务的通 用 方案 内存池 对象池使 用 与 代码可读性与整体效率的权衡 go语 言原 生提供的各组 工具 构建分布式系统配套设施 方 面 提供了便利 生态圈 测试 调优 监控 运维 便利 原 生profiling 工具 通信库集成监控 协程协作模拟业务压测 谢 谢 北京奇虎科技有限公司

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号