长连接

消息推送

冷暖自知 提交于 2019-12-05 02:46:19
一个不具备消息推送功能的APP不能称之为APP,消息推送是产品和运营人员常用用户运营工具。消息推送的目的在于: 通知某件事已发生。如支付成功的扣款提醒,发货提醒等等。 通知平台有什么东西,促进用户进入查看或参与,提升平台活跃、转化和留存。如某条资讯,某个打折活动。 APP推送从是否有前置触发条件看,分为2类: 业务推送,需要触发某个业务逻辑后,程序自动完成推送。如上文提到的发货提醒,程序监控到订单已经产生运单号或已出库,会主动给用户发推送。 营销推送,无前置触发条件,运营人员促进用户转化、活跃、留存为目的而发的非业务推送。如某个抽奖活动,目的在于引导用户打开APP来参与。 对于不同手机操作系统,Android和iOS的消息推送流程有差异,下面分别来介绍。 一、Android推送流程 开发者一般直接使用第三方推送平台服务来完成。当然你也可以选择自己开发一套消息推送方案,这是技术性很强、复杂度很高的项目,大公司可尝试,中小企业就不要想了。从在技术投入、人力成本、实现速度以及最终的效果来看,专业的第三方推送服务商是更好的选择。 Android的消息推送流程如下: 运营人员按照运营目标,确定推送对象和内容。这里的推送对象可以是不同维度的,设备id、账号、标签等。推送对象的数量称为“发送总数”。 推送对象和内容给到第三方推送平台后,并不是直接下发,而是对发送对象对应的设备做有效性筛选

计算机网络

余生长醉 提交于 2019-12-04 20:41:10
1. 在浏览器中输入url地址 ->> 显示主页的过程,整个过程会使用哪些协议 image.jpeg 总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 在浏览器中输入网址之后执行会发生什么? DNS解析,找到对应ip地址 客户端发起http/https请求,然后交给传输层 传输层将请求分成报文段,添加目标源和端口,并随机用一个本地接口封装进报头,然后交给网络层。 网络层加上双方的ip地址信息,并负责路由分发。 链路层中,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包进行传输了,然后发送IP数据包到达服务器的地址。 各种协议与HTTP协议之间的关系一般面试官会通过这样的问题来考察你对计算机网络知识体系的理解。 图片来源:《图解HTTP》 Image.png 2.TCP/IP协议层 image.png image.png image.jpeg 1.1 应用层 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多

websocket学习

ぃ、小莉子 提交于 2019-12-04 15:22:32
//理论部分转载自: https://www.jianshu.com/p/95d259b05c67 谈到Web实时推送,就不得不说WebSocket。谈到Web实时推送,就不得不说WebSocket。Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些方案带来很明显的缺点,需要由浏览器对服务器发出HTTP request,,大量消耗服务器带宽和资源。 面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并实现真正意义上的实时推送。 1. wbesocket是什么? WebSocket是HTML5出的东西(协议) 可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。 WebSocket不是HTTP协议,HTTP只负责建立WebSocket连接 。 WebSocket协议本质上是一个基于TCP的 独立的协议,能够在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通信能力。 协议名为"ws",这意味着一个websocket连接地址会是这样的写法:ws://**。websocket协议本质上是一个基于tcp的协议 是服务器实现的。客户端通过html5与服务器交互

workerman源码解读01

最后都变了- 提交于 2019-12-04 15:05:57
序言 Workerman,高性能socket服务框架 Workerman是什么? Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。 Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。 实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。 Workerman的一些应用方向 Workerman不同于传统MVC框架,Workerman不仅可以用于Web开发,同时还有更广阔的应用领域,例如即时通讯类、物联网

聊聊微服务的服务注册与发现

走远了吗. 提交于 2019-12-04 14:12:29
聊起微服务的服务注册与发现,很多人立马就会脱口而出 zk、etcd、consul、eureka 这些组件,进而聊到 CAP 如何取舍,性能如何,高可用和容灾是怎么实现的。 引言 聊起微服务的服务注册与发现,很多人立马就会脱口而出 zk、etcd、consul、eureka 这些组件,进而聊到 CAP 如何取舍,性能如何,高可用和容灾是怎么实现的。 在这之前,站在组件使用者的角度,我想先问这么几个问题: 注册的 IP 和端口怎么确定 ? 实现服务治理还需要注册哪些信息 ? 如何进行优雅的服务注册与服务下线 ? 注册服务的健康检查是如何做的 ? 当服务有节点退出或新的节点加入时,订阅者能不能及时收到通知 ? 我能方便地查看某个应用发布和订阅了哪些服务,以及所订阅的服务有哪些节点吗 ? 看完这些问题后,您也许会发现,对于服务注册与发现,首先应该关注的是服务注册发现本身的功能,然后才是性能和高可用。 一个好的服务注册发现中间件,应该是能完整地满足服务开发和治理的基础功能,然后才是性能和高可用。如果没有想清楚前面的功能,再高的可用性和性能都是浮云。最后,安全也同样重要。 服务端的性能如何 ? 服务发现的容灾策略是怎样的 ? 当我的应用和服务发现中心的网络连接出现问题时,会对我的调用产生什么影响 ? 服务注册中心某台机器宕机或者全部宕机时,会对我的调用产生什么影响 ?

