AMQP(Advanced Message Queuing Protocol)是用于在应用程序之间传递业务消息的开放标准。该协议与语言和平台无关,更符合微服务中独立性的要求。 RabbitMQ实现了AMQP协议。Spring AMQP是基于AMQP协议定义的一套API规范,提供了模板来发送和接收消息。包含两部分,其中spring-amqp是基础抽象,spring-rabbit是底层的默认实现。 Spring AMQP的依赖如下,其中包含了RabbitMQ的依赖: 1<!-- AMQP依赖,包含RabbitMQ --> 2<dependency> 3...

RabbitMQ官网:https://www.rabbitmq.com/。 官方文档:https://rabbitmq.com/documentation.html。 官方Demo:https://www.rabbitmq.com/getstarted.html。 部署 RabbitMQ 使用Docker来部署RabbitMQ只需要两个步骤: pull RabbitMQ镜像: 1docker pull rabbitmq:3-management RabbitMQ通过插件的方式提供了一个可视化界面。在RabbitMQ官方的镜像中,带management版本的就是集成了该可视化插件的镜像。 通过Docker官方的镜像源来pull...

微服务间通讯有两种方式: 同步通讯:实时响应。 异步通讯:不需要马上回复。 两种方式各有优劣,同步通讯可以立即得到响应,但是却不能跟多个服务同时通讯。异步通讯可以同时与多个服务通讯,但是往往响应会有所延迟。 同步通讯 Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题: 耦合度高:消费者与提供者之间存在直接的调用关系。在服务中每次加入新的需求,都要修改原来的代码。 性能下降:消费者需要等待提供者响应,如果调用链过长,响应时间等于每次调用的时间之和。 资源浪费:消费者在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源。 级联失败:如果提供者出现问题,所有消费者都会跟着出问题。如同多米话骨牌一...

搭建MySQL主从数据库,首先需要满足以下条件: 至少两台以上服务器(可用虚拟机模拟); 两台服务器中MySQL的版本一致。 最好是使用刚安装的MySQL并且没有任何修改。 如果要配置从库的MySQL服务器中有数据库存在(或者是要给主库配置新的从库),还需要将该服务器中数据库的结构及其数据导出,并且导入到从库服务器中,保持主库和从库的状态一致(非常重要!!!)。 修改数据库配置 假设你已经满足了以上条件,准备开始配置主库。 修改主库的配置文件/etc/my.cnf: 1vim /etc/my.cnf 增加(修改)以下内容: 1[mysqld] 2# 主库Master 3log-bin=mysql-bin # [必须] 启用二进制日志...

API 测试工具

Postman Apifox(作者也在用) Apifox和Postman差不多,但是比Postman更易用。界面美观、支持中文。而且设置接口参数也很方便,还能自动生成随机的参数。支持将接口导出为HTML、Markdown、PDF等格式。在编写API测试时,还能用它来编写Markdown文档来进一步说明。 支持多种导入方式: 缺点就是每次开机第一次打开Apifox都需要等待一段时间的加载(也有可能是我机械硬盘太慢了)。 Swagger(Knife4j) Swagger是一款用于Java的API文档自动生成的框架。 Knife4j是Swagger的增强UI实现。并且Swagger和Knife4j可以无缝切换。...

本地部署 Nacos是一个开源项目,已经在Github上开源。在本地搭建Nacos需要访问Nacos项目仓库,你可以选择将该项目clone到本地自己打包后部署,也可以选择直接访问Nacos的Releases页面下载已经打包好的项目压缩文件进行部署。你也可以访问Nacos官网查看如何部署。 clone到本地: 1git clone https://github.com/alibaba/nacos 访问Nacos的Releases页面: 选择自己想要的版本(如2.2.3)进行下载: 无论是选择下载.zip还是.tar.gz后缀的压缩包都可以。但是在Linux环境下选择下载.tar.gz为佳。 Linux中解压.tar.gz的命令如:...

Eureka 服务注册中心 Eureka架构下将服务分为以下两个角色: 注册中心(Eureka Server,服务端)。 客户端(Eureka Client)。 Eureka会将客户端(即服务)的信息进行注册,让客户端可以通过Eureka注册中心获取服务信息并进行调用。 Eureka的作用: 注册服务信息:服务提供者启动时向Eureka注册自己的信息,Eureka保存这些服务信息到服务列表中。 获取服务信息:服务消费者根据服务名称向Eureka拉取服务列表。 负载均衡:有多个服务提供者时,服务消费者利用负载均衡算法,从Eureka注册的服务列表中挑选一个服务后发起远程调用。 感知服务健康状态: 服务提供者会每隔30秒向Eureka...

尽管使用了注册中心来解决URL的硬编码等问题,但是如今使用RestTemplate还是存在以下问题: 代码可读性差,编程体验不统一; 参数复杂URL难以维护。 Feign是一个声明式的HTTP客户端,作用于服务消费者,在服务消费者中为服务提供者创建一个HTTP远程调用。官方地址:https://github.com/OpenFeign/feign。其作用就是帮助我们优雅的实现HTTP请求的发送,解决上面提到的问题。 使用 Feign 使用Feign非常简单,大致分为以下步骤: 在pom.xml中引入Feign客户端依赖: 1<dependency> 2...

网关 网关是所有微服务的统一入口。网关的核心功能特性: 请求路由:一切请求都必须先经过网关,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当路由的目标服务有多个时,还需要做负载均衡。 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。 限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。 在SpringCloud中网关的实现包括两种: Gateway:基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。 Zuul:基于Servlet的实现,属于阻塞式编程。 Spring Cloud Gateway旨在为...

部署 Nacos Server 安装和配置好Nacos后,在nacos的bin目录中使用脚本启动: Windows: 单机启动: 1startup.cmd -m standalone Linux: 单机启动: 1sh startup.sh -m standalone 在浏览器中使用对应的IP和端口访问,如http://localhost:8848/nacos。 默认账号和密码均为nacos。 更多Nacos的部署方式:Nacos 部署 服务注册中心 Nacos 客户端依赖 父工程: 1<!-- 2 Spring Cloud Alibaba 3 包含了Nacos的版本管理 4 --> 5<dependency> 6...