Spring Cloud Alibaba Nacos(服务注册及配置中心)

一、Nacos简介

Nacos是由阿里巴巴提供的一款专门构建云本地应用的动态服务发现、配置中心和服务管理平台

在Spring Cloud Alibaba中常使用Nacos作为注册中心和分布式配置中心。

 (1)服务发现和管理

动态服务发现是以服务为中心(例如微服务或云原生)体系结构的关键。Nacos支持基于DNS和基于RPC(Dubbo,gRPC)的服务发现,并提供实时服务运行状况检查,以防止将路由请求发送到不正常的主机或服务实例。使用Nacos,您还可以轻松地为您的服务安装断路器。  

(2) 动态配置服务

 动态配置服务使您可以集中,外部化和动态地管理所有环境中的配置。动态配置使您不必在配置更新时重新部署应用程序和服务。您可以实施无状态服务并轻松实现按需扩展。

 (3)动态DNS服务

 通过支持加权路由,动态DNS(域名系统,Domain Name System)服务可帮助您在数据中心内的生产环境中实现中间层负载均衡,更灵活的路由,流量控制和DNS解析服务。动态DNS服务还使您更容易实现基于DNS的服务发现,从而最大程度地降低了耦合到特定于供应商的服务发现API的风险。

二、 基于Docker安装Nacos

(1)拉取Nacos镜像

 docker pull nacos/nacos-server

 (2)创建目录及配置文件

创建两个目录,分别是初始化目录和日志目录。

mkdir -p /root/nacos/init.d /root/nacos/logs

 新建配置文件

vim /root/nacos/init.d/custom.properties 

 在文件中添加以下内容:

management.endpoints.web.exposure.include=* 

 (3)创建并启动容器

 http端口8848,gRPC端口9848,两个端口都需要开启(2.x版本以后Nacos,1.x版本只需要开启8848端口);Mode=standalone 单机版;--restart always 自动启动容器;Nacos默认使用内置Derby(Apache的一款小巧数据库)数据库。

 docker run -d -p 8848:8848 -p 9848:9848 -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server

 (4)访问Nacos可视化管理界面

启动过程需要花费一定时间,需要稍等一会才能访问。容器启动成功后,访问: http://ip:8848/nacos 。默认的用户名和密码都是nacos

三、使用Nacos作为注册中心

 (1)父级依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <!-- spring cloud 总体依赖版本管理 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <!-- spring cloud alibaba 总体依赖版本管理 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

(2)专用依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 使用nacos作为注册中心时,所有的微服务工程必须导入的依赖资源 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

(3)编辑配置文件

server:
  port: 8002
spring:
  application:
    name: nacos-cloud-appservice
  cloud:
    nacos: # 配置nacos相关信息
      # server-addr: 192.168.8.128:8848 # 配置nacos服务器地址。默认localhost:8848
      discovery: # 配置nacos注册中心相关信息。
        server-addr: 192.168.8.128:8848 # 配置nacos注册中心地址。默认${spring.cloud.nacos.server-addr}
        service: nacos-cloud-appservice # 注册到nacos中的spring cloud restful服务名。默认${spring.application.name}
        group: bjsxt # 服务的分组。默认值DEFAULT_GROUP。基于Nacos注册的服务会划分分组。同组服务可发现。

(4)在启动类上添加注解

/**
 * EnableDiscoveryClient - 可选注解。开启发现客户端。类似@EnableEurekaClient
 */
@SpringBootApplication
@EnableDiscoveryClient
public class CloudRestFULApplicationServiceApp {
    public static void main(String[] args) {
        SpringApplication.run(CloudRestFULApplicationServiceApp.class, args);
    }
}

(5)正常使用openFeign进行远程调用 

 四、使用Nacos作为Dubbo的注册中心

 (1)导入依赖

<dependencies>
    <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>
    <!-- dubbo技术在spring cloud alibaba技术栈中的必要依赖
         且需要另外一个必要依赖。commons-lang3
     -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.spring</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>1.0.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
        <groupId>com.bjsxt</groupId>
        <artifactId>sj120_nacos_dubbo_api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

(2)编写配置文件

server:
  port: 9000
spring:
  application:
    name: nacos-dubbo-provider
  cloud:
    nacos:
      discovery: # 注册到nacos中的是spring cloud restful服务。 不是dubbo provider服务
        server-addr: 192.168.8.128:8848
        group: bjsxt
dubbo:
  application:
    id: nacos-dubbo-provider
    name: nacos-dubbo-provider # dubbo服务的名称
  registry:
    address: nacos://192.168.8.128:8848 # 注册中心地址
    group: bjsxt # 注册的dubbo provider服务分组。默认DEFAULT_GROUP。同组的服务可发现。
  protocol:
    name: dubbo # 协议名称。默认dubbo
    port: -1 # 协议端口。默认20880。定义成-1,可以实现自动递增。从20880开始。自然数递增。

(3)在控制器上添加注解

@SpringBootApplication
@EnableDubbo
public class NacosDubboProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosDubboProviderApp.class, args);
    }
}

(4)正常使用Dubbo方式进行远程调用

 五、使用Nacos作为配置中心

(1)访问Nacos可视化管理界面,编辑配置文件信息

(2)导入依赖

<dependencies>
    <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>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>

(3)编辑配置文件bootstrap.yml

server:
  port: 9090
spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.8.128:8848
        group: bjsxt
      config:
        name: suibian # 配置文件的 data id。 默认是${spring.application.name}
        group: jqk # 配置文件所属分组。默认是DEFAULT_GROUP
        server-addr: 192.168.8.128:8848 # config配置中心地址。默认是${spring.cloud.nacos.server-addr}
        file-extension: yaml # 文件类型。默认是properties

 (5)编辑注入配置文件中常量的类,注意加@RefreshScope注解

@RestController
@RefreshScope
public class ConfigController {
    @Value("${stu.name}")
    private String name;

    @GetMapping("/showInfo")
    public String showInfo(){
        System.out.println("姓名 : " + name);
        return "姓名 : " + name;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值