开发者学堂课程【全面讲解开源数据库中间件 MyCat 使用及原理(四):MyCat - 环境搭建 - 微服务网关 gateway 搭建 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/758/detail/13311
MyCat - 环境搭建 - 微服务网关 gateway 搭建
内容简介:
一、初步介绍
二、初步搭建 GateWay 网关
三、引入依赖
四、声明引导类
五、声明 Cors 配置类
一、初步介绍
用前端来提供一个统一的入口,所有前端的请求都经过服务网关,通过服务网关将请求录入到后端的微服务,服务网关模块如图所示:
前端所有的请求都经过这个网关,由服务网关指定这个请求录入到哪个微服务中。
二、初步搭建 GateWay 网关
搭建微服务模块的名称设计:
接下来选择 next,建立 Module 文件成功,这个 v-gateway 就已经搭好了,java和 resources 刚开始的颜色是不对的,我们可以看到 v-gateway 是灰色的,我们就点击图中所示的“+”,
点击 v-gateway 后再点击 pom.xml 这个选项再点击 OK 就可以了,那么这个就搭建好了。
三、引入依赖
我们引入的依赖有两个,分别是 gateway 微服务和 eureka 客户端;
依赖可以看到,如图所示:
任何的微服务都是 eureka 的客户端,都是要连接到 eureka 的,接着在 resources建立一个 application.yml 的文件:
在这个文件中输入如下代码:
Server:
port:8001
eurekat:
alient:
service-url:
defaultzone:
http://127.0.0.118161/eureka
inatance:
prefer-ip~address: true
spring:
application:
name: gateway
cloud:
gateway:
Routes:
- id: v_goods_route
uri: lb://goods
predicates:
- Path=/gooda/**
filtera:
- StripPrefix=1
- id: v_order_route
url: lb://order
predicates:
- Path=/order/**
filtors:
- stripPrefix=1
根据代码我们可以看到它的端口配置时 8001,连接 eureka 这边的配置,spring 这一块表示的是服务名称,cloud 这一块表示的是服务网关的配置,这一块主要配置的就是路由这一部分的配置:
如果大家没有 gateway 这一部分的基础,那么就要留意一下路由的这个配置,微服务的名称叫做 goods,另一个微服务叫做 order,在旁边的项目栏都会有发现,Path=//goods** 的意思是 gateway 接收到的一个请求路线是 goods 打头的,那么他就会把这个请求录入后端的 gateway 微服务,录入后他会把 goods 给它去除掉,如果想去除掉两个头标签,在 filters 后面的设置中设置为 2 就可以了。
四、声明引导类
在 java 中新建一个 cn.itcast.gateway.GateWayApplication 的文件,在这个文件中,新建成功后传递一下 GateWayApplication 的表,如图所示:
再用 psvm 声明慢方法调用 SpringApplication 表然后输入如下代码:
import org.apringframevork.boot.springApplication;
Import org.apringframework.boot.autoconfigure.apringllootApplication;
import org.springframework.cloud.netflix.eureka.Enableturekaclimnt;
@SpringBootApplication
@EnableEurokaClient
public class GateWayApplication {
public static void main (String[] args) }
springApplication.run(GateWayApplication.class,args);
}
}
引导类就声明完毕了。
五、声明 Cors 配置类
声明的原因是用来解决跨域问题的,因为前端和微服务是位于不同的服务器的,这时就需要用 Cors 来解决;在上面的 GateWay 网关服务的说明我们可以看到前端和微服务之间都是跨域的。
在 java 中再次建立一个 config 的包在直接打入如下代码:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorswebFilter;
import org.springframework.web.cors.reactive.urlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;
@Configuration
public class CorsConfig {
@Bean
public
CorswebFilter
corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new
PathPatternParser());
source.registerCorsConfiguration("/**",buildconfig()):
return new CorswebFilter(source):
}
可以看到有一个 CorsWebFilter, 这样 GateWay 的服务网关就搭建成功了。