微服务实战(六)集成服务网关 SpringCloud GateWay (配置中心&注册中心用Nacos)

本章主要讲述服务网关、配置中心、注册中心 结合使用

结合使用微服务架构的 服务网关、配置中心、注册中心。

回顾一下:之前分别讲述了Nacos的配置中心、注册中心单独使用,记得在注册中心一章中我们是在消费者微服务中先进行了接口地址的寻址,然后再调用的。这次加上服务网关,就不用这么麻烦啦!只要将服务网关也注册到服务中心,那么服务网关就会自动代理服务中心的服务,相当于Nginx的作用。

介绍一下这个组合吧:

服务网关:Spring Cloud GateWay

注册中心:Spring Cloud Alibaba Nacos Discovery

配置中心:Spring Cloud Alibaba Nacos Config

 

Nacos部署以及注册中心:https://blog.csdn.net/u011177064/article/details/104107033

Nacos配置中心使用:https://blog.csdn.net/u011177064/article/details/104118986

 

服务网关集成步骤

首先我们建立一个新的工程,我这里命名 combat-gateway好啦。

和之前的工程相比,pom.xml 中新加上这两个依赖。


	org.springframework.cloud
	spring-cloud-starter-gateway


	org.springframework.boot
	spring-boot-starter-webflux

完整的pom.xml 如下:


	4.0.0
	com.zjf.csdn
	combat-gateway
	0.0.1-SNAPSHOT

	zjf微服务实战
	combat-gateway
	https://blog.csdn.net/u011177064

	
		
		2.1.0.RELEASE
		Greenwich.SR2
		2.1.0.RELEASE
	

	
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
			com.alibaba.cloud
			spring-cloud-starter-alibaba-nacos-config
		
		
			org.springframework.cloud
			spring-cloud-starter-gateway
		
		
			org.springframework.boot
			spring-boot-starter-webflux
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			com.alibaba.cloud
			spring-cloud-starter-alibaba-nacos-discovery
		
		
		
			org.projectlombok
			lombok
		
	


	
		
			
				org.springframework.boot
				spring-boot-dependencies
				${spring.boot.version}
				pom
				import
			
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring.cloud.version}
				pom
				import
			
			
				com.alibaba.cloud
				spring-cloud-alibaba-dependencies
				${spring.cloud.alibaba.version}
				pom
				import
			

		
	

	
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.1
				
					1.8
					1.8
				
			
		
	

	

		
			spring
			
				
					spring-snapshots
					Spring Snapshots
					https://repo.spring.io/libs-snapshot-local
					
						true
					
					
						false
					
				
				
					spring-milestones
					Spring Milestones
					https://repo.spring.io/libs-milestone-local
					
						false
					
				
				
					spring-releases
					Spring Releases
					https://repo.spring.io/release
					
						false
					
				
			
			
				
					spring-snapshots
					Spring Snapshots
					https://repo.spring.io/libs-snapshot-local
					
						true
					
					
						false
					
				
				
					spring-milestones
					Spring Milestones
					https://repo.spring.io/libs-milestone-local
					
						false
					
				
				
					spring-releases
					Spring Releases
					https://repo.spring.io/libs-release-local
					
						false
					
				
			
		

	

这里有一点要特别注意:网关工程pom.xml里需要去掉这个依赖,因为和gateway里的webflux依赖是有冲突的。

(如不去掉会报错:  Error creating bean with name 'routeDefinitionRouteLocator' )


       org.springframework.boot
       spring-boot-starter-web

 

 

然后配置文件  application.yml 如下:

server:
  port: 9000	
spring:
  application:
    name: gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
management:
  endpoints:
    web:
      exposure:
        include: "*"

其中,spring.cloud.gateway.discovery.locator.enabled = true , 这个就表示让 gateway 来自动代理服务注册中心上的服务。

下面一行的 nacos.discovery.server-addr 则是配置好nacos服务注册中心的地址。(前提是已经部署好nacos)

接下来就写一个启动类了,需要加上  @EnableDiscoveryClient 注解来开启和服务注册中心的连接。

@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan
public class NacosApplication {

	public static void main(String[] args) {
		 SpringApplication.run(NacosApplication.class, args);
	}
}

效果验证

启动后,查看Nacos后台是否已经有gateway服务注册进来,另外,我们把以前章节里搭建好的 combat-provider 也启动起来。

如图所示,效果是已经成功启动了 combat-gateway 和 combat-provider,并且也都向服务中心注册了服务。

微服务实战(六)集成服务网关 SpringCloud GateWay (配置中心&注册中心用Nacos)_第1张图片

接下来,调用 combat-gateway 中的服务网关接口

http://127.0.0.1:9000/nacos-provider/config/version

发现已经有正确的返回了。

而这个返回数据来自 combat-provider的 http://127.0.0.1:9999/nacos-provider/config/version

微服务实战(六)集成服务网关 SpringCloud GateWay (配置中心&注册中心用Nacos)_第2张图片

 

SpringCloud GateWay 的默认转发规则:

http://网关地址:端口/服务注册中心的serviceId/具体的url

例如:
http://127.0.0.1:9000【网关地址+端口】/nacos-provider【provider服务注册到服务中心的ID】/config/version 【provider服务中的具体接口地址】

 

你可能感兴趣的:(微服务架构实战)