Spring-Cloud-Alibaba-Nacos 注册中心

下载、安装 Nacos

下载地址:https://github.com/alibaba/nacos/releases

下载后解压,打开 bin 目录,双击 startup.cmd 即可运行,出现错误可参考:https://www.cnblogs.com/songjilong/p/12620021.html

引入 spring-cloud-alibaba、alibaba-nacos-discovery

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> <dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

配置服务名、注册中心地址

spring:
application:
name: gulimall-coupon # 服务名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # nacos地址

4、运行需要注册的服务、打开浏览器输入http://127.0.0.1:8848/nacos ,用户名密码默认是 nacos,进入后点击服务列表就可以看到所有注册的服务了

Spring-Cloud-OpenFeign 远程调用

引入 openfeign 依赖

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

编写远程调用接口

告诉 SpringCloud 这个接口需要调用的远程服务,接口方法的请求地址、名称、返回值要与被调用的方法一致

//指定调用的远程服务名
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R memberCoupons();
}

开启远程调用服务

@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

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

添加配置文件bootstrap.properties

# 服务名
spring.application.name=gulimall-coupon
# nacos地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

开启动态刷新

完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。要想打开动态刷新,还需要在当前类加上 @RefreshScope 注解

@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

动态的修改配置文件

当我们将配置文件的值修改后,访问的数据也会 更新,如果配置中心和当前应用都配置了相同的项,优先使用配置中心的配置

Nacos 配置中心的一些概念与细节

命名空间

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 DataID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

Nacos 中默认有一个 public 保留空间,默认所有新增的配置都放在这个空间中

我们可以在 Nacos 可视化界面创建自己的命名空间

新建一个配置文件,并发布,命名规则为服务名.properties

bootstrap.properties 文件中指定命名空间的唯一标识,重启该服务,即可访问

spring.cloud.nacos.config.namespace=5a8f07f8-9fc0-480e-9d31-1a1800b7530b

配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配

置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级

别等配置项。

配置集ID

Nacos中的某个配置集的 ID。 配置集ID是组织划分配置的维度之一。DataID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。DataID 通常采用类Java 包(如com.taobao.tc.refund.log.level) 的命名规则保证全局唯一性。 此命名规则非强制。

类似配置文件名

配置分组

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分DataID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_ GROUP。

在 Nacos 中新建一个分组后,需要在 bootstrap.properties 中指定自己要使用的分组

spring.cloud.nacos.config.group=dev

通常将每个微服务创建自己的命名空间,使用dev、prod、test等名称作为配置分组,区分环境

同时加载多个配置集

有了 Nacos 配置中心,我们就可以将所有的配置文件都放在配置中心里管理,项目里只保留一个bootstrap.properties,非常便于管理

比如,现在将我们原本的配置文件 application.yml 拆分为几个部分放到配置中心

  • 数据源配置:datasource.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

    mybatis-plus:
    mapper-locations: classpath:/mapper/**/*.xml
    global-config:
    db-config:
    id-type: auto
  • 其他配置:other.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),即 修改了配置中心的值后是否刷新

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 集合,因此可以配置多个

配置完成后,可以访问相关接口测试一下


更多配置请参考 Nacos 官方文档https://nacos.io/zh-cn/docs/what-is-nacos.html

Spring-Cloud-Gatway API网关

简介

网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而 springcloud gateway 作为 SpringCloud 官方推出的第二代网关框架,取代了 Zuul 网关。

使用

开启服务注册发现、配置 Nacos 注册中心、配置中心地址、端口

server:
port: 88
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
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官网

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://cloud.spring.io/spring-cloud-gateway/2.1.x/single/spring-cloud-gateway.html

