之前我们创建完成了3个Eureka的客户端的服务操作,你会发现我们还是没有能够通过微服来进行对他访问,还是必须通过自己服务的端口号来进行访问,那么我们的微服务是没有能够完成的,这个时候我们就需要通过网关进行操作
其实网关就是为客户端提供统一入口,再通过网关的路由进行转发找到对应的服务就好了,网关最大的作用就是路由,路由的作用就是通过客户的url来访问到不同的微服务就好了。
Zuul有个特殊能力叫做负载均衡-----默认的负载均衡的策略是轮询策略
API网关的作用;
创建网关项目(我这里加载不出来创建的时候不能够向我一样叫gateway):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.pb</groupId>
<artifactId>kehuduan</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>kehuduan</name>
<description>kehuduan</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
下面我们对某些细节进行调整比如,如下图所示:
需要打开网关项目的yml文件进行配置:
spring: 最后浏览器中输入地址:http://localhost:9000/c/msg测试即可 |
Eureka高可用操作:
我们看所有的服务都会注册到注册中心,一旦注册中心挂掉了是万万不能的,所以我们下面要学习下注册中心的高可用操作
其实配置特别简单对于eureka我们只它既是服务端,又是客户端所以我们只需要进行服务的互相注册就可以了
我们使用Idea给我们提供的便利来进行如下操作:
再把8761复制一份改成8762就可以:
8761向8762进行注册
然后立即启动该配置完成的8761的服务
8762向8761进行注册:
完成配置后立即启动8762的服务
我们会在浏览器看到如下情况表明互相注册成功,如下所示:
8761的服务
8762的服务
如果有报错
下面我们来启动eureak的client进行操做进行 想erueak服务进行注册,
你会发现在服务注册的那里分别会有后客户端的服务,如下所说:
但是还是有个非常严重的问题就是我们在erueak的client中注册的时候只向8761那个Eureak的服务进行了注册,所以如果8761挂掉了,那么所有的服务也就全部挂掉了,为了避免这种情况的发生我们可以在Eureka的客户端同时向多个Eureak的服务端进行注册即可,如下面yml文件的修改:
spring: |