这个组件,是一个分布式的组件,好处就是,不怕消息太多了,都挤在一个服务器上,出现服务器内存不够的情况。服务器内存不够用的问题解决了,但是如果消费队列要进行数据库的操作,那么性能瓶颈将出现在数据库上,如果处理的业务复杂,就涉及到分布式事务了,所以一说到分布式,那真的,各种组件,各种复杂。
按我目前的水平,能想到的数据库处理方案,业务之间水平分离,单个业务拿台服务器,这样不用所有业务都挤在一台数据库上,然后不同业务之间靠接口交互,我感觉我说的很像现在的微服务。
 
还有什么主从同步,读写分离,大概就是把主数据库的数据同步到从数据库,然后从数据库只能被查询,主数据能被增删改,这样做 增删改和查询就不在一个数据库里。但这里我觉得,同步数据超过了主从同步的能力,就会有同步延时的情况,这个又需要解决,所以真的麻烦。
 
还有分库,分表的做法,因为表的数据太多,查询就会很慢,所以可以分表,具体怎么分,找个什么字段做标识,来分。分库,是把不同的业务拆分到不同的服务器上的数据库里。
 
这个组件,是如何做到在把队列服务部署到不同服务器上,相互之间还能通信的呢?
 
会有一个配置,记录应用名称和ip端口号和服务器名,和一个服务器之间的通信路由配置。应用发送的消息得带上目标应用名,也就是接受方的应用名称,就靠这个应用名按算法去配置里找到消息发送到哪台服务器上。
通信有靠tcp/ip协议,和套接字技术,开个线程在后台接受连接的应用程序。
使用Queue做队列容器,开个线程在后台当消息泵,源源不断的出队和入队,并触发响应的事件通知上层发送这个消息。
说到这个事件,我发现,这个组件真的大量运用了事件,这让我体会到事件作为一种观察者模式,它的监听和触发真是太能为不同层之间的对象解耦,但就是阅读代码会很不顺畅。
 
这里面涉及到的细节太多了,知道这样做是为什么之后,更难的是要相通他为什么要这样做。所以阅读源码不容易呀。

【源码阅读】消息队列之DoNetMQ的初步了解的更多相关文章

  1. [源码解析] 消息队列 Kombu 之 基本架构

    [源码解析] 消息队列 Kombu 之 基本架构 目录 [源码解析] 消息队列 Kombu 之 基本架构 0x00 摘要 0x01 AMQP 1.1 基本概念 1.2 工作过程 0x02 Poll系列 ...

  2. [源码分析] 消息队列 Kombu 之 启动过程

    [源码分析] 消息队列 Kombu 之 启动过程 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 是 ...

  3. [源码分析] 消息队列 Kombu 之 Consumer

    [源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 ...

  4. [源码分析] 消息队列 Kombu 之 Producer

    [源码分析] 消息队列 Kombu 之 Producer 目录 [源码分析] 消息队列 Kombu 之 Producer 0x00 摘要 0x01 示例代码 0x02 来由 0x03 建立 3.1 定 ...

  5. [源码分析] 消息队列 Kombu 之 Hub

    [源码分析] 消息队列 Kombu 之 Hub 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 中的 ...

  6. [源码分析] 消息队列 Kombu 之 mailbox

    [源码分析] 消息队列 Kombu 之 mailbox 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Komb ...

  7. 鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据 | 百篇博客分析OpenHarmony源码 | v33.02

    百篇博客系列篇.本篇为: v33.xx 鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 自旋锁 ...

  8. Android源码分析-消息队列和Looper

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17361775 前言 上周对Android中的事件派发机制进行了分析,这次博主 ...

  9. v77.01 鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容 | 新的一年祝大家生龙活虎 虎虎生威

    百篇博客分析|本篇为:(消息封装篇) | 剖析LiteIpc进程通讯内容 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析(互斥锁 ...

  10. v78.01 鸿蒙内核源码分析(消息映射篇) | 剖析LiteIpc(下)进程通讯机制 | 百篇博客分析OpenHarmony源码

    百篇博客分析|本篇为:(消息映射篇) | 剖析LiteIpc(下)进程通讯机制 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析( ...

随机推荐

  1. 【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit

    1.问题描述 根据https://developer.huawei.com/consumer/cn/doc/harmonyos-references/iap-data-model-0000001736 ...

  2. 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit

    1.问题描述 实时验证和非实时验证的区别是什么? 解决方案 相同点: "手机号快速验证"和"实时验证"都是为了向用户发起获取手机号信息的请求.最终目的都是为了获 ...

  3. innoSetup打包文件编写模板

    现在打包主要是使用 innosetup 这个软件来进行打包,支持录制脚本和手动编写脚本,比较好用. 此文章主要记录手写脚本,便于后期查询,借鉴. 文档: inno setup :https://blo ...

  4. 玩转HarmonyOS专项测试,轻松上架“五星”高品质应用

      作者:David,华为测试服务专家 随着信息技术的高速发展,移动应用与人们生活日益紧密,面向各类场景的应用层出不穷,什么样的应用更受用户青睐呢?在满足用户功能需求之上,一个好的应用要能运行稳定.流 ...

  5. Mybatis终极案例之注解开发

    Mybatis终极案例之注解开发 一.注解开发实现CURD操作 1.环境搭建 参考入门案例,环境搭建主要分为如下几步: 1.配置pom.xml <packaging>jar</pac ...

  6. websocket fleck demo

    前言 fleck 比较简洁,想看下他的源码的,先感受一下demo吧. 正文 先上代码. static IDictionary<string, IWebSocketConnection> d ...

  7. 元素类型 “item” 相关联的 “name” 属性值不能包含 ‘<’ 字符

    Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 "item" 相关联的 "name" ...

  8. Jenkins集成GitLab的正确姿势,实现Git代码提交触发CI/CD

    ❝ jenkins和gitlab是目前DevOps工具链中最常见的,抛开gitlab-ci不谈,gitlab代码提交触发jenkins流水线是最经典的搭配. 这里就介绍下如何配置实现jenkins和g ...

  9. Istio 从懵圈到熟练:二分之一活的微服务

    作者 | 声东  阿里云售后技术专家 <关注阿里巴巴云原生公众号,回复 排查 即可下载电子书> <深入浅出 Kubernetes>一书共汇集 12 篇技术文章,帮助你一次搞懂 ...

  10. 选轻量应用服务器or云服务器ECS?一图帮你彻底区分

    简介:轻量应用服务器适合轻量级且访问量低的应用场景,更适合个人开发者.对新手小白更友好:而云服务器ECS可覆盖全业务场景(如大数据分析,深度学习等),要求用户有一定的开发技术能力. 本文首发于公众号& ...