亲宝软件园·资讯

展开

SpringCloud-Nacos/OpenFien/Gateway的基本介绍及快速上手

农夫三拳有点疼~ 人气:2
# Spring-Cloud-Alibaba-Nacos 注册中心 ## 下载、安装 Nacos 下载地址:[https://github.com/alibaba/nacos/releases](https://github.com/alibaba/nacos/releases) 下载后解压,打开 bin 目录,双击 startup.cmd 即可运行,出现错误可参考:[https://www.cnblogs.com/songjilong/p/12620021.html](https://www.cnblogs.com/songjilong/p/12620021.html) ## 引入 spring-cloud-alibaba、alibaba-nacos-discovery ```xml com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-alibaba-dependencies 2.1.0.RELEASE pom import ``` ## 配置服务名、注册中心地址 ```yaml spring: application: name: gulimall-coupon # 服务名称 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # nacos地址 ``` 4、运行需要注册的服务、打开浏览器输入[http://127.0.0.1:8848/nacos](http://127.0.0.1:8848/nacos) ,用户名密码默认是 nacos,进入后点击服务列表就可以看到所有注册的服务了 # Spring-Cloud-OpenFeign 远程调用 ## 引入 openfeign 依赖 ```xml org.springframework.cloud spring-cloud-starter-openfeign ``` ## 编写远程调用接口 告诉 SpringCloud 这个接口需要调用的远程服务,**接口方法的请求地址、名称、返回值要与被调用的方法一致** ```java //指定调用的远程服务名 @FeignClient("gulimall-coupon") public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R memberCoupons(); } ``` ## 开启远程调用服务 ```java @SpringBootApplication @EnableDiscoveryClient //指定自己创建的远程接口的位置 @EnableFeignClients(basePackages = "com.sjl.gulimall.member.feign") public class GulimallMemberApplication { public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args); } } ``` # Spring-Cloud-Alibaba-Nacos 配置中心 ## 引入alibaba-nacos-config ```xml com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ``` ## 添加配置文件`bootstrap.properties` ```properties # 服务名 spring.application.name=gulimall-coupon # nacos地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 ``` ## 开启动态刷新 完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。要想打开动态刷新,还需要在当前类加上 `@RefreshScope` 注解 ```java @RefreshScope //开启动态刷新 @RestController @RequestMapping("coupon/coupon") public class CouponController { @Value("${coupon.user.name}") private String name; //coupon.user.name=张三 @Value("${coupon.user.age}") private Integer age; //coupon.user.age=18 @RequestMapping("/test") public R test(){ return R.ok().put("name", name).put("age", age); } } ``` ## 在Nacos新建配置文件 进入 Nacos 控制台,新建一个配置文件,命名为`服务名.properties` ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200402173242.png) ## 动态的修改配置文件 当我们将配置文件的值修改后,访问的数据也会 更新,如果配置中心和当前应用都配置了相同的项,优先使用配置中心的配置 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200402173631.png) # Nacos 配置中心的一些概念与细节 ## 命名空间 > 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 DataID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 Nacos 中默认有一个 public 保留空间,默认所有新增的配置都放在这个空间中 我们可以在 Nacos 可视化界面创建自己的命名空间 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403173015.png) 新建一个配置文件,并发布,命名规则为`服务名.properties` ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403173845.png) 在 `bootstrap.properties` 文件中指定命名空间的唯一标识,重启该服务,即可访问 ```properties spring.cloud.nacos.config.namespace=5a8f07f8-9fc0-480e-9d31-1a1800b7530b ``` ## 配置集 > **一组相关或者不相关的配置项的集合称为配置集**。在系统中,一个配置文件通常就是一个配 > 置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级 > 别等配置项。 ## 配置集ID > **Nacos中的某个配置集的 ID。 配置集ID是组织划分配置的维度之一**。DataID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。DataID 通常采用类Java 包(如com.taobao.tc.refund.log.level) 的命名规则保证全局唯一性。 此命名规则非强制。 **类似配置文件名** ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403175146.png) ## 配置分组 > **Nacos 中的一组配置集,是组织配置的维度之一。**通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分DataID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_ GROUP。 在 Nacos 中新建一个分组后,需要在 `bootstrap.properties` 中指定自己要使用的分组 ```properties spring.cloud.nacos.config.group=dev ``` **通常将每个微服务创建自己的命名空间,使用dev、prod、test等名称作为配置分组,区分环境** ## 同时加载多个配置集 有了 Nacos 配置中心,我们就可以将所有的配置文件都放在配置中心里管理,项目里只保留一个`bootstrap.properties`,非常便于管理 比如,现在将我们原本的配置文件 `application.yml` 拆分为几个部分放到配置中心 - 数据源配置:datasource.yml ```yml spring: datasource: url: jdbc:mysql://192.168.56.10:3306/gulimall_sms driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root ``` - mybatis 配置:mybatis.yml ```yml mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto ``` - 其他配置:other.yml ```yml server: port: 7000 spring: application: name: gulimall-coupon datasource: url: jdbc:mysql://192.168.56.10:3306/gulimall_sms driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root cloud: nacos: discovery: server-addr: 127.0.0.1:8848 ``` 我们还需要在 `bootstrap.properties` 中配置如下信息 - data-id:配置文件名 - group:分组名 - refresh:自动刷新(默认是false),即 修改了配置中心的值后是否刷新 ```properties spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml spring.cloud.nacos.config.ext-config[0].group=dev spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml spring.cloud.nacos.config.ext-config[1].group=dev spring.cloud.nacos.config.ext-config[1].refresh=true spring.cloud.nacos.config.ext-config[2].data-id=other.yml spring.cloud.nacos.config.ext-config[2].group=dev spring.cloud.nacos.config.ext-config[2].refresh=true ``` 点进源码可发现此配置是个 List 集合,因此可以配置多个 ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403184555.png) 配置完成后,可以访问相关接口测试一下 ---- 更多配置请参考 **Nacos 官方文档**:[https://nacos.io/zh-cnhttps://img.qb5200.com/download-x/docs/what-is-nacos.html](https://nacos.io/zh-cnhttps://img.qb5200.com/download-x/docs/what-is-nacos.html) # Spring-Cloud-Gatway API网关 ## 简介 网关作为**流量的入口**,常用功能包括路由转发、权限校验、限流控制等。而 springcloud gateway 作为 SpringCloud 官方推出的第二代网关框架,取代了 Zuul 网关。 ![几种网关的性能对比](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403185637.png) ## 使用 开启服务注册发现、配置 Nacos 注册中心、配置中心地址、端口 ```yml server: port: 88 spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 ``` ```properties spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=24b9f0bf-ac39-431e-80f0-4daa0b923b7a ``` 配置路由,使我们输入`localhost:88?query=baidu`可以跳转到百度官网,输入`localhost:88?query=qq`可以跳转到qq官网 ```yml spring: cloud: gateway: routes: - id: test_baidu uri: https://www.baidu.com predicates: - Query=query,baidu - id: test_qq uri: https://www.qq.com predicates: - Query=query,qq ``` ![](https://gitee.com/songjilong/FigureBed/raw/master/img/20200403203141.png) ---- **官方文档:**https://cloud.spring.io/spring-cloud-gateway/2.1.x/single/spring-cloud-gateway.html

加载全部内容

相关教程
猜你喜欢
用户评论