用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
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
《Java 应用与开发》课程讲义 - 王晓东. . . . . 227 17.2.6 取得其他客户端信息 . . . . . . . . . . . . . . . . . . . . . . . . . . 229 17.2.7 取得服务器端信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 17.3 课后习题 . . . . . . . . . . . . . . . . 244 19.3.4 将 Cookie 保存到客户端 . . . . . . . . . . . . . . . . . . . . . . . . 244 19.3.5 Web 服务器读取客户端保存的 Cookie . . . . . . . . . . . . . . . . . 245 19.3.6 Cookie 的缺点 . . . . . . . . . . . . . 应用与开发课程的教学体系如图1所示,包括了 Java SE 和 Java EE 两个部分, 每部分都涉及一些验证性实验,另外,会开展两次稍微大一点的集成开发项目。同时, 在学习的过程中会穿插一些开发工具、设计模式、应用服务器和数据库的基本应用。 在课程学习的过程中,希望同学们要有足够的求知欲,养成良好的学习态度,具 备不断探索的精神,多尝新、多实践、多总结。我想这是计算机专业人士应该具备的 基本素养。 1 �0 码力 | 330 页 | 6.54 MB | 1 年前3
NodeJS 中文文档 V0.2.3................................................................................39 net.Server TCP 服务器模块................................................................................................. 群:53090214 共同学习 NodeJS,欢迎加入。 3 Synopsis Synopsis Synopsis Synopsis 总述 总述 总述 总述 使用 node 实现的 web 服务器示例,它返回'Hello World': var http = require('http'); http.createServer(function (request, response) { EventEmitter EventEmitter EventEmitter EventEmitter 事件触发器 事件触发器 事件触发器 事件触发器 Node 中的很多对象都会触发事件,例如:一个 TCP 服务器在收发每个数据流时都触发事件;子进程在退出时 会触发事件。 所有能够触发事件的对象都是 events.EventEmitter 的实例。 事件命名方式使用大小写分隔的风格。例如:'stream'0 码力 | 62 页 | 542.14 KB | 1 年前3
跟我学Shiro - 张开涛........................................................................................... 120 服务器端.................................................................................................. ............................... 136 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 4 服务器端.................................................................................................. ........................................................................................... 170 服务器端..................................................................................................0 码力 | 219 页 | 4.16 MB | 10 月前3
10 WEB攻击与防护技术 徐震 杨亮 《PHP语⾔程序设计》认证和会话管理失效 q 隐藏变量篡改 n 配置管理类(家法不严) q 不安全的数据存储 q 信息泄露和不正确的参数处理 应用安全问题根源 防火墙/IPS OS Web服务器 应用服务器 防火墙\IPS 数据库系统 遗留系统 Web 服务 目录服务 人力资源 计费 定制开发的应用代码 用户和 攻击者 网络层防护(防火墙, SSL, IDS, OS加固) tables) n 数据库服务器攻击,系统管理员帐户篡改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx') n 取得系统较高权限后,有可能得以在网页加入恶意链接以及XSS n 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作 系统(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务) 23 ">"或类似"script"的关键字),很容易被XSS变种攻击绕过 验证机制 32 3.3.远程文件包含 33 概述 n Remote File Inclusion,远程代码包含 q 一些恶意用户利用网站服务器对文件包含过滤不严格而强行 使网站上的代码包含恶意用户自己的文件,以实现执行特定 脚本,达到对网站进行攻击的目的。 q PHP常见的包含文件的函数有include()、require()和0 码力 | 114 页 | 3.65 MB | 1 年前3
共 264 条
- 1
- 2
- 3
- 4
- 5
- 6
- 27













