消息推送(Push)就是通过服务器把内容主动发送到客户端的过程。运营人员通过自己的产品或第三方工具对用户移动设备进行主动消息推送。完成推送后,消息通知会展示在移动设备的锁定屏幕及通知栏上,用户点击通知即可去往相应页面。
现在流行的消息推送实现方式,主要为长链接方式实现。其原理是客户端主动和服务器建立TCP长链接,长链接建立之后,客户端定期向服务器发送心跳包用于保持链接,当有消息要发送的时候,服务器可以直接通过这个已经建立好的长链接,将消息发送到客户端。
个推作为国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。个推消息推送,也是运用长链接的方式实现消息推送的,其长链接稳定性高、存活好,消息送达率高。开发者通过集成个推消息推送SDK,即可简单、快捷地实现Android和iOS平台的消息推送功能,有效提高产品活跃度、增加用户留存。
如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。
个推的合作客户
不了解ET的,点击 >交换机和hubSwitch和Hub是有区别的,比如一个100M的Switch,对每一个连接在Switch的计算机都是100M的速度,而Hub是瓜分100M的资源。而且Hub是通过广播来通信,很占网络资源。
简单说hub没有路由算法,他是简单的碰撞通信,而交换机部一样,她有自己的地址表。
打个比方一个8口hub,当端口1上的机器要给端口8上的机器发数据,那这个数据是这样跑的:首先她在端口1上侦听hub上有没有数据在传输,如果没有,端口1就跳出来向hub上喊:“我有数据包要给端口8,请端口8听到后回话” 这个数据被以广播的方式发送到hub上的其余7个口上,每端口都会接到这样的数据包,然后端口2---端口7会发一则消息给断口1:“我不是端口8,请你快tmd释放带宽资源” 与此同时端口8会发消息给断口1:“我是端口8,你在找我吗?”端口1收到上述消息后,会和端口8进行确认,然后他们建立传输链接,完成数据转发。等如果端口1在发送寻找断口8的消息后,没有得到相应,那她还会接着发这个消息,直到收到端口8的回答。等端口1和端口8完整数据转发后,假设他们还要进行通讯,那么hub上还会重复以上的过程。由此可见hub的通信方式点点碰撞,一个数据,需要送达所有的端口,这不但增加了数据转发的时间,更要命的是hub 往往会给网络带来可怕的广播风暴。而相同的工作再交换机就不用这么麻烦,假设端口1和端口8从没有通信过,那么开始的时候,他们的工作和hub一样,端口1要在交换机上找端口8,一旦端口 8返回确认信息,那再端口1上就会生成1个和端口8的地址对应表,这个表里面有所有和端口1通过信的端口,一旦有了这地址对应表,那在以后端口1要和端口 8通讯,就不用这么麻烦,可以直接送达,而且其他的断口也不会知道他们直接正在转发数据,这样不当加快了数据转发时间,而且避免了可怕的广播风暴。
路由器、交换机、hub
· 交换机(Switch)是一种基于MAC(网卡的硬件地址)识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。现在的交换机分为:二层交换机,三层交换机或是更高层的交换机。三层交换机同样可以有路由的功能,而且比低端路由器的转发速率更快。它的主要特点是:一次路由,多次转发。
·集线器(HUB)是计算机网络中连接多个计算机或其他设备的连接设备,是对网络进行集中管理的最小单元。英文Hub就是中心的意思,像树的主干一样,它是各分支的汇集点。HUB是一个共享设备,主要提供信号放大和中转的功能,它把一个端口接收的所有信号向所有端口分发出去。一些集线器在分发之前将弱信号加强后重新发出,一些集线器则排列信号的时序以提供所有端口间的同步数据通信。
·路由器(Router)亦称选径器,是在网络层实现互连的设备。它比网桥更加复杂,也具有更大的灵活性。路由器有更强的异种网互连能力,连接对象包括局域网和广域网。过去路由器多用于广域网,近年来,由于路由器性能有了很大提高,价格下降到与网桥接近,因此在局域网互连中也越来越多地使用路由器。路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,从而构成一个更大的网络。路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。
就路由器与交换机来说,主要区别体现在以下几个方面:
(1)工作层次不同
最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。
(2)数据转发所依据的对象不同
交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。
(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域
由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。
(4)路由器提供了防火墙的服务
路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。
交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广泛应用。
目前个人比较多宽带接入方式就是ADSL,因此笔者就ADSL的接入来简单的说明一下。现在购买的ADSL猫大多具有路由功能(很多的时候厂家在出厂时将路由功能屏蔽了,因为电信安装时大多是不启用路由功能的,启用DHCP。打开ADSL的路由功能),如果个人上网或少数几台通过ADSL本身就可以了,如果电脑比较多你只需要再购买一个或多个集线器或者交换机。考虑到如今集线器与交换机的价格相差十分小,不是特殊的原因,请购买一个交换机。不必去追求高价,因为如今产品同质化十分严重,我最便宜的交换机现在没有任何问题。给你一个参考报价,建议你购买一个8口的,以满足扩充需求,一般的价格100元左右。接上交换机,所有电脑再接到交换机上就行了。余下所要做的事情就只有把各个机器的网线插入交换机的接口,将猫的网线插入uplink接口。然后设置路由功能,DHCP等, 就可以共享上网了redis只是提供一个高性能的、原子 *** 作的分布式队列实现。具体的业务还是得需要你自己定制。
你的需求实际上是一个变形的生产者-消费者实现。对于此类需求,主要是将请求和实际的处理过程解耦,一般都是采取异步的方式来通知请求方,这跟用不用redis其实没有多大的关系。一般的实现方法是你需要将用户的请求封装成一个Task,然后将这个Task再push到redis队列,然后后端的workerphp完全可以多进程、多线程的并发处理Task并将处理结果回调给请求方。这里唯一麻烦点的就是这个Task的设计,需要能够包含请求信息(请求内容,请求方标识等等)
评估中间件掌握方法是关键要选择一个技术上符合要求的中间件既要了解自己的需求,还得能对一个中间件软件作出技术上的评估
我们这里不谈如何了解您的需求,只谈如何对中间件做技术上的评估
随着中间件的广泛应用,最终用户和应用开发商时常面临这个问题
中间件的种类越来越多,单一产品的功能特性又越来越丰富,如果不得要领,就会陷入到无尽的细节之中
因此,掌握方法就非常重要
选择中间件当然不能只关注技术,必须考虑厂商实力、提供的服务、价格等相关因素,但技术上是否满足需要无疑是位居第一位的
以同类中间件的“标准功能”作为参考你完全可以从你的具体需求出发,看看这个软件是否适用,或者好不好
如果你知道你要评估的这一类中间件软件通常具有的功能——我们称它是“标准功能”——你就有了一个可作为参考的依据
你可以看一看你面前的中间件有没有这些“标准功能”,如果没有,是否对你有重要的影响
把握功能需求、非功能需求与技术标准三个方面我们在设计一个软件时,可以把对软件的需求划分成功能需求和非功能需求
功能需求指明软件必须执行的功能,定义系统的行为——即软件在某种输入条件下要给出确定的输出必须做的处理或转换
功能需求通常是软件功能的“硬指标”——如“支持分布式环境中消息的可靠传输”;非功能需求不描述软件做什么,描述软件如何做
非功能需求通常作为软件设计的“软指标”——如“系统具有可伸缩性”
为此,我们可以把功能需求对应的功能称为“功能性特征”,把非功能需求对应的功能称为“非功能性特征”
评估一个中间件软件,最主要的是看这个软件的功能,包括功能性特征和非功能性特征,是否符合我们的要求,或者符合大多数人的通常要求
如果你知道某一种中间件软件的“标准功能”,你可以进一步把它分成“功能性的特征”和“非功能性特征”
如果你不知道,你只需从你的需求出发,研究一下你面前中间件的“功能性特征”和“非功能性特征”是否满足你的功能需求和非功能需求
中间件是处于支撑地位的通用软件,其技术的标准化具有重要意义
中间件对技术标准的支持表现为使用标准的API、使用标准化的技术和实现标准化的功能等几个方面
中间件支持标准通常意味着用户和应用对厂商的依赖更小、应用开发人员学习使用一种新产品更容易,中间件软件可以和更多的系统互 *** 作,技术更开放
因此,评估一个中间件不仅要看它是否具有某项功能,还要看这个功能是否使用了标准的技术
功能性特征是中间件的基本特征中间件的功能性特征是一种中间件软件的基本特征
不同种类的中间件的差异首先表现为基本功能的不同,因此我们不能总结出一套适合所有中间件门类的、一般性的“功能性特征”
对于某一个具体的中间件软件,我们能够把它的功能性特征提取出来
我们假定某一中间件定位于解决分步式环境中消息的发送者和接收者之间消息传输、管理和控制问题,该软件提供了多种消息交换方式、支持多种消息类型,提供可靠传输等服务质量控制机制,该软件支持多系统平台,支持高吞吐量的业务处理很显然,我们可以把“提供多种消息交换方式、支持多种消息类型,提供可靠传输等服务质量控制机制”看成是该中间件的功能性特征,而把“支持高吞吐量的业务处理”作为非功能性的特征
如果中间件的选择者能够从自己的需求中归纳出对中间件的“功能需求”,就可以把它们和面前的中间件的功能性特征做一下对照
功能性特征一般比较容易测试,因而也比较容易验证
非功能性特征是跨中间件的共性特性软件的“非功能需求”是软件需求的重要方面
中间件软件的“非功能性特征”也是中间件功能的重要方面
事实上,中间件软件的非功能性特征是跨中间件种类的、非常重要的一般性特征,是中间件软件功能强大的表现
我们这里采用了在2000年的《中间件——达成灵便的电子商务的技术基础》一文中对成功的中间件的共性特征的归纳(做了一点裁减):许多情况下,非功能性和功能性并非有严格的界线
比如,对于消息中间件来说,可靠传输一定是功能性的特征;对于其它的中间件未必如此;对于安全中间件来说,安全不能算作非功能性特征
非功能性特征一般比较难以测试,但仍然是一定程度可测试的
支持标准对于中间件必可缺少面向消息的中间件一直以来缺乏技术标准/规范
自从J2EE制定出基于Java的Java消息传输服务(JMS)以后,人们对消息中间件的技术要求就有多了一项内容
相比较而言,事务处理监控程序(交易中间件)相关的技术规范就要多一些,主要是X/OPEN(现称为OPENGROUP)的分布式事务处理系列规范,包括TPM的架构、应用与TPM的接口及事务提交管理协议等重要内容
对于J2EE应用服务器,技术规范的影响就更大
我们甚至可以说,J2EE应用服务器的功能体现在了对技术标准和规范的支持上
标准/规范虽然重要,我们不可迷信,唯标准是从
因为,第一,“标准”可能仅是建议性的,并非所有的厂商都会遵守;第二,“标准”可能是妥协的结果,只是将提交的多个可选内容统统收入,各项内容甚至不能互换;第三,“标准”可能是不完整的,仅仅实现了标准要求的内容可能意味着欠缺重要的功能
比如,X/OPENDTP模型中定义的应用与TPM的接口就是妥协的结果
所谓“标准”就是两个厂家提交的完全不同的建议的罗列,两者完全不能互换
事实上也未见第三家厂商遵从上述的“标准”
这样的“标准”也只咎由自取参考意义
在看JMS,JMS当前规范只涉及一个消息服务器,规范只保证该服务器的客户方都使用一个一致的接口
如果厂商只是实现了JMS规范定义的内容,那么它就必不能支持服务器到服务器之间的可靠传输,其功能就会大打折扣
无论是用户还是中间件厂商,对标准都不应该迷信
中间件对标准的支持一般会体现在软件的功能性特征上,多数情况下是可测试和验证的
QQ通讯原理:QQ有两种登陆模式
一种是比较不常用的:直接登陆服务器,所有信息由服务器转发,这种登陆模式有个特点就是你会发现你使用获取IP版本的QQ无法获取对方的IP~
另一种是普通的:首先连接登陆服务器,在给对发发消息的时候,首先尝试与对方进行打洞连接,如果可以打通消息直接发送给对方,如果不能打通,则消息转发服务器,由服务器转发
QQ是一个基于TCP/UDP协议的通讯软件
在TCP/IP协议中 唯一标识一个应用进程的是socket 它通过网络层的IP地址和传输层的端口号来实现 对与同一个IP地址的内部网络 通过不同的端口号来标识不同的QQ进程 当你登陆QQ服务器的时候 服务器会保留你的保留IP地址和端口号信息 并在你的好友的QQ进程中进行列表显示 然后两个进程就可以通信了
发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机 当接收计算机同意接收的确认消息反馈到消息服务器后 消息服务器将据此设置好文件传输对话 发送计算机与接收计算机就会在确定好的端口范围内 建立起TCP或UDP连接开始文件的检索与传输。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)