@TOCMQ笔记MQ的主流MQkafaka+RocketMQ+RabbitMQ对比:https://blog.csdn.net/weixin_...MQ的RocketMQ常见错误:https://blog.csdn.net/weixin_...MQRocketMQ术语:https://blog.csdn.net/weixin_...MQRocketMQ环境详细配置:https://blog.csdn.net/weixin_...?什么是RocketMQ?RocketMQ是阿里巴巴于2012年开源的分布式消息中间件,已捐赠给Apache基金会,并于2016年11月成为Apache孵化项目。中间件是一种连接软件组件和应用程序的计算机软件,包括一组服务.为了方便运行在一台或多台机器上的多个软件通过网络进行交互。中间件技术提供的互操作性促进了分布式架构的演进,通常用于支持和简化那些复杂的分布式应用程序,包括Web服务器、事务监视器和消息队列软件。中间件是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件位于操作系统软件和用户应用软件之间。中间件在操作系统、网络和数据库之上,在应用软件的下层。其总体功能是在自身的上层为应用软件提供运行和开发环境,帮助用户灵活、高效地开发和集成复杂的应用软件。中间件是平台(硬件和操作系统)与具有标准程序接口和协议的应用程序之间的通用服务。针对不同的操作系统和硬件平台,中间件可以有多种符合接口和协议规范的实现。RcoketMQ是一种低延迟、高可靠、可扩展且易于使用的消息中间件。具有以下特点:支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型可靠的先进先出(FIFO)和队列中严格的顺序传递支持拉取(pull)和推送(push)消息模式单个队列,百万条消息堆积能力,支持多种消息协议,如JMS、MQTT等分布式高可用部署架构,满足至少一种消息传递语义提供docker镜像用于隔离测试而云集群部署提供配置、指标和监控等丰富功能的DashboardRocketMQ主体分为四个角色:producer、producer、messageproducer。生产者的作用是向MQ发送消息。生产者本身可以产生消息,比如读取文本信息。也可以对外提供接口,由外部应用调用接口,生产者将接收到的消息发送给MQ。派生概念:ProducerGroupProducer组,多个发送相同类型消息的生产者称为一个生产者组。ConsumerConsumer消息消费者,在MQ上消费消息的应用是一个consumer派生的概念:ConsumerGroup消费组,多个消费同类型消息的consumer实例组成一个消费组消息MessageMes??sage是消息的载体。一条消息必须指定一个主题,相当于邮寄地址。Message还有一个可选的标签设置,这样消费者就可以根据标签过滤消息。还可以添加额外的键值对,比如需要一个业务键在broker上查找消息,方便开发过程中诊断问题。派生概念:TopicTagTopicTopic是消息的逻辑分类。例如,如果您有订单消息和库存消息,那么您需要对它们进行分类。一个是订单主题,用于存储订单相关消息,另一个是库存主题,用于存储库存相关消息。Tag标签可以认为是Topic的进一步细化。一般在同一个业务模块中通过引入标签来标记不同用途的标签。协调器注册中心NameServerNameServer为生产者和消费者提供路由信息BrokerBroker是RocketMQ系统的主要角色,其实就是上面已经提到的MQ。Broker接收来自生产者的消息,存储它们,并准备接收来自消费者的拉取消息的请求。RocketMQ架构RocketMQ架构从这张图中我们可以看到有四个集群,分别是NameServer集群、Broker集群、Producer集群和Consumer集群。:NameServer:提供轻量级的服务发现和路由。每个NameServer记录完整的路由信息??,提供对等的读写服务,支持快速存储扩展。Broker:通过提供轻量级的Topic和Queue机制来处理消息存储,同时支持push和pull模式以及master-slave结构的容错机制。Producer:Producer,一个产生消息的实例,和同一个ProducerGroup的Producer组成一个集群。Consumer:消费者,接收消息进行消费的实例。同一个ConsumerGroup的Consumer组成一个cluster,简单解释下图中箭头的含义。从Broker开始,BrokerMaster1和BrokerSlave1是主从结构,它们之间会进行数据同步,即DateSync。同时,每个Broker与NameServer集群中的所有节点建立长连接,定时向所有NameServer注册Topic信息。Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定时从NameServer获取Topic路由信息,与提供Topic服务的BrokerMaster建立长连接,并定时向Broker发送心跳.Producer只能向Brokermaster发送消息,而Consumer则不同。它与同时提供Topic服务的Master和Slave建立长连接,可以订阅来自BrokerMaster和BrokerSlave的消息。RocketMQ部署方式的单主模式是指主节点只有一个,不能称为集群。一旦主节点宕机,整个服务将不可用,适合个人学习和使用。多主模式下,多个主节点组成一个集群,单个主节点宕机或重启对应用没有影响。优点:所有模式中性能最高缺点:当单个主节点宕机时,未消费的消息直到节点恢复才可用,影响消息的实时性。注意:使用同步刷写可以保证消息不丢失。同时,主题对应的队列应该分布在集群中的各个节点上,而不是只分布在某个节点上。否则,节点宕机会影响订阅该主题的应用。多主多从异步复制模式是在多主模式的基础上,每个主节点至少有一个对应的从节点。master节点可以读写,slave只能读不能写,类似于mysql的master-standby模式。优点:当master宕机时,consumer可以读取slave的消息,不会影响消息的实时性,和多个master的性能差不多。缺点:使用异步复制的同步方式可能会出现消息丢失的问题。多主多从同步双写模式类似于多主多从异步复制模式,区别在于主从之间的数据同步方式。优点:同步双写的同步方式可以保证数据不会丢失。缺点:发送单条消息RT会略长,性能比异步复制低10%左右。刷机策略:同步和异步刷机(指节点自身的数据是同步存储还是异步存储)同步方式:同步双写和异步复制(指一组主从之间的数据同步)注:为了保证数据可靠性,需要采用同步刷写和同步双写的方式,但性能会低于其他方式。不断更新。..参考链接:https://www.jianshu.com/p/824...
