用Go语言实现推送服务器用Go语言实现推送服务器 陈叶皓 chen.yh@ctrip.com 议程 • 推送服务器介绍 • Golang特点 • 推送服务架构 • 部分代码 • 上线效果 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 什么是推送服务器 • 推送业务信息到手机端 • 始终保持连接 推送服务器要求 • 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 无单点故障 Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 – 使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池 包含一 个获取返回值的channel 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 逻辑架构 去中心化设计 • 客户端随机连接 • Redis集中存储地址表 • 信息发送2跳到达 消息缓存设计 • 消息预存(Redis) • 尝试发送 • 发送成功后删除 客户端注册时序图 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 串行场景-Socket0 码力 | 25 页 | 260.04 KB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭1)分摊中⼼压⼒ 2)降低延迟 3)隐藏源站 4)边缘计算 5)边缘存储 场景:设备就近接⼊/处理 ⼀句话概括,让设备具备边缘计算的能⼒。⽬前主要提供两种接⼊⽅式: 1)设备对接内置HPMQLite程序 2)设备通过MQTT协议透明接⼊ 为什么需要可编程性 带来什么好处? 设备 程序 mqtt HPMQLite 上层MQTT Broker0 码力 | 31 页 | 3.95 MB | 1 年前3
Python3 基础教程 - 廖雪峰一个电子邮件客户端几天就能开发出来。 Python 就为我们提供了非常完善的基础代码库,覆盖了网络、文件、 GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用 Python 开发,许多功能不必从零编写,直接使用现成的 即可。 除了内置的库外,Python 还有大量的第三方库,也就是别人开发的,供 你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以 用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符 到内存里,编辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到 文件: 浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再 传输到浏览器: 所以你看到很多网页的源码上会有类似的信息, 表示该网页正是用的 编码。 格式化字符串的时候,可以用 Python 的交互式命令行测试,方便快捷。 参考源码 the_string.py 使用 list 和 tuple list Python 内置的一种数据类型是列表:list。list 是一种有序的集合,可以 随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个 list 表示: >>> classmates =0 码力 | 531 页 | 5.15 MB | 1 年前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 31 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . union 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.14 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.14 . . . . . . . . . . . . . . . . . 94 5 内置异常 95 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2 从内置异常继承 . . . . . . . . . . . . . . . . . .0 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 31 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . union 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.14 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.14 . . . . . . . . . . . . . . . . . 94 5 内置异常 95 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2 从内置异常继承 . . . . . . . . . . . . . . . . . .0 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.11.10 . . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 29 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 内置类型 31 4.1 逻辑值检测 . . . . . . . . . . . . union 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.13 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.13 . . . . . . . . . . . . . . . . . 93 5 内置异常 95 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2 从内置异常继承 . . . . . . . . . . . . . . . . . .0 码力 | 2248 页 | 11.10 MB | 10 月前3
Python 标准库参考指南 3.11.10 . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 31 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.13 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4 . . . . . . . . . . . . . . . 98 5 内置异常 101 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.2 从内置异常继承 . . . . . . . . . . . . . . . .0 码力 | 2399 页 | 11.19 MB | 10 月前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . 4 2 内置函数 7 3 内置常量 33 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 内置类型 35 4.1 逻辑值检测 . . . . . . . . . . . union 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.14 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.14 . . . . . . . . . . . . . . . . . 96 5 内置异常 97 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.2 从内置异常继承 . . . . . . . . . . . . . . . . . .0 码力 | 2246 页 | 11.74 MB | 10 月前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . 4 2 内置函数 7 3 内置常量 33 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 内置类型 35 4.1 逻辑值检测 . . . . . . . . . . . union 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.14 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.14 . . . . . . . . . . . . . . . . . 96 5 内置异常 97 5.1 异常上下文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.2 从内置异常继承 . . . . . . . . . . . . . . . . . .0 码力 | 2242 页 | 11.73 MB | 10 月前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . 4 2 内置函数 5 3 内置常量 27 3.1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 内置类型 29 4.1 逻辑值检测 . . . . . . . . . . . 上下文管理器类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.12 其他内置类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4 14 整数字符串转换长度限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5 内置异常 87 5.1 基类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2052 页 | 9.74 MB | 10 月前3
共 348 条
- 1
- 2
- 3
- 4
- 5
- 6
- 35