doraemon的python Flask框架 websocket和redis

陌路散爱 提交于 2019-12-04 12:30:01
3. CBV from flask import views ​ class Login(view.MethodView): def get(*args,**kwargs): pass app.add_url_rule("url",endpoint=None,view_function=Login.as_view(name="当前视图函数名,必须唯一,因为他就是endpoint")) 4.Redis 指令: set key value 用来在数据库中设置一个键值对 哈希存储结构{key:value} get key 返回value 用来从数据库转给你去除key相应的value key * 查询当前库中所有的key select dbnum 范围是0-15 用来切换数据库达到数据分离 5.websocket 需求:制作一个即时的通讯工具 先做前段 建立webserver 用Django或者Flask 制作聊天功能 断开连接 连接的分类: 轮询: 不能保证数据实时性 AB Client -> 无限循环和Server对话 有xx的消息吗 长轮询 AB Client -> Client发起请求至Server 有xx的消息吗 -> 等待消息时间 1x/s ->主动断开连接 -> 收到消息主动返回 长连接: AB client ->Server 建立连接并保持不断->A to B -

Nginx初识2

て烟熏妆下的殇ゞ 提交于 2019-12-04 07:01:48
目录 Ngin初识2 配置防盗链 访问日志格式配置 网页优化 LNMP搭建 Nginx与Apache实现动静分离 Ngin初识2 实验环境 nginx server:Centos7 192.168.10.124 apache server:Centos7 192.168.10.121 LAMP server:Centos7 192.168.10.121 注:以下实验为 Nginx初识 的后续 配置防盗链 修改nginx配置 在指定目录添加测试页 访问查看 在另一台主机搭建apache服务 修改配置文件 添加盗链主页 启动服务 测试盗链效果 在nginx服务器 添加防盗链规则 检查是否存在语法错误 重载服务 测试防盗链是否生效(注:可能会因为浏览器缓存的原因导致图片无法加载,打开新的选项卡再次加载即可) 访问日志格式配置 修改配置文件 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; ... access_log logs/host.access.log main; ... #log_format main

纠错:Feign 没用 短连接

谁说我不能喝 提交于 2019-12-04 05:00:12
Feign 默认不是 短连接 疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【 博客园总入口 】 疯狂创客圈 (笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大家介绍三个版本的 高并发秒杀: 一、 版本1 :springcloud + zookeeper 秒杀 二、版本2 :springcloud + redis 分布式锁秒杀 三、版本3 :springcloud + Nginx + Lua 高性能版本秒杀 以及有关Springcloud 几篇 核心、重要的文章 : 一、 Springcloud 配置, 史上最全 一文全懂 二、 Springcloud 中 SpringBoot 配置全集 , 收藏版 三、 Feign Ribbon Hystrix 三者关系 , 史上最全 深度解析 四、 SpringCloud gateway 详解 , 史上最全 五、图解:tomcat的maxConnections、maxThreads、acceptCount | 秒懂 前言 网上很多文章都说,Feign 默认采用短连接进行远程调用,其实,这种结论是不对的。为什么呢? 下面细致的为大家来解读。 Feign中默认情况下的长连接 Feign中,默认情况下,使用的是JDK1.8中的 HttpURLConnection 基础连接类。该类的内部,使用了JDK1

Android 平台上长连接的实现

感情迁移 提交于 2019-12-04 01:15:22
Android 平台上长连接的实现 为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘汰。 Android 上定时运行任务常用的方法有2种,一种方法用 Timer,另一种是AlarmManager。 Timer Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足我们的需求。 AlarmManager AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。 这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。 Android系统提供了AlarmManager类来管理闹钟定时提醒任务。通过AlarmManager实现定时提醒及定时循环提醒。那么,AlarmManager类可以应用到以下场景: 1、定时循环启动组件(Component,如Activity、BroadcastReceiver),这样能替代在后台启动Service进行定时提醒任务 2、实现闹钟的按小时、天

推送技术原理:移动无线网络长连接

核能气质少年 提交于 2019-12-03 18:56:43
移动互联网应用现状 因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。 为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。 从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。本文试图给大家介绍一下我们 极光推送 在 Android 平台上是如何维护长连接。 移动无线网络的特点 因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。 图片源自 cisco.com. NAT 功能由图中的 GGSN 模块实现。 大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