All posts by 龙生
一文搞懂高并发性能指标:QPS、TPS、RT、并发数、吞吐量
高并发系统系统指标 高并发系统核心指标 一、QPS,每秒查询 QPS:Queries Per Second是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:Request Per Second)。 高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。 二、TPS,每秒事务 TPS:是Transactions Per Second的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户端向服务器发送请求然后服务器做出响应的过程。客户端在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。 QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。 来自维基百科的解释如下: 在非常普通的意义上,术语每秒事务数是指每秒由某些实体执行的原子动作的数量。从更严格的角度来看,DBMS供应商和用户社区通常使用该术语来表示每秒执行的数据库事务数。 最近,该术语已被用来描述一种加密货币的交易率,例如运行比特币区块链的分布式网络。能够适应实际交易量的交易速率的发展是加密货币技术研究的重要领域。 三、RT,响应时间 RT(Response-time)响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。该请求可以是任何东西,从内存获取,磁盘IO,复杂的数据库查询或加载完整的网页。 暂时忽略传输时间,响应时间是处理时间和等待时间的总和。处理时间是完成请求要求的工作所需的时间,等待时间是请求在被处理之前必须在队列中等待的时间。 响应时间是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。 四、Concurrency,并发数 并发数是指系统同时能处理的请求数量,这个也反应了系统的负载能力。 并发意味着可以同时进行多个处理。并发在现代编程中无处不在,网络中有多台计算机同时存在,一台计算机上同时运行着多个应用程序。 五、吞吐量 系统的吞吐量(承压能力)和处理对CPU的消耗、外部接口、IO等因素紧密关联。单个处理请求对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。 系统吞吐量有几个重要指标参数:QPS(TPS)、并发数、响应时间。 QPS(TPS):(Queries Per Second)每秒钟请求/事务数量。 并发数: 系统同时处理的请求/事务数。 响应时间: 一般取平均响应时间。 理解了上面三个指标的意义之后,就能推算出它们之间的关系: QPS(TPS)= 并发数/平均响应时间 并发数 = QPS*平均响应时间 六、实际举例 我们通过一个实例来把上面几个概念串起来理解。按二八定律来看,如果每天 80% 的访问集中在 20% 的时间里,这 20% 的时间就叫做峰值时间。 公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 每天300w PV 的在单台机器上,这台机器需要多少QPS? ( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS) 如果一台机器的QPS是58,需要几台机器来支持? 139 / 58 […]
View DetailsRocketChat:开源聊天软件部署
RocketChat是一款优秀的开源聊天软件。支持各种平台,IOS、Android、Web、Mac、Windows以及Linux,安装部署简单,功能简单易用,目前部分功能还在完善当中,特别适合小公司自建聊天平台。项目开源地址 https://github.com/RocketChat,项目官方站点https://rocket.chat,这里将安装部署服务端的一些步骤分享给大家,希望对需要的小伙伴有所帮助。
View DetailsOpenFire源码学习之二:Mina基础知识
Apache MINA(Multipurpose Infrastructure for NetworkApplications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA所支持的功能也在进一步的扩展中。
View Detailsjava应用之openfire入门篇
openfire是一个聊天服务端,好比qq服务端.本质是个socker server.
openfire通讯协议是 xmpp ,什么是xmpp参考百科 https://baike.baidu.com/item/XMPP/3430617?fr=aladdin
View DetailsEjabberd介绍
Ejabberd是一个用Erlang/OTP写的开源即时通讯服务器,其是跨平台、分布式、容错且基于开放标准的实时通讯系统。Ejabberd是一个功能丰富的XMPP服务器,同时适合小规模和超大估摸部署,无论是否需要可伸缩性。
View DetailsMQTT的介绍及Java实现MQTT通讯
关于MQTT
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。
MQTT 发布订阅
软件安装
服务端:mosquitto
下载页面:https://mosquitto.org/download/
MQTTX
下载页面:https://mqttx.app/zh#download
MQTT.fx
下载链接:http://www.jensd.de/apps/mqttfx/1.7.1/mqttfx-1.7.1-windows-x64.exe
备份的蓝奏云下载链接:https://ioufev.lanzout.com/irlNC064nc4f
MQTT 协议
MQTT 是物联网(Internet of Things,IoT)的 OASIS 标准消息传递协议。它被设计为一个极其轻量级的发布/订阅消息传输,非常适合用较小的代码占用和最小的网络带宽连接远程设备。
View DetailsMQTT vs. XMPP
XMPP 是老牌的即时聊天协议,像 Google Hangouts, WhatsApp Messenger 等即时聊天程序都是基于 XMPP 的。
而 MQTT 是最近几年随着物联网行业的发展,才慢慢进入公众视线的,像 Facebook Messenger App 使用了 MQTT 协议。
MQTT 的特点在于报文小,协议简单,提供了三个 QoS 级别。这几个特性是专门为网络环境复杂的物联网(IoT)场景设计的。
XMPP 特点在于协议和扩展协议成熟,功能完善,专门为即时聊天(IM)场景设计。