CloudAlibaba-Nacos

Spring Cloud Alibaba

关系如下:
SpringBoot–》SpringCloud–》SpringCloudAlibaba

Spring Cloud的又一套解决方案。在此之前常用Spring Cloud Netflix(部分组件已停止维护)。

github官网查看和SpringBoot、SpringCloud 之间的版本关系

对比Netflix:netflx很多组件需要自己搭建服务端。而alibab组件都是直接下载使用,客户端连接即可。且提供了直观的图形化界面。

整合:使用idea的Spring Initializr快速创建项目。

  1. 引入SpringBoot父依赖
  2. 引入SpringCloud依赖
  3. 引入SpringCloudAlibaba依赖
<!-- SpringBoot的父依赖-->
<parent>     <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0RELEASE</version>
<relativePath/>
</parent>
<!-- 版本控制,子项目不作为资源继承。需要引入但不需要版本号-->
<dependencyManagement>
    <dependencies>
        <!-- Spring Cloud Hoxton -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- Spring Cloud Alibaba -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Nacos

nacos下载解压并启动。访问cmd窗口中的哪个牛逼的地址8848.nacos用户名密码默认。

链接:https://pan.baidu.com/s/12-2rT3Mafvcd-NWACQXcug
提取码:sjrb

Nacos-Discovery

服务注册/发现。服务治理

  1. 服务注册

  2. 启动Nacos Server

解压目录下的bin下的startup.cmd或者sh为linux

  1. 创建子模块并导入nacos-discovery相关依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  1. 配置nacos地址
server:
  port: 8081
# 应用名称
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

启动类中使用 注解的 属性确定是否注册到nacos中

  1. 启动项目进行测试即可。

注意:Nacos配置了nacos地址后是默认注册进入注册中心的
在这里插入图片描述

  1. 服务发现

同上操作即可。

不同点:

在引导类中不让服务发现注册到nacos

@SpringBootApplication
@EnableDiscoveryClient(autoRegister = false)
public class NacosCousumerApplication {

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

    @Bean//注入RestTemplate模板用于发送请求
    public RestTemplate restTemplate(){
        return new RestTemplate();}
}

Controller中调用provider服务

@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    @Value("${spring.application.name}")
    private String name;
    @Value("${server.port}")
    private String port;

    @Autowired
    private RestTemplate restTemplate;
    @Autowired//用于发现服务实例。其中包含服务的具体信息。
    private DiscoveryClient discoveryClient;

    @GetMapping("/hello")
    public String hello() {
        return name+"::" +port;
    }

    @GetMapping("/hello1")
    public String hello1() {
        List<ServiceInstance> instances = discoveryClient.getInstances("nacos-provider");
        for (ServiceInstance instance : instances) {
            String url=instance.getUri() + "/provider/hello";
            String forObject = restTemplate.getForObject(url, String.class);
            System.out.println(forObject);
        }
        return name+"::" +port;
    }
}

启动nacos、nacos-provider服务、consumer服务。访问localhost:8082/consumer/hello1即可。发现控制台打印了nacos-provider服务的响应数据。

至此基本的服务注册、发现、调用已实现。

Nacos-Config

Alibaba的配置管理中心。之前用Netflix的config,config则需要消息总线才可以实现动态刷新。Alibaba的配置中心可以直接实现动态刷新配置。如果是实现配置Bean的动态刷新则需要在创建Bean的方法和类上添加@RefreshScope实现动态刷新。

可以将mysql数据库连接信息放到nacos配置中心去。更安全

​ -1. 启动nacos。windows下执行nacos路径下的bin下的startup.cmd。linux为sh

  1. nacos中创建对应的配置文件。指定配置文件分组以及文件格式等信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNUjibAM-1631763185811)(C:\Users\12955\AppData\Roaming\Typora\typora-user-images\1631698644946.png)]

  1. 创建配置测试模块并导入nacos-config相关依赖
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
  1. 创建bootstrap.yaml配置文件。配置nacos地址以及读取配置文件的相关信息。(bootstrap文件加载优先级高于application)
spring:
  application:
    name: configs
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos地址
      config:
        prefix: myConfig # 指定配置文件名称
        file-extension: yaml # 指定配置文件后缀格式
        group: yh #指定配置文件的分组。如果为默认则不用指定指定会报错
server:
  port: 8091

注意:当不配置文件名称以及文件后缀时候,默认为获取服务名称为名的properties配置文件。注意配置到application配置文件中会导致无法被加载的。

  1. 使用配置类绑定配置文件中的配置。
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private String address;
    private int age;
//省略get、set等方法
}
  1. 添加Controller控制器类
//使用三种获取配置文件内容的方式分别读取不同的配置
@RestController
@RequestMapping("/config")
class ConfigController {
    @Autowired
    private Environment environment;
    @Value("${anmail.name}")
    private String name;
    @Autowired
    private Person person;
    @GetMapping("/user")
    public String user() {
        String user = environment.getProperty("user");
        return "User信息:" + user;
    }
    @GetMapping("/name")
    public String name() {
        return "Anmail信息:" + name;
    }
    @GetMapping("/person")
    public String config() {
        return "Person信息:" + person.getName()+"::"+person.getAge()+"::"+person.getAddress();
    }
}
  1. 访问三个路径

    在这里插入图片描述

至此基本的配置中心使用完结撒花。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值