用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 服务器 王文庭0 码力 | 31 页 | 3.95 MB | 1 年前3
03 小罗 python与devops Mesos、swarm •服务注册与发现:Zookeeper、etcd、Consul •脚本语言:python、ruby、shell •日志管理:ELK、Logentries •系统监控:zabbix、prometheus 前东家关于Devops的一些实践 Devops传统方式下构建示例 Devops发布流程需要考虑几个问题 1、发布什么应用,发布到哪里(CMDB) 2、发布人员是否有权限(RBAC) 'unreachable': True}}} 监控系统二次开发 Zabbix api 二次开发 https://blog.51cto.com/xiaoluoge/1827151 #coding:utf-8 import time from zabbix_client import ZabbixServerProxy class Zabbix(): def __init__(self,url): self login(user="Admin", password="zabbix") ############## 查询组所有组获取组id ############### def get_hostgroup(self): data = { "output":['groupid','name'] } ret = self.zb.hostgroup.get(**data) return ret Zabbix api 开发的机柜告警平台0 码力 | 22 页 | 1.64 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+db的io,慢sql,索引,join等 代码review,数据结构,日志 GC TCP连接 第四部分 关于监控 如果没有监控… 盲 人 骑 瞎 马 , 夜 半 临 深 池 监控体系 } zabbix,datagod, prometheus… apm工具,商业产品 期望更轻量、无侵入性的业务监控 cat,elk,zipkin等 趋于个性 具有共性 中间件/缓存/数据库/代理/MQ0 码力 | 42 页 | 19.96 MB | 1 年前3
ServiceComb在华为消费者云的亿级用户微服务实践配置服务: Zookeeper etcd 缓存方案: Redis 数据库方案: DB + MQ 服务治理 服务治理: 超时、流控、 降级等 运维KPI: ELK Zabbix 调用链: zipkin 选择ServiceComb的原因: 实践- API First Website: http://servicecomb.incubator.apache.org/0 码力 | 15 页 | 1.15 MB | 1 年前3
1_丁来强_开源AIOps数据中台搭建与Python的作用应⽤用层性能监控 应⽤用层 ⽇日志 指标监控 prometheus + grafana + thanos elastic stack, TICK stack, Open Telemetry Zabbix, statsd, collectd Nagios, fluentd ⼏几个监控⽅方案作为中台的能⼒力力⽐比较 ⽅方案⽐比较 Prometheus Stack Elastic Stask TICK0 码力 | 48 页 | 17.54 MB | 1 年前3
Java 应用与开发 - HTTP 会话跟踪技术中国海洋大学 November 25, 2018 大纲 会话基本概念 会话跟踪技术 本节习题 学习目标 1. 掌握会话的基本概念,理解会话不是仅仅使用 HTTP 协议 就能够保证的,而是客户端浏览器和服务器端在 HTTP 协 议之上采用额外的技术协同的结果。 2. 掌握常用的会话跟踪技术,了解采用 URL 重写维持会话跟 踪的方法;理解 Cookie 和 Session 的协同机制,掌握使用 Cookie 会话基本概念 会话跟踪技术 本节习题 什么是会话 ▶ 在 Web 应用中把客户端浏览器开始请求 Web 服务器,访问 不同 Web 文档进行请求/响应,到结束访问的一系列过程称 为会话,即一次会话(Session)。 ▶ 当用户访问第一个 Java Web 组件时,Java EE Web 服务器 自动为用户创建一个会话对象。 例如,当当网进行图书浏览、购买、完成结算的全过程可能是一 次会话;登录 协议的会话跟踪技术,用 于记录会话的状态信息。 O 什么是会话跟踪 ▶ 在一个会话内,当用户在次访问时,服务器需要能够定位是 先前访问的同一个用户。 ▶ Web 应用需要在用户访问的一个会话内,让 Web 服务器保 存客户的信息(如客户的账号或客户的购物车),称为会话 跟踪,即 Web 服务器必须使用某种技术保存客户的信息。 大纲 会话基本概念 会话跟踪技术 本节习题 Java EE Web0 码力 | 54 页 | 824.47 KB | 1 年前3
Go 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 年前3
Python3 基础教程 - 廖雪峰用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符 到内存里,编辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到 文件: 浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再 传输到浏览器: 所以你看到很多网页的源码上会有类似的信息, 表示该网页正是用的 据交换的地方,通常是磁盘、网络等,就需要 IO 接口。 比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络 IO 获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要 首页的 HTML,这个动作是往外发数据,叫 Output,随后新浪服务器把 网页发过来,这个动作是从外面接收数据,叫 Input。所以,通常,程 序完成 IO 操作会有 Input 和 Output 两个数据流。当然也有只用一个的 管,数据就是水管里的水,但是只能单向流动。Input Stream 就是数据 从外面(磁盘、网络)流进内存,Output Stream 就是数据从内存流到外 面去。对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根 水管,才可以既能发数据,又能收数据。 由于 CPU 和内存的速度远远高于外设的速度,所以,在 IO 编程中,就 存在速度严重不匹配的问题。举个例子来说,比如要把 100M0 码力 | 531 页 | 5.15 MB | 1 年前3
Node.js Manual & Documentationwritten with Node which responds with 'Hello World': 下边是一个用 Node 编写的对所有请求简单返回'Hello World‘的 web 服务器例 子: var http = require('http'); http.createServer(function (request, response) { response the server, put the code into a file called example.js and execute it with the node program 要运行这个服务器程序,只要将上述代码保存为文件 example.js 并用 node 程 序执行此文件: > node example.js Server running at http://127.0.0 useful safety mechanism. 注意:就异常处理来说,uncaughtException 是一个很粗糙的机制。在程序中 使用 try/catch 可以更好好控制程序流程。而在服务器编程中,因为要持续运 行,uncaughtException 还是一个很有用的安全机制。 Signal Events 信号事件 function () {} Emitted when the0 码力 | 153 页 | 1.21 MB | 1 年前3
共 268 条
- 1
- 2
- 3
- 4
- 5
- 6
- 27













