AMQP协议
AMQP(advanced message queuing protocol)是一种协议
,全称为 “高级消息队列协议”。更多信息请自行百度。
上图也可以充分展示 RabbitMQ
的工作模型,依据该图有助有理解RabbitMQ的核心工作组件;其中,每个 RabbitMQ
消息服务代理至少有一个 Virtual host虚拟主机
(默认/
),每个 Virtual host虚拟主机
中的 Exchange交换机、Queue队列以及Exchange交换机与Queue队列之间的绑定BindingKey
都是隔离相互独立。
Producer(生产者)和Consumer(消费者)通过与RabbitMQ服务
建立 Connection
来保持TCP长连接
,然后在 Connection
的基础上建立若干Channel
信道,用来发送与接收消息。
Connection(连接)
不管是 Producer(生产者)
还是 Consumer(消费者)
,生产者要想发送消息给Exchange或者消费者想从Queue中消费消息,首先就要与RabbitMQ服务
建立连接,这个连接就是 Connection
。Connection
是一个TCP长连接
Channel(信道)
Channel
可以实现线程间隔离
Channel
是在 Connection
的基础上建立的虚拟连接
,RabbitMQ
中大部分的操作都是使用 Channel
完成的,比如:声明Queue、声明Exchange、发布消息、消费消息
等。
此时是否有这样一个疑问:既然已经有了Connection
,完全可以使用Connection
完成Channel
的工作,为什么还要引入Channel
这样一个虚拟连接的概念呢?因为现在的程序都是支持多线程的,如果没有Channel
,那么每个线程在访问RabbitMQ服务
时都要建立一个Connection
这样的TCP连接,对于操作系统来说,建立和销毁TCP连接是非常大的开销,在系统访问流量高峰时,会严重影响系统性能。
Channel
就是为了解决这种问题,通常情况下,每个线程创建单独的Channel
进行通讯,每个Channel都有自己的 channel id 帮助Broker和客户端识别Channel,所以Channel之间是完全隔离的
。
Connection
与Channel
之间的关系可以使用光纤电缆比喻,如果把Connection
比作一条光纤电缆,那么Channel
就相当于是电缆中的一束光纤
Virtual Host(虚拟主机)
- 对于数据库而言;不同的项目应用会使用独立的库进行数据存储;同理,针对不同的项目应用可以定义不同的
Virtual host虚拟主机
。即Virtual host虚拟主机
可以用来隔离不同的应用程序Virtual host虚拟主机
需要和User用户
进行绑定,主要是用户权限隔离
Virtual host
是虚拟主机,一个Broker
中可以有多个Virtual host
,每个Virtual host
都有一套自己的Exchange
和Queue
,同一个Virtual host
中的Exchange
和Queue
不能重名,不同的Virtual host
中的Exchange
和Queue
名字可以一样。这样,不同的用户在访问同一个RabbitMQ Broker
时,可以创建自己单独的Virtual host
,然后在自己的Virtual host
中创建Exchange
和Queue
,很好地做到了不同用户之间相互隔离的效果。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中…(img-1nPaVJjV-1712510478907)]