Q=mq,分别表示什么?

明祖陵2023-01-31  21

Q=mq表示固体完全燃烧时释放的能量。

(1)Q———某种燃料完全燃烧后放出的热量———焦耳 J

(2)m———表示某种燃料的质量———千克 kg

(3)q———表示某种燃料的热值———焦耳每千克 J/kg

热量的单位与功、能量的单位相同。在国际单位制中热量的单位为焦耳(简称焦,缩写为J)(为纪念科学家焦耳而立)。历史上曾定义热量单位为卡路里(简称卡,缩写为cal),只作为能量的辅助单位,1卡=4.184焦。

扩展资料:

其他热量计算公式:

(1)气体燃料完全燃烧释放的热量的计算公式:Q=Vq。Q表示热量(J),q表示热值( J/kg ),m表示固体燃料的质量(kg),V表示气体燃料的体积(m³)。

(2)经某一过程温度变化为△t,它吸收(或放出)的热量。Q表示热量(J),

Q=c·m·Δt

Q吸=c·m·(t-t0)

Q放=c·m·(t0-t)(t0是初温;t是末温)

参考资料:百度百科-热量

RabbitMQ, Kafka, rocketMQ等数据可以百度查到.

QMQ的开发者又谈到QMQ的性能和rocket的性能处于同一个数量级.

Kafka和RocketMQ都是基于partition的存储模型, 也就是每一个subject分成一个或者多个partition, 同时consumer消费的时候也是和partition一一对应的.

如下 :

在这种设计的模式下, 如果consumer数目大于partition的数据, 就会出现consumer处于空闲的状态.

如果partition数据大于consumer的数据就会出现部分consumer繁忙的状况.

以上是用基于partition去做负载均衡所带来的问题. 由于这种静态绑定的关系, 如果遇到了消费速度更不上消费的速度, 单单的增加consumer是不够的. 需要增加partition. 尤其是在kafka里, partition是一个比较重的资源, 增加太多的partition还需要考虑集群的处理能力同时当高峰期过了之后, 如果想缩容consumer也是比较麻烦的, 因为partition只能增加, 不能减少.

上述设计, 同时带了另一个问题, 就是如果有消息积压, 我们增加partition也是没有用的, 因为消费已经挤压到已存在的partition中, 新增partition只能够消费新分配过来的数据.

以上是QMQ的存储模型, 方框上方的数字代表该方框自己在log中的偏移量, 方框中的数据代表该项的内容. 如何message log上方的3,6,9表示这几条消息在message log中的偏移量. 而consume log中方框内的数据3,6,9,20对应着message log的偏移, 表示这几条消息都在topic1中, consume log 方框上方的1,2,3,4代表这几个方框在consume log中的逻辑偏移. 下面的pull log 方框中的1,2,3,4对应着consume log的逻辑偏移, 而pull log方框外的数字表示pull log的逻辑偏移.

message log 是所有消息的主存储体, 所有topic的消息都进入该log.

consume log 存储的是message log的索引.

pull log 每个consumer拉取消息的时候会产生pull log, pull log 记录的是拉取消息在consume log中的sequence.

这个时候消费者就可以使用pull log上的sequence来表示消费的进度, 这样一来我们就解耦了consumer和partition之间的耦合关系. 两者可以任意扩展.

分片 + 复制.

QMQ不是基于partition的, 可以通过增加更多的机器提高一个topic的可用性. 消息按照一定的负载均衡策略, 分配到不同的机器上, 某台机器离线之后, producer将不再将消息发送到server.

QMQ通过主从复制来提高单机高可用. QMQ将服务器划分为过个group, 每一个group都包含多个master和slave, 消息的发送和消费全部指向master, slave只保证可用性.

一般的消息分为At Most Once, At Least Once, Exactly once. 而最后一种属于我们最期望的一种模型, 同时这种模型的实现也不容易. 由于网络和应用依赖的复杂性, Exactly once基本不可行, 但是我们可以通过幂等处理来实现最终的Exactly once.

QMQ中用到的HashWheelTimer是采用Netty得HashWheelTimer实现的。

如上面的这个图, 假设时间轮大小为8(这个轮子底层用了一个数组实现的) 1s转动一格, 每一格指向一个链表, 这个链表保存着待执行的任务(TimeOutTask).

参考 :

https://wisewong.github.io/archives/e2d1a18d.html

https://cloud.tencent.com/developer/news/368207

https://github.com/qunarcorp/qmq

https://sq.163yun.com/blog/article/177510753845874688


转载请注明原文地址:https://juke.outofmemory.cn/read/2844064.html

最新回复(0)