SpringAMQP——TopicExchange 在publisher服务发送消息到TopicExchange。在consumer服务声明Exchange、Queue。服务中,编写两个消费者方法,分别监听。服务中,编写两个消费者方法,分别监听。必须是多个单词的列表,并且以。
SpringAMQP——DirectExchange(发布订阅) 在publisher服务发送消息到DirectExchange。在consumer服务声明Exchange、Queue。交换机将消息路由给每一个与之绑定的队列。会将接收到的消息根据规则路由到指定的。服务中,编写两个消费者方法,分别监听。服务中,编写两个消费者方法,分别监听。发布者发送消息时,指定消息的。注解声明队列和交换机常见注解。如果多个队列具有相同的。,因此称为路由模式(
Docker实现容器开机自启 如果创建时未指定 --restart=always ,可通过update 命令设置。创建容器时,设置自动启动容器, 添加--restart=always。的时候,同时也把docker里面的容器也设置成自动启动。服务器停机后,再次启动容器。
SpringAMQP——FanoutExchange(发布订阅) 服务中,利用代码声明队列、交换机,并将两者绑定。会将接收到的消息广播到每一个跟其绑定的。服务中,编写两个消费者方法,分别监听。将消息按照规则路由到与之绑定的队列。不能缓存消息,路由失败,消息丢失。的会将消息路由到每个绑定的队列。声明队列、交换机、绑定关系的。交换机的作用是什么?
SpringAMQP——WorkQueue(工作队列) 启动ConsumerApplication后,在执行publisher服务中刚刚编写的发送测试方法testWorkQueue,可以看到消费者1很快完成了自己的25条消息。消费者2却在缓慢的处理自己的25条消息。也就是说消息是平均分配给每个消费者,并没有考虑到消费者的处理能力。在spring中有一个简单的配置,可以解决这个问题。多个消费者绑定到一个队列,同一条消息只会被一个消费者处理。服务中定义两个消息监听者,都监听。,实现一个队列绑定多个消费者。服务中定义测试方法,每秒产生。来控制消费者预取的消息数量。
SpringAMQP——消息发送与接收(入门) 3.在publisher服务中利用RabbitTemplate发送消息到simple.queue这个队列。host: 192.168.200.130 # 主机名。host: 192.168.200.130 # 主机名。案例:利用SpringAMQP实现消息发送与接收功能。virtual-host: / # 虚拟主机。username: itcast # 用户名。virtual-host: / # 虚拟主机。port: 5672 # 端口。2.配置RabbitMQ地址。2.配置RabbitMQ地址。
RabbitMQ入门——常见消息模型 1.publish:消息发布者,将消息发送到队列queue。3.consumer:订阅队列,处理队列中的消息。2.queue:消息队列,负责接收并缓存消息。5.利用channel将消息消费者与队列绑定。1.Fanout Exchange:广播。基本消息队列(BasicQueue)4.利用channel向队列发送消息。工作消息队列(WorkQueue)3.利用channel声明队列。3.利用channel声明队列。1.建立connection。1.建立connection。
初识MQ(消息队列) 4.级联失败:如果服务提供者出现问题,所有调用方都会出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障。3.资源浪费:调用链中的每个服务在等待响应过程中,不能释放请求占用资源,高并发场景下会极度浪费系统资源。2.性能下降:调用者需要等待服务提供者响应,如果调用过长则响应时间等于每次调用的时间之和。异步调用优点:耦合度低、吞吐量提升(性能提升)、故障隔离(能防止级联失败)、流量削峰。1.耦合度高:每次加入新的需求,都要修改原来的代码。同步调用优点:时效性较强,可以立即得到结果。同步调用和异步调用优缺点。
Docker-Compose Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名。⑤ 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署。④ 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中。③ 使用maven打包工具,将项目中的每个微服务都打包为app.jar。
Docker基本操作——挂载数据卷 需求说明:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。案例一:创建一个nginx容器,修改容器内的html目录内的index.html内容。我们在创建容器时,可以通过-v参数来挂载一个数据卷到某个容器目录。案例二:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器。1.创建容器并挂载数据卷到容器内的HTML目录。提示:运行容器时使用-v参数挂载数据卷。
Docker基本操作——数据卷 查看数据卷详细信息卷:docker volume inspect html。创建数据卷:docker volume create html。将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。数据卷:是一个虚拟目录,指向宿主机文件系统中的某个目录。案例:创建一个数据卷,并查看数据卷在宿主机的目录位置。inspect:显示一个或多个volume的信息。查看所有数据:docker volume ls。prune:删除未使用的volume。ls:列出所有的volume。容器与数据耦合的问题。
Docker基本操作——镜像相关命令 镜像名称一般分为两部分组成:[repository]:[tag]docker save:保存镜像为一个压缩包。docker pull:从服务拉取镜像。docker push:推送镜像到服务。docker load:加载压缩包镜像。docker build:构建镜像。dicker image:查看镜像。docker rmi:删除镜像。
初识Docker——安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。这里采用CE版本。Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
初识Docker——镜像和容器 DockerHub:DockerHub是一个Docker镜像托管平台,这样的平台称为Docker Registry。客户端(client):通过命令或RestAPI向Docker服务端发送命令,可以在本地或远程向服务端发送指令。容器:镜像中应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。镜像:Docker将应用程序及其所需依赖、函数库、环境、配置等文件打包在一起,称为镜像。服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等。
初识Docker——入门介绍 2.Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行。1.将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包,形成可移植镜像。1.Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包。1. 可以将程序及其依赖、运行环境一起打包为一个镜像,2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰。2.将每个应用放到一个隔离容器去运行,避免互相干扰。Docker如何解决不同系统环境的问题?2.开发、测试、生产环境有差异。
统一网关Gateway——路由过滤器GatewayFilter 当前过滤器写在userservice路由下,因此仅仅对访问userservice的请求有效,如果需要对所有路由请求都生效,则采用default-filters。:给所有进入userservice的请求添加一个请求头:Truth=itcast is freaking awesome!Spring提供了31种不同的路由过滤器工厂。
统一网关Gateway——搭建网关 1.创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖。,lb是负载均衡,根据服务名拉取服务列表,实现负载均衡。2.编写路由配置以及nacos地址。规则的一切请求,都代理到。