springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用

     上篇写了 nacos 的安装,这篇写一下以nacos为注册中心(没有使用配置中心的功能),进行服务调用,网关路由等的使用,首先看下各版本之间的对应关系

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第1张图片

本次代码 springboot 版本 2.1  springcloud 版本 Greenwich.SR5  springcloud alibaba 2.1 ,首先引入注册发现 远程调用

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.1.1.RELEASE
        

       
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

然后在配置文件中,配置服务端口 服务名称,注册中心地址

server.port=8088
spring.application.name=service-provider
spring.cloud.nacos.discovery.server-addr=http://127.0.0.1:8848

然后依次启动下图中的三个服务

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第2张图片

然后我们在 nacos注册中心查看服务是否已注入

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第3张图片点击详情,可以看到服务消费者的 ip 端口

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第4张图片

首先需要在启动类上开启注册中心 服务调用的注解

@EnableDiscoveryClient //服务注册
@EnableFeignClients //启用feign进行远程调用

服务提供者端口 8088,接下来我们消费服务,FeignClient 后面的名字是调用服务的名字 RequestMapping 后面的名字是请求路径

@FeignClient("service-provider")
public interface TestService {

    @RequestMapping("hello")
    public String  getHello();
}

我们之间消费者调用提供者

/**
 * @version V1.0
 * @author: hqk
 * @date: 2020/5/18 17:06
 * @Description:
 */
@RestController
public class TestController {

    @Autowired
    private TestService testService;

    @RequestMapping("/hello")
    public String getHello(){

        return "hello";
    }

    @RequestMapping("/feign")
    public String  getFign(){

        return  "这里是通过远程调用返回的"+testService.getHello();
    }
}

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第5张图片

接下来我们通过网关去调用服务 网关端口 9999 网关需要定义路由规则


server.port=9999
spring.application.name=service-gateway
spring.cloud.nacos.discovery.server-addr=http://127.0.0.1:8848

spring.cloud.gateway.routes[0].id=my_route
spring.cloud.gateway.routes[0].uri=lb://service-provider
spring.cloud.gateway.routes[0].predicates[0]=Path=/app/**
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1
spring.cloud.gateway.routes[0].filters[0].name=RequestRateLimiter
spring.cloud.gateway.routes[0].filters[0].args.key-resolver=#{@urlResolver}
spring.cloud.gateway.routes[0].filters[0].args.redis-rate-limiter.replenishRate=5
spring.cloud.gateway.routes[0].filters[0].args.redis-rate-limiter.burstCapacity=10
spring.cloud.gateway.routes[0].filters[1].name=Hystrix
spring.cloud.gateway.routes[0].filters[1].args.name=fallbackcmd
spring.cloud.gateway.routes[0].filters[1].args.fallbackUri=forward:/defaultfallback
# 路由 断言
spring.cloud.gateway.routes[1].id=my-consumer-service2
spring.cloud.gateway.routes[1].uri=lb://service-consumer
spring.cloud.gateway.routes[1].predicates[0]=Path=/admin/**
spring.cloud.gateway.routes[1].filters[0]=StripPrefix=1
# 限流
spring.cloud.gateway.routes[1].filters[0].name=RequestRateLimiter
spring.cloud.gateway.routes[1].filters[0].args.key-resolver=#{@urlResolver}
spring.cloud.gateway.routes[1].filters[0].args.redis-rate-limiter.replenishRate=1
spring.cloud.gateway.routes[1].filters[0].args.redis-rate-limiter.burstCapacity=1
# 熔断
spring.cloud.gateway.routes[1].filters[1].name=Hystrix
spring.cloud.gateway.routes[1].filters[1].args.name=fallbackcmd
spring.cloud.gateway.routes[1].filters[1].args.fallbackUri=forward:/defaultfallback
# redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0

#my-consumer-service.ribbon.listOfServers=127.0.0.1:8088,127.0.0.1:8099
#my-consumer-service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
# 熔断 服务调用超时时间 6s 默认 1s
hystrix.command.fallbackcmd.execution.isolation.thread.timeoutInMilliseconds=6000

上面我们定义了,admin 开头的请求会去注册中心找服务消费者,我们通过网关调用服务消费者,然后服务消费者去掉服务提供者

springCloud 整合 Nacos 注册中心,进行服务间的调用,gateway 网关拦截进行路由转发的实际操作应用_第6张图片

具体代码已上传到 点击github ,关于配置中心和熔断降级 后续再补充

你可能感兴趣的:(springcloud,nacos,springcloud)