手机模板网站模板免费下载,怎样提高网站的流量,wordpress防淘宝主题,wordpress什么读背景#xff1a;本想找个简单例子看下#xff0c;无奈版本依赖太过复杂#xff0c;花了点时间。记录下吧
使用Spring Cloud Gateway作为网关服务#xff0c;Nacos作为注册中心#xff0c;实现对子服务的负载均衡访问。简单例子。
一、gateway-main-nacos服务端#xff…背景本想找个简单例子看下无奈版本依赖太过复杂花了点时间。记录下吧
使用Spring Cloud Gateway作为网关服务Nacos作为注册中心实现对子服务的负载均衡访问。简单例子。
一、gateway-main-nacos服务端
完整pom文件
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdgateway-main-nacos/artifactIdversion1.0.0/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.4/versionrelativePath/ !-- lookup parent from repository --/parentdependencies!-- Spring Cloud Gateway --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!-- Nacos Discovery --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.1/version/dependency!-- Nacos Config --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion2021.1/version/dependency!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2020.0.3/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement
/project完整的yml配置文件
server:port: 8888
spring:application:name: gateway-servicemain:web-application-type: reactivecloud:nacos:discovery:server-addr: localhost:8848 # Nacos 服务器地址namespace: namespace_xxxconfig:server-addr: localhost:8848 # Nacos 配置中心地址file-extension: yamlgateway:discovery:locator:enabled: trueroutes:- id: neo_routeuri: http://www.ityouknow.compredicates:- Path/spring-cloud
# - id: add_request_parameter_route
# uri: http://localhost:8889
# filters:
# - AddRequestParameterfoo, bar
# predicates:
# - MethodGET- id: lb_nacosuri: lb://user-service #会进行服务负载均衡filters:- AddRequestParameterfoo, bar123predicates:- Path/user/** # 匹配 /user/** 路径的请求- id: lb_nacos01uri: lb://user-servicefilters:- StripPrefix1 # 去掉前缀 /user01predicates:- Path/user01/** # 匹配 /user01/** 路径的请求 GatewayApplication启动类:
package com.neo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;SpringBootApplication
EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}二、 路由的子服务(可以发布两个服务达到负载均衡的效果)
完整pom文件
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIduser-service/artifactIdversion1.0.0/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.4/versionrelativePath/ !-- lookup parent from repository --/parentdependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Nacos Discovery --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.1/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2020.0.3/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement
/project完整的yml文件
server:port: 8889spring:application:name: user-service#main:# web-application-type: reactivecloud:gateway:discovery:locator:enabled: truenacos:discovery:server-addr: localhost:8848 # Nacos 服务器地址namespace: namespace_xxx #nacos命名空间修改为自己定义的config:server-addr: localhost:8848 # Nacos 配置中心地址namespace: namespace_xxxfile-extension: yaml
子服务启动类: import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;SpringBootApplication
EnableDiscoveryClient
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}
对应测试的Controller类
RestController
public class HelloController {GetMapping(/hello)public String index() {return hello world!;}GetMapping(/user/hello)public String indexUser() {return hello world user!;}RequestMapping(/user/foo)public String foo(String foo) {return hello foo!;}}
三、测试
本地启动gateway-main-nacos、user-service、user-service-1。 访问 http://localhost:8888/user/hello多次访问发现会返回 hello world user! 或者 hello world user,another!。达到负载均衡的效果。
访问这个地址也可以看到同样的效果 http://localhost:8888/user01/hello
两个url不同的路由匹配规则。 四、遇到的问题 1.#允许bean Service循环依赖 spring.main.allow-circular-referencestrue
2.#Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway. #同时使用Spring MVC和Spring Cloud Gateway spring.main.web-application-typereactive
3.SpringCloud-Gateway搭配服务注册Nacos进行lb动态路由遇到的问题 高版本的spring-cloud-alibaba-dependencies依赖中去除了ribbon依赖若想能通过Gateway网关找到对应的微服务需要引入loadbalancer依赖。
dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency 参考的文档http://www.ityouknow.com/springcloud/2019/01/19/spring-cloud-gateway-service.html 源码地址https://github.com/tracysw/Spring-Cloud-Gateway-Samples