RocketMQ简单介绍

RocketMQ是一个消息中间件,MQ的主要特点为解耦、异步、削峰,具有高性能、高可靠、高实时、分布式特点,用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下:
支持严格的消息顺序
支持Topic与Queue两种模式
亿级消息堆积能力
支持多种消息协议,如 JMS、MQTT 等
分布式高可用的部署架构,满足至少一次消息传递语义
提供 docker 镜像用于隔离测试和云集群部署
提供配置、指标和监控等功能丰富的 DashboardRocketMQ结构

Name Server:注册中心(zookeeper)频繁更新offset。
Producer:消息生产者 生产消息 寄件人。
Consumer:消息消费者、复制消息消费、收件人。
Broker:中介(邮政) 提供消息中转服务。
Group :分组好处(业务区分,便于管理)。
Tag:多个标签 where 。
Key:区分业务系统 。
Msgid: broker在这个系统中它是独一无二的。
PS:消息中间件的最重要的作用是异步和解耦。图中箭头的含义

从 Broker 开始,Broker Master1 和 Broker Slave1 是主从结构,它们之间会进行数据同步,即 Date Sync。同时每个 Broker 与
NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer 中。
Producer 与 NameServer 集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Broker Master 建立长连接,且定时向 Broker 发送心跳。Producer 只能将消息发送到 Broker master,但是 Consumer 则不一样,它同时和提供 Topic 服务的 Master 和 Slave
建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。RocketMQ事务消息设计思路

应用模块遇到要发送事务消息的场景时,先发送prepare消息给MQ。
prepare消息发送成功后,应用模块执行数据库事务(本地事务)。
根据数据库事务执行的结果,再返回Commit或Rollback给MQ。
如果是Commit,MQ把消息下发给Consumer端,如果是Rollback,直接删掉prepare消息。
第3步的执行结果如果没响应,或是超时的,启动定时任务回查事务状态(最多重试15次,超过了 默认丢弃此消息),处理结果同第4步。
MQ消费的成功机制由MQ自己保证。

业务案例

有一个点赞业务,不限制用户的点赞数只需进行记录(产品需求,开发提议无效),当每个用户都进行x连击享受数量猛增的快感时如果数据库都需要进行x个点赞数据的插入,数据库毫无疑问会塞死导致崩溃。
于是想到可以尝试下MQ削峰,比如每秒来了5000消息但数据库只能承受2000,那我消费时每次只拉取消费1600就好了,剩下的放在Broker堆积慢慢消费就好。由于之前的消息中心也在用RocketMQ,于是确认使用RocketMQ来进行削峰。

五、结束语
本篇简单介绍了Rocket基本的设计思路和流程,注意要保证数据可靠,需采用同步刷盘和同步双写的方式,但性能会较其他方式低,文章内有任何不正确或不详尽之处请留言指导,谢谢。

php定时发送生日模块消息_RocketMQ消息队列介绍与应用相关推荐

  1. php定时发送生日模块消息_RabbitMQ之消息的可靠性投递

    生产端的可靠性投递: 1.保障消息成功发送出去 2.保障mq节点成功接收消息 3.消息发送端需要收到mq服务的确认应答 4.完善的消息补偿机制(百分百成功成功,需要该步骤) 消息落库方案 订单服务调用 ...

  2. php定时发送生日模块消息_Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件...

    什么是 Swoft ? Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架.Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-F ...

  3. php定时发送生日模块消息_PHP实现好友生日邮件提醒

    我有一个想法是这样的,希望每天知道今天是我哪位好友的生日? 当然,我得首先保存我所有好友的生日信息 实现:在新浪申请免费服务器,并申请Mysql应用,然后建一张表保存好友的信息 我想,我已经完成第一步 ...

  4. python小程序设计每天定时微信发消息_定时发送微信小程序订阅消息

    微信小程序的消息推送从之前的模板消息更新到了现在的订阅消息,本篇文章就教你怎么使用小程序订阅消息,文后会附上使用python写的定时发送订阅消息的代码. 1.首先要添加一个订阅消息模板 登陆上微信小程 ...

  5. 简易的定时发送生日邮件功能(Listener+定时器+使用java发送邮件)

    实现功能主要技术点: Listener(监听器) 使用Java发送邮件(JavaMail的使用) 代码示例 创建web工程,写一个监听器监听ServletContext对象的创建(创建时机:启动服务器 ...

  6. 如何定时发送云湖社交APP消息?玩转云湖机器人

    云湖社交APP是什么软件? 云湖社交是一款基于即时通讯功能的效率工具.兴趣软件.用户可以通过丰富的机器人来提升用户的生活和工作效率.云湖中,推荐有三大玩法:打造自己的网站的用户全员群.作为自己私有网站 ...

  7. 定时发送信息_vx能定时发送信息了 朋友生日 5201314精确到秒定时发送消息!

    每天一个vx小技巧 你get了吗? 今天给大家带来一个微信小技巧, 5 月 20 号将至鉴于还有很多没有脱单的单身狗,文黑君决定拿出自己压箱底的微信发送定时信息的小秘籍.无论是表白或是送上生日准点祝福 ...

  8. itchat实现微信聊天机器人,定时发送微信消息,消息防撤回,消息监控,自定义回复消息

    一.前言 由于在抖音上刷到微信机器人自动陪聊,心血来潮,自己利用itchat和图灵机器人实现了微信自动回复,监听消息,消息防撤回等.周末心情不好搞了一个微信陪聊机器人陪我聊天. 注意: 1.图灵机器人 ...

  9. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

最新文章

  1. Android5.1.1源码 - zygote fork出的子进程如何权限降级
  2. 条件限制select into_SQL全部知识点(夺回控制台掌控权,转义符,SELECT特定列,AND,OR,查询数值,比较运算)...
  3. STM32 进阶教程 5 - 内联函数
  4. Linux环境安装zookeeper3.5.5后,总是启动不了
  5. mysql对结果限制_在查询中限制MySQL结果
  6. Java并发(八)——Fork/Join
  7. hbuilder能用python_Hbuilder之开发Python
  8. (原)python中matplot中获得鼠标点击的位置及显示灰度图像
  9. 苹果手机如何查看html代码,苹果手机怎么利用代号查看硬件信息
  10. 图论,回路,旅行商、邮递员问题。
  11. oracle 校验 统一社会信用代码 函数
  12. java continue语句_Java continue 语句
  13. Git切换项目当前登录账号
  14. 关于安卓自定义进度条(二)
  15. Python基础之爬取某瓣图书信息
  16. 哈希学习(2)—— Hashing图像检索资源
  17. (十二) 灰度共生矩阵
  18. 如何做好一名前端Leader
  19. 这个曾有望冲击 Apple Watch 的项目,被微软砍掉了......
  20. 谷歌seo排名软件有哪些

热门文章

  1. 【网址收藏】主流Ansible Web UI的部署与使用:Tower AWX Semaphore TiOps
  2. spark on yarn 内存分配详解
  3. Docker私有仓库搭建与配置
  4. JVM年轻代参数:-Xmn、-XX:NewSize、-XX:MaxNewSize
  5. TCP协议的4次握手
  6. solr怎么设置搜索结果排名靠前?
  7. Java线程的等待与唤醒代码示例
  8. jQuery easyUI--数据表格 datagrid 的使用
  9. Qt for Android调用android原生Toast控件
  10. FATAL ERROR in native method: JDWP No Transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_IN,ec