SpringCloud-Nacos/OpenFien/Gateway的基本介绍及快速上手的更多相关文章

  1. Kylin on Parquet 介绍和快速上手

    Apache Kylin on Apache HBase 方案经过长时间的发展已经比较成熟,但是存在着一定的局限性.Kylin 查询节点当前主要的计算是在单机节点完成的,存在单点问题.而且由于 HBa ...

  2. SpringCloud之网关 Gateway(五)

    前面我们在聊服务网关Zuul的时候提到了Gateway,那么Zuul和Gateway都是服务网关,这两个有什么区别呢? 1. Zuul和Gateway的恩怨情仇 1.1 背景 Zuul是Netflix ...

  3. springcloud - alibaba快速上手 - 更新完毕

    1.简单对比一下springcloud与springcloud-alibaba 2.准备知识 官网:https://nacos.io/zh-cn/ 查看cloud和springboot的对应关系 ht ...

  4. Spring Cloud Gateway 服务网关快速上手

    Spring Cloud Gateway 服务网关 API 主流网关有NGINX.ZUUL.Spring Cloud Gateway.Linkerd等:Spring Cloud Gateway构建于 ...

  5. uni-app跨平台框架介绍和快速入门

    前言: 首先今天主要介绍的是一个多平台的前端框架uni-app,关于多平台的前端框架网上有很多成熟的解决方案比如说Taro,React Native,Flutter等这些都是一些非常优秀的前端跨平台的 ...

  6. 序列化与反序列化、def的介绍与快速使用、cbv源码分析、APIView与request对象分析

    今日内容概要 序列化与反序列化 def介绍和快速使用 cbv源码流程分析 drf之APIView和Request对象分析 内容详细 1.序列化和反序列化 # api接口开发 最核心最常见的一个过程就是 ...

  7. rbac介绍、自动生成接口文档、jwt介绍与快速签发认证、jwt定制返回格式

    今日内容概要 RBAC 自动生成接口文档 jwt介绍与快速使用 jwt定制返回格式 jwt源码分析 内容详细 1.RBAC(重要) # RBAC 是基于角色的访问控制(Role-Based Acces ...

  8. 网关服务自定义路由规则(springcloud+nacos)

    1. 场景描述 需要给各个网关服务类提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现,动态加载自定义路由文件,动态加载路由文件中的路由规则,只需在规则文件中配置下规则就可以了 ...

  9. springboot + springcloud +nacos实战

    首先从整个软件的功能和应用场景来说,nacos更像consul,而非eureka,nacos设计的时候自带的配置中心功能,让我们省下了去搞springcloud config的时间,但这里并不是说na ...

随机推荐

  1. MQ消息丢了怎么破?在线等.....

    MQ又丢消息了,老板眉头一紧............ 在我们从事技术的工作中,离不开中间件,mq就是常见的中间件之一,丢消息可能是我们经常遇到的,为啥会丢?丢了怎么破?测试能不能复现,很多同学知道一些 ...

  2. 深度解析互联网大厂面试难题自定义@EnableXX系列

    深度解析互联网大厂面试难题自定义@EnableXX系列   其实是一个@Import的设计技巧 创建注解@EnableXX(任何名称注解都行,只是这个名字好一些) XXConfiguration类不能 ...

  3. Jira字段配置最佳实践

    在我们创建Jira时,Jira上会填写各式各样的字段,不同的字段对于不同的角色人员,使用方式也是不同的,通过这篇文章,希望大家能够对Jira使用有更深刻的认识. 为什么需要严格规范? 易于开发,测试, ...

  4. JavaScript常见的六种继承方式

    前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分面向对象的编程语言,都是通过"类 ...

  5. 通过HTML及CSS模拟报纸排版总结

    任务目的 深入掌握CSS中的字体.背景.颜色等属性的设置 进一步练习CSS布局 任务描述 参考 PDS设计稿(点击下载),实现页面开发,要求实现效果与 样例(点击查看) 基本一致 页面中的各字体大小, ...

  6. JZOJ 5326. LCA 的统计 (Standard IO)

    5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output S ...

  7. var, let ,const区别

    ES6中加入了let,const字符,先说说新的区别: 作用域:let 声明的变量只在它所在的代码块内有效,而且不存在变量提升,即变量可以在声明之前使用,值为undefined.let未声明变量前会报 ...

  8. 怎么查看linux文件夹下有多少个文件(mac同样)

    查看目录下有多少个文件及文件夹,在终端输入 ls | wc -w 查看目录下有多少个文件,在终端输入 ls | wc -c 查看文件夹下有多少个文件,多少个子目录,在终端输入 ls -l |wc -l ...

  9. JS数组遍历方法集合

    就让我们在逆战中成长吧,加油武汉,加油自己 1.for循环 使用零时变量将长度存起来,当数组较大时优化效果才会比较明显. var ar1=[2,4,6,8] for(var i=0;i<ar1. ...

  10. 配置XNA以适用VS2017进行开发

    Win10似乎已不再支持使用XNA进行游戏开发,安装XNA Game Studio经常会出现错误,显示不兼容,即使安装VS2010也不行.下面给出方法,可以使用VS2017配合XNA进行游戏开发. 1 ...