常用消息队列中间件


=Start=

缘由:

了解一下现在常用的消息队列中间件的原理、特点,然后选出适用的消息队列中间件。

正文:

参考解答:
  • ZeroMQ
    适用场景:待添加
  • RabbitMQ
    适用场景:待添加
  • ActiveMQ/Apollo
    适用场景:待添加
  • Kafka
    适用场景:待添加
  • RocketMQ
    适用场景:待添加
参考链接:

=END=

, ,

《 “常用消息队列中间件” 》 有 18 条评论

  1. MQ,互联网架构解耦神器
    https://mp.weixin.qq.com/s/2PFd4xQ9F9S_9g23WtyFGw
    `
    当调用方需要关心执行结果,通常使用RPC调用。
    但如果调用方不关心执行结果,却仍然使用RPC调用,会引发上下游极大的耦合与瓶颈。

    关注下游执行执行结果,用RPC;
    不关注下游执行结果,用MQ,不用RPC。
    `

  2. 创业公司CTO谈创业公司技术选型
    https://mp.weixin.qq.com/s/gz3UWwNmMjoJf2TQVR_0Dw
    `
    技术选型的通用原则
    原则1:能否简化开发任务?
    原则2:是否符合组织内的主流技术路线?
    原则3:是否普及程度高或者学习曲线平缓?
    原则4:能否得到有效地支持?
    原则5:是否有助于规范开发流程?

    总结:
    技术选型是技术领导日常工作的一部分,但就不同阶段的公司而言,技术选型的标准并非一成不变的。针对公司不同阶段的关注的重点,本文简单谈及了相应的标准和原则,同时结合自身给出了相应的实例。

    说到底,技术要为业务服务,技术选型不能是技术人的自嗨,更不能是“面向简历”的决策结果。只有把握了这个最终原则,我们才能真正客观的看待当前的技术问题,相对客观的履行作为公司技术带头大哥的职责。

    最后,虽然全文以“公司”为名,但其实只要将公司两字换成其他,比如“业务线”,其实也未尝不可。比如,成熟公司内部的创新,其整个过程与创业公司的发展其实非常类似,这种情况下,只要大领导支持,当然也可以采用相对激进的做法进行小范围内的“不符合公司当前主流技术路线”的技术选型。
    `

  3. 互联网公司和团队的技术选型
    https://blog.devopszen.com/tech-selection
    `
    互联网技术爆炸的时代
    效率:开发效率优先还是运行效率优先
    成熟和常见技术优先
    小众技术不等于新技术
    成熟的小众技术
    适度尝试新技术
    避免重造轮子
    团队大小对技术选型的影响
    团队成员经验对技术选型的影响
    技术帮派之正视技术的优点和缺点
    没有银弹
    `

  4. 在中间件技术选型前,我们该思考些什么?
    https://mp.weixin.qq.com/s/1r2aHtkx9VTpTWcOcnyYCw
    `
    导致选型失败的原因有哪些?
    1、| 缺乏估算
    简单来说就是对技术模型维度的分析,考虑某个组件是否有可能达到我们想要的目的,确认它是否真的做到了。
    2、| 实验不够
    既然是估算,那就有可能存在偏差。比如一个语言虽说具有自动管理内存的功能,但并不代表它在所有场景下都会起作用,因此需要实际场景实验,毕竟用实际数据说话是最靠谱的。
    3、| 轻视经验
    在技术选型上,我一向忌讳 “在百度搜一下,觉得差不多了就照抄” 的方式,尤其对于中间件这类基础服务来说,忽视经验的举动都是危险行为,在还没弄清楚原理与本质之前,如何才能确定这项技术是否经得起产线的考验?

    中间件技术选型前的三项思考
    思考一:标准功能
    思考二:非功能特性
    思考三:技术标准
    `

  5. 关于技术选型方法论的探索
    https://mp.weixin.qq.com/s/Z7jK8XnKnoY-FiP4inGjsA
    `
    影响技术选型的因素主要有四个,分别是项目因素、团队因素、版权因素和技术因素。

    技术因素是选型中最重要的因素,技术因素又分为标准功能、非功能性特征、技术标准、技术支持四个方面。
    1.可量化因素及其所占权重
    2.大范围的搜寻候选技术
    3.利用必要因素筛选
    4.可量化因素打分评定
    `

  6. 数据库中间件详解
    https://mp.weixin.qq.com/s?__biz=MzA5MDA5Njk0NQ==&mid=2456618601&idx=1&sn=c10839f1797e7be1ea41f005b57432df
    `
    1 数据库拆分过程及挑战
    互联网当下的数据库拆分过程基本遵循的顺序是:垂直拆分、读写分离、分库分表(水平拆分)。每个拆分过程都能解决业务上的一些问题,但同时也面临了一些挑战。

    1.1 垂直拆分
    1.2 读写分离
    1.2.1 读写分离的优点
    通过配置多个slave节点,可以有效的避免过大的访问量对单个库造成的压力。

    1.2.2 读写分离的挑战
    1、对于DBA而言,多了很多集群运维工作
    2、对于开发人员而言

    1.3 分库分表
    1.3.1 分库分表的好处
    1、存储能力的水平扩展
    2、写能力的水平扩展

    1.3.2 分库分表的挑战
    挑战1:基本的数据库增删改功能
    挑战2:分布式id
    挑战3:分布式事务
    挑战4:动态扩容

    1.4 小结
    在上面我们已经看到了,读写分离和分库分表带来的好处,但是也面临了极大的挑战。如果由业务开发人员来完成这些工作,难度比较大。因此就有一些公司专门来做一些数据库中间件,对业务开发人员屏蔽底层的繁琐细节,开发人员使用了这些中间件后,不论是读写分离还是分库分表,都可以像操作单库单表那样去操作。

    2 主流数据库中间件设计方案
    2.1 设计方案
    典型的数据库中间件设计方案有2种:proxy、smart-client。
    2.1.1 proxy模式
    2.1.2 smart-client模式

    2.2 业界产品
    proxy实现——目前的已有的实现方案有:
    阿里巴巴开源的cobar
    阿里云上的drds
    mycat团队在cobar基础上开发的mycat
    mysql官方提供的mysql-proxy
    奇虎360在mysql-proxy基础开发的atlas(只支持分表,不支持分库)
    当当网开源的sharing-sphere
    目前除了mycat、sharing-sphere,其他几个开源项目基本已经没有维护,sharing-sphere前一段时间已经进去了Apache 软件基金会孵化器。

    smart-client实现——目前的实现方案有:
    阿里巴巴开源的tddl,已很久没维护
    大众点评开源的zebra,大众点评的zebra开源版本代码已经很久没有更新,不过最近美团上市,重新开源大量内部新的功能特性,并计划长期维持。
    当当网开源的sharding-jdbc,目前算是做的比较好的,文档资料比较全。和sharding-sphere一起进入了Apache孵化器。
    蚂蚁金服的zal
    等等
    `

  7. 万亿级消息背后: 小米消息队列的实践
    https://mp.weixin.qq.com/s/uHDa5e3HUEwyMFcsbbwKWQ
    `
    今天的主题主要包括以下几个方面的内容:

    业务背景:消息队列在小米落地的业务背景
    架构与关键问题:小米自研分布式消息队列 Talos 的架构和关键问题
    性能与资源优化:业务爆发式增长,Talos 在性能和资源方面的挑战与实践经验
    平台化效率:举例 Talos 在平台化过程中提升效率的一些实践
    未来规划:小米消息中间件的规划和愿景
    `

  8. 究竟什么时候该使用MQ?
    https://mp.weixin.qq.com/s/_kXoRBAotb4GXoDTqTObYQ
    `
    任何脱离业务的组件引入都是耍流氓。引入一个组件,最先该解答的问题是,此组件解决什么问题。

    # 什么时候不使用MQ?
    当调用方需要关心消息执行结果时,通常不使用MQ,而使用RPC调用。

    # 究竟什么时候使用MQ呢?
    典型场景一:数据驱动的任务依赖
    典型场景二:上游不关心执行结果
    典型场景三:上游关注执行结果,但执行时间很长
    `

  9. RocketMQ Dashboard 后台里有根据topic查询/消费日志的接口,需要从Nginx层面进行关注和监控
    rocketmq-dashboard ConsumerController.java
    https://github.com/apache/rocketmq-dashboard/blob/master/src/main/java/org/apache/rocketmq/dashboard/controller/ConsumerController.java
    https://github.com/apache/rocketmq-dashboard/blob/master/src/main/java/org/apache/rocketmq/dashboard/controller/MessageController.java
    `
    @RequestMapping(value

    /queryMessagePageByTopic.query
    /queryMessageByTopic.query
    /queryMessageByTopicAndKey.query
    `
    RocketMQ Dashboard
    https://rocketmq.apache.org/docs/deploymentOperations/04Dashboard/
    `
    http_host 中包含 rocketmq 的关键字;
    uri 以 .query 字符串结尾:
    `

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注