SpringCloud Alibaba应用

目录

1.服务注册中心

1.1 nacos服务注册与发现

1.1.1 springcloud集成nacos服务注册中心

2.服务配置中心

2.1 nacos服务配置中心

3.远程调用

3.1 openfeign远程调用

4.网关服务

4.1 gateway网关服务

4.1.1 引入依赖

4.1.2 配置

4.1.3 注意事项

4.1.4 常见问题


1.服务注册中心

1.1 nacos服务注册与发现

服务中集成nacos的方式有多种,常用的有springboot和springcloud两种,官网也有很多示例,这里只记录springcloud方式

1.1.1 springcloud集成nacos服务注册中心

1. 引入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

2. 配置

springboot一般使用application.yml文件

springcloud需要使用 bootstrap.yml文件

server:
  port: 9001
spring:
  application:
    name: nacos-base
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        server-addr: nacos_ip:port # nacos 服务ip和端口
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun
      config:
        server-addr: nacos_ip:port # nacos 服务ip和端口
        file-extension: yaml
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun

启动服务后查看nacos 服务管理,此时nacos-base已经被注册

2.服务配置中心

2.1 nacos服务配置中心

3.远程调用

3.1 openfeign远程调用

1. 引入依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

2. 配置

server:
  port: 9005
spring:
  application:
    name: feign-base
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        server-addr: nacos_ip:port # nacos 服务ip和端口
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun
      config:
        server-addr: nacos_ip:port # nacos 服务ip和端口
        file-extension: yaml
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun

3.启动注解

@SpringBootApplication
@EnableFeignClients
public class FeignBaseApplicationStart {

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

说明:需要添加@EnableFeignClients注解启动feign

4.定义接口

@FeignClient(value = "nacos-base", path = "/nb")
public interface FeignBaseService {

    @GetMapping("/hello/{str}")
    String hello(@PathVariable("str") String str);
}

说明:

        @FeignClient: value 指定访问服务 path 指定接口路径 

nacos-base服务中接口

@RestController
@RequestMapping("/nb")
public class NacosBaseController {

    @Autowired
    private NacosBaseService nacosBaseService;

    @GetMapping("/hello/{str}")
    public String hello(@PathVariable("str") String str) {
        return nacosBaseService.hello(str);
    }

}

5.编写控制器

@RestController
@RequestMapping("/fb")
public class FeignBaseController {

    @Autowired
    private FeignBaseService feignBaseService;

    @GetMapping("/hello/{str}")
    public String hello(@PathVariable("str") String str) {
        return feignBaseService.hello(str);
    }

}

4.网关服务

4.1 gateway网关服务

4.1.1 引入依赖

        <!-- 配置中心依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <!-- 注册中心依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- 网关依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <!-- bootstrap依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

        <!-- 负载均衡依赖 nacos兼容feign,feign集成ribbon,默认实现负载均衡;nacos不兼容springcloud gateway自带的ribbon -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

版本信息

        <alibaba-cloud.version>2021.1</alibaba-cloud.version>
        <lombok.version>1.18.8</lombok.version>
        <!--   注意版本冲突,如果使用3.1.0版本不能使用lb://service_name方式路由     -->
        <spring-cloud.version>3.0.0</spring-cloud.version>

4.1.2 配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: nacos_ip:port # 自己nacos服务的ip和端口号
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun
      config:
        server-addr: nacos_ip:port # 自己nacos服务的ip和端口号
        file-extension: yaml
        namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
        group: huachun
        enabled: true

nacos配置中心配置

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: abc                      #当前路由标识,要求唯一 (默认值uuid,一般不用,需要自定义)
          uri: lb://nacos-base                #请求最终要被转发的地址
          #uri: http://127.0.0.1:9001
          order: 1                            #路由优先级,数字越小,优先级越高
          predicates: #断言 判断条件,返回值是boolean 转发请求要返回的条件 (可以写多个)、
            - Path=/nb/**                     #当请求路径满足path指定的规则时,此路由信息才会正常转发
  #          filters: #过滤器(在请求传递过程中,对请求做一些手脚)
  #            - StripPrefix=1                   # 在请求转发之前去掉一层路径

说明:

uri:  

          lb: 表示用负载均衡方式访问服务        

          nacos-base: 表示目标访问服务的服务名

predicates:断言 (可以参考官网,示例太多)

原文参考 :Spring Cloud Alibaba入门十二:Spring Cloud Gateway的使用_清风雪的技术博客_51CTO博客g

官网参考:Spring Cloud Gateway

4.1.3 注意事项

1.注意版本信息

2.新手可以参考我的依赖信息搭建

4.1.4 常见问题

1. 503 Service Unavailable

请注意查看是否版本冲突,我出现这个问题原因就是版本冲突,另外查看是否少了依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值