首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >消息中间件知识点速查

消息中间件知识点速查

作者头像
linxinzhe
发布2018-04-10 15:10:41
7180
发布2018-04-10 15:10:41
举报
文章被收录于专栏:林欣哲林欣哲

消息中间件的必要性

传统的用法

  • 如果每增加一个服务就要修改登陆系统里的调用的话,非常的麻烦而不具备扩展性
  • 通过消息中间件解耦,新拓展的功能就只需要订阅登陆信息

好处

  • 解耦
  • 异步
  • 横向扩展
  • 安全可靠,持续化保存起来
  • 顺序保证,队列

JMS和AMQP

  • JMS是Java领域的,代表为ActiveMQ
  • AMQP是通用的,代表为RabbitMQ
  • Kafka是新型的,也是java优先

JMS规范

基本概念

  • 提供者:实现JMS的消息中间件服务器
  • 客户端:发送或接收消息的应用程序
    • 生产者/消费者:创建并发送消息的客户端
    • 消费者/订阅者:接收并处理消息的客户端
  • 消息:传递的数据
  • 消息模式:主体和队列两种

JMS消息模式

  • 队列模型:
    • 生产者/消费者
    • 队列中的消息只能被一个消费者消费
    • 消费者随时消费队列中的消息
  • 主题模式:
    • 发布者/订阅者
    • 主体中的消息被所有订阅者消费
    • 消费者不能消费订阅之前就发送到的主题中的消息

JMS编码接口

  • ConnectionFactory用于创建连接到消息中间件的连接工场。
  • Connection代表了应用程序和消息服务器之间的通信链路
  • Destination指消息发布和接收的地点,包括队列或主题
  • Session表示一个“单线程”的上下文,用于发送和接收消息
  • MessageConsumer由会话创建,用于接收发送到目标的消息
  • MessageProducer由会话创建,用于发送消息到目标
  • Message是消费者和生产者之间的传送对象,消息头:一组消息属性,一个消息体

ActiveMQ集群

集群配置

好处
  • 实现高可用,以排除单点故障引起的服务中断
  • 实现负载均衡,以提升效率为更多客户提供服务
集群方式
  • 客户端集群:让多个消费者消费同一个队列
  • Broker clusters:多个Broker之间同步消息
  • Master Slave:实现高可用

客户端配置

  • ActiveMQ失效转移(failover):允许其中一台宕机时,客户端连到其他的

Broker CLuster集群配置

  • NodeA和NodeB消息同步实现原理是网络连接器
  • 网络连接器(NetworkConnector):配置ActiveMQ服务器之间的消息透传。分为动态(多播)和静态(固定的几个ip)连接器。

Master/Slave集群配置

  • 共享存储集群:看哪个slave抢到资源锁就是master,可写入持久化。负载均衡。
  • 基于复制的LevelDB Store的原理:依靠ZooKeeper选取Master节点,其他节点接受同步。高可用性,立即有备份服务器补充上去,但slave不具备服务外部的能力。

其他MQ

RabbitMQ简介

步骤:

  1. 创建ConnectionFactory
  2. 创建Channel
  3. 创建Exchange
  4. 创建Connection
  5. 定义Queue并绑定队列

示例代码:

示例代码

  • 普通的队列模式和主题模式源码,https://github.com/linxinzhe/jms-producer-consumer
  • 和Spring结合的ActiveMQ源码,https://github.com/linxinzhe/jms-spring
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 林欣哲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 消息中间件的必要性
    • 传统的用法
      • 好处
        • JMS和AMQP
        • JMS规范
          • 基本概念
            • JMS消息模式
              • JMS编码接口
              • ActiveMQ集群
                • 集群配置
                  • 好处
                  • 集群方式
                • 客户端配置
                  • Broker CLuster集群配置
                    • Master/Slave集群配置
                    • 其他MQ
                      • RabbitMQ简介
                      • 示例代码
                      相关产品与服务
                      消息队列 TDMQ
                      消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档