用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基于open-falcon的平安云监控
基于open-falcon的 平安云监控 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 团队介绍 Ø 平安云IAAS团队 Ø 负责平安集团IAAS平台建设 Ø 为平安集团内部其他子公司服务 Ø 打造对外的金融云服务 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 背景 Ø 应对云主机快速增长 Ø 打造用户自助服务的监控平台 Ø 适应内部的三级网络架构 背景 云管区 公共服务区 可用区 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 系统定位 Ø 保证基础监控,提供监控通道 Ø 要求高可用、高可扩展 Ø 分离用户、平台管理员 保证告警覆盖率,按类型初始化通用告警策略 Ø 兼顾通用的和个性的监控要求 目录 Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 argus是什么 Ø 是平安云监控系统 Ø 希腊神话里的百眼巨人 Ø 基平open-falcon开发的平安云监控系统 Ø 是一个Go语言实现的项目 目录 Ø0 码力 | 30 页 | 10.40 MB | 1 年前31.每秒百万数据点 Go 应用监控系统演进
每秒百万数据点 Go 应用监控系统演进 张平 AfterShip 高级 SRE 关于 AfterShip 拥抱云原生和开源系统 目 录 监控架构概览 01 如何监控 Go 应用? 02 Metrics 系统架构演进 03 Why VictoriaMetrics so good? 04 总结与展望 05 监控架构概览 第一部分 监控系统架构概览 -- 数据源 监控系统架构概览 -- -- 告警配置 监控系统架构概览 -- 告警通道 如何监控 Go 应用? 第二部分 基于 Prometheus Go 应用监控接入流程 确定指标 为应用埋点 部署应用 配置服务发现 监控展示 指标类型 ● Go 运行时指标 ○ Goroutine 数量 ● 应用层指标 ○ infra_http_request_total ● 业务指标 ○ 总 Tracking 查询量 ○0 码力 | 42 页 | 2.32 MB | 1 年前31.5 Go 语言构建高并发分布式系统实践
go语⾔言在基础服务开发领域的优势? 我遭遇了哪些挑战? ⺫⽬目录 具有go特⾊色的运维 go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了 便利 配套设施= 测试 + 调优 + 监控 + 运维 便利 = 原⽣生profiling⼯工具 + 开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 通信库状态可视化 Æ 最接近业务场景的百万级别压测后台 架构迭代 所有实例组通信数据监控 性能监控与调优 架构迭代 压测平台 拆分多实例 l 缓解GC压⼒力(gc时间减少40%) 按业务类型聚类,⼲ (Keeper + Agent) 对各节点进⾏行管理 l 监控集群 l 控制组件⾏行为(⽤用户重定向) l 连接监控 push 具有go语⾔言特⾊色的运维: 配置管理 具有go语⾔言特⾊色的运维 Æ 配置⽂文件管理与监控 后台->⽣生成配置⽂文件->全部服务器->调⽤用deployd接⼝口,重启或者reload0 码力 | 39 页 | 5.23 MB | 1 年前3Go Web编程
求 DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览 器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内 容随后断开与该服务器之间的TCP连接。 一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器(其实手机端 客户端内部也是浏览器实现的)。 Web服务器的工作原理可以简单地归纳为: 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言 动态语言 的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端 客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果 一个简单的HTTP事务就是这样实现的,看起来很复杂,原理其实是挺简单的。需要注意的是客户机与服务器之间的通 信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。 URL和DNS解析 URL和DNS解析 85 我0 码力 | 295 页 | 5.91 MB | 1 年前32.7 Golang与高性能DSP竞价系统
⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved 简单监控接⼝口: GO 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved 简单监控接⼝口 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • Nginx做前端 • 开多个Go进程 • Nginx的upstream做负载均衡 • Nginx的upstream记得开 keepalive 部署:web服务器 Nginx Go竞价服务 Go竞价服务 Go竞价服务 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 三个多⽉月 第⼀一版正式上线 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 30台竞价服务器,CPU为8核16线程 • 每天100多亿竞价请求 • 峰值20万QPS • 98%响应在10ms以内 • 稳定 线上运⾏行情况 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司0 码力 | 51 页 | 5.09 MB | 1 年前32.3 用golang写一个操作系统
⼤大道⾄至简 l ⽆无⽤用的都会被舍弃 l 互动和映照 l 迭代中前⾏行 结缘Golang:上帝的⼿手法 监控在线系统所有请求的性能,并通过⺴⽹网⻚页进⾏行提供查询功能 简介 功能 模拟ssh登录各server, 采集所有请求的数据 根据服务器、⽇日期、请求,显⽰示所选请求的性能⾛走势图,包括平均和最⼤大响应时间。 选定时期,显⽰示这⼀一天所有请求的请求数⺫⽬目,平均响应时间中,最⼤大响应时间。 均响应时间中,最⼤大响应时间。 可以根据请求数、平均响应时间,最⼤大响应时间对数据时⾏行排序。 代码 1个⽂文件服务器、5个webapi、6个goroutine 部署简单,可以同时在windows和linux上运⾏行 去掉美观的⾏行,只有200来⾏行 ⼩小试⽜牛⼑刀:monitor l 程序员 VS 码农 l Golang VS C++ l 和朋友的⼀一场对话 源 现有互联⺴⽹网的⼤大部分服务形态,都可以在Leither上快速构造出来。 可以构造视频⺴⽹网站、微博、微信、IM。。。。。 所有这些应⽤用,⽤用户体验基本不变的情况下 不需要中⼼心服务器存在 Leither是什么? 数 据 层 底 层 ⺴⽹网 络 层 应 ⽤用 层 数 据 库 系 统 接 ⼝口 邮 件 模 块 前 端 架 构 WEB Server RPC0 码力 | 33 页 | 1014.12 KB | 1 年前33.云原生边云协同AI框架实践
• 随着大模型的发展,AI 计算对算力需求大 幅且快速增长 AI应用到越来越多的边缘场景 分布式协同AI 概念 将人工智能相关的部分任务部署到边缘设备,基于边缘设备、边缘服务 器、云服务器,利用分布式乃至分布式协同方式实现人工智能的技术 数据在边缘产生 边侧逐步具备AI能力 分布式协同AI 核心驱动力 分布式协同AI核心驱动力 • 随着边侧算力逐步强化,边缘AI持续演变至分布式协同AI com/articles/2021/06/22/kubernetes-operators-101-part-2-how-operators-work 为什么使用Operator? • Kubernetes生态系统 比如监控、日志、Dashboard等 • Kubernetes集群基础能力 比如自动化安装、配置、更新等。 • Kubernetes API 避免了重复开发资源的增删改查等框架代码 如何打造一个Operator0 码力 | 37 页 | 2.36 MB | 1 年前3Go 入门指南(The way to Go)
价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 Go 语言自带的工具 godoc 运行在 Google App Engine 上来作为 Web 服务器提供文本内容。在官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览 器中编译并运行 Go,它提供了一些示例,其中包括国际惯例 UTF-8 编码的字符串,就 连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! 1.2.6 语言的用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并 行的支持,这对于游戏服务端的开发而言是再好不过了。 Go 语 语言代码或者包而言,在各个操作系统平台上的可移植性是非常强的,只需要将源 码拷贝到相应平台上进行编译即可,或者可以使用交叉编译来构建目标平台的应用程序(第 2.2 节)。但 如果你打算使用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。 1. Go 原生编译器 gc: 主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用的 C 工具链。 Go 语言的编译器和链接器都是使用0 码力 | 380 页 | 2.97 MB | 1 年前3Go 入门指南(The way to Go)
协程和恢复(recover) 14.7 新旧模型对比:任务和worker 14.8 惰性生成器的实现 14.9 实现 Futures 模式 第 15 章 网络,模板和网页应用 15.1 tcp服务器 15.2 一个简单的网页服务器 15.3 访问并读取页面 15.4 写一个简单的网页应用 第 16章 常见的陷阱与错误 16.1 误用短声明导致变量覆盖 16.2 误用字符串 16.3 发生错误时使用defer关闭一个文件 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 Go 语言自带的工具 godoc 运 行在 Google App Engine 上来作为 Web 服务器提供文本内容。在官网的首页有一个功能叫做 Go Playground,是一个 Go 代码的简单编辑器的沙盒,它可以在没有安装 Go 语言的情况下在你的浏览器中编译并运 行 Go,它提供了一些示例,其中包括国际惯例 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格 式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能 分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服 务端的开发而言是再好不过了。 Go 语0 码力 | 466 页 | 4.44 MB | 1 年前3
共 51 条
- 1
- 2
- 3
- 4
- 5
- 6