Hero Image

RabbitMQ 消息中间件 技术精讲 1. RabbitMQ 简介以及AMQP协议 RabbitMQ 是一个开源的消息代理和 RabbitMQ底层是采用Erlang语言进行编写 开源、性能优秀, 稳定性保障 与spring AMQP完美整合,API丰富 集群模式丰富,表达式配置, HA模式, 镜像队列模型 保证数据不丢失的前提做到高可靠性,可用性 AMQP: 高级消息队列协议 RabbitMQ 的安装以及使用 erlang socat rabbitmq-server rpm -ivh XXXXX.rpm lsof -i:5672 # 查看端口 启用控制台插件 rabbit 可以选择使用内存进行存储 RabbitMQ 核心概念 AMQP核心概念 Server:又称作Broker, 接收客户端的连接,实现AMQP实体服务 Connection: 连接, 应用程序与Broker的网络连接 Channel: 网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的一个通道。客户端可以建立多个Channel,每个Channel代表一个会话任务。 Message: 消息, 服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。 Virtual host: 虚拟地址,用于进行逻辑隔离,是最上层的消息路由。一个Virtual Host里面可以有若干个Exchange 和Queue, 同一个Virtual Host里面不能有相同名称的Exchange或Queue。 Exchange: 交换机,接收消息,根据路由键转发消息到绑定的队列 Binding: Exchange 和Queue之间的虚拟连接,binding可以包含routing key Routing key: 一个路由规则,虚拟机可以用它来确定如何路由一个特定消息 Queue: 也称为Massage Queue, 消息队列,保存消息并将他们转发给消费者 RabbitMQ RabbitMQ默认端口号 4369 (epmd), 25672 (Erlang distribution) 4369 erlang 发现端口 25672 server间通信端口 5672, 5671 (AMQP 0-9-1 without and with TLS) client端通信口 15672 (if management plugin is enabled) 管理界面ui端口 61613, 61614 (if STOMP is enabled) 1883, 8883 (if MQTT is enabled) 生产端的可靠投递 保证消息从生产者到MQ之间的传输是100%可靠的,生产者发送的消息一定能进入消息队列

Hero Image
「Docker」Docker 网络模式

docker run创建容器时候,可以用-net指定容器的网络模式 1# host 模式 2--net=host 3# container模式 4--net=container:NameorId 5# none模式 6-net=none 7# bridge模式 8-net=bridge host 模式 如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。 例如,我们在 10.10.101.105/24 的机器上用 host 模式启动一个含有 web 应用的 Docker 容器,监听 tcp 80 端口。当我们在容器中执行任何类似 ifconfig 命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用 10.10.101.105:80 即可,不用任何 NAT 转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 container 模式 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。 none模式 这个模式和前两个不同。在这种模式下,Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。 bridge模式 bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。当 Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配 IP 了,Docker 会从 RFC1918 所定义的私有 IP 网段中,选择一个和宿主机不同的IP地址和子网分配给 docker0,连接到 docker0 的容器就从这个子网中选择一个未占用的 IP 使用。如一般 Docker 会使用 172.