一、使用Nacos作为注册中心

1. 使用Nacos作为Spring Cloud注册中心

​ Nacos支持HTTP协议访问。在导入Nacos依赖后内置Ribbon。和Eureka相同,都支持同名应用程序的负载均衡。

​ 所以在使用Nacos作为注册中心的时候除了和Eureka依赖及配置文件不一样,其他流程都是一样的。

1.1 创建父工程

​ 创建父工程 alibaba_parent

1.1.1 POM依赖
<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>
1.2 创建application service工程

​ 创建工程 nacos_cloud_appservice

1.2.1 POM依赖
<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>
1.2.2 编辑配置文件
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注册的服务会划分分组。同组服务可发现。
1.2.3 编辑控制器
@RestController
public class AppServiceController {
    @GetMapping("/test")
    public String test(String name, HttpServletRequest request){
        System.out.println("name = " + name);
        System.out.println("客户端ip:" + request.getRemoteAddr());
        return "您好:" + name;
    }
}
1.2.4 编辑启动类型
/**
 * EnableDiscoveryClient - 可选注解。开启发现客户端。类似@EnableEurekaClient
 */
@SpringBootApplication
@EnableDiscoveryClient
public class CloudRestFULApplicationServiceApp {
    public static void main(String[] args) {
        SpringApplication.run(CloudRestFULApplicationServiceApp.class, args);
    }
}
1.2.5 启动

​ 启动项目中可以在Nacos可视化控制台中发现注册的信息。
在这里插入图片描述

1.3 创建application client工程
1.3.1 POM依赖
<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>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>
1.3.2 编辑配置文件
server:
  port: 8001
spring:
  application:
    name: nacos-cloud-appclient
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.8.128
        group: bjsxt
1.3.3 编辑OpenFeign接口
@FeignClient("nacos-cloud-appservice")
public interface NacosRestFULAppServiceFeign {
    @GetMapping("/test")
    String test(@RequestParam("name") String name);
}
1.3.4 编辑控制器
@RestController
public class ResultFULAppClientController {
    @Autowired
    private NacosRestFULAppServiceFeign appServiceFeign;

    @GetMapping("/test")
    public String test(String name, HttpServletRequest request){
        System.out.println("app client name = " + name);
        System.out.println("客户端ip:" + request.getRemoteAddr());
        System.out.println("开始调用远程服务");
        String result = appServiceFeign.test(name);
        System.out.println("远程服务返回:" + result);
        return result;
    }
}
1.3.5 编辑启动类型
@SpringBootApplication
@EnableFeignClients
public class NacosCloudRestFULApplicationClientApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosCloudRestFULApplicationClientApp.class, args);
    }
}
1.3.6 启动

​ 启动项目中可以在Nacos可视化控制台中发现注册的信息。

在这里插入图片描述

2. 使用Nacos作为Dubbo的注册中心

2.1 创建API服务接口工程

​ 创建工程 alibaba_dubbo_api

2.1.1 编辑服务接口
public interface TestAPI {
    String sayHello(String name);
}
2.2 创建provider服务提供者工程

​ 创建工程alibaba_dubbo_provider

2.2.1 POM依赖
<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.2.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开始。自然数递增。
2.2.3 编辑服务实现
@DubboService(group = "test", version = "1.0")
public class TestAPIImpl implements TestAPI {
    @Override
    public String sayHello(String name) {
        System.out.println("参数name = " + name);

        return "您好:" + name;
    }
}
2.2.4 编辑控制器
@RestController
public class DubboProviderController {
    @Autowired
    private TestAPI testAPI;

    @GetMapping("/sayHello")
    public String sayHello(String name){
        System.out.println("provider controller name = " + name);
        return testAPI.sayHello(name);
    }
}
2.2.5 编辑启动类型
@SpringBootApplication
@EnableDubbo
public class NacosDubboProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosDubboProviderApp.class, args);
    }
}
2.2.6 启动

​ 启动项目中可以在Nacos可视化控制台中发现注册的信息。

在这里插入图片描述

2.3 创建consumer服务消费者工程

​ 创建工程 alibaba_dubbo_consumer

2.3.1 POM依赖
<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.3.2 编辑配置文件
server:
  port: 9001
spring:
  application:
    name: nacos-dubbo-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.8.128:8848
        group: bjsxt
dubbo:
  application:
    id: nacos-dubbo-consumer
    name: nacos-dubbo-consumer
  registry:
    address: nacos://192.168.8.128:8848
    group: bjsxt
  protocol: # 建议在所有的spring cloud alibaba dubbo中。都配置。
    name: dubbo
    port: -1
  cloud: # 可选配置
    subscribed-services: '*' # 发现哪些命名的dubbo provider。默认所有 '*'。
2.3.3 编辑控制器
@RestController
public class DubboConsumerController {
    @DubboReference(group = "test", version = "1.0")
    private TestAPI testAPI;

    @GetMapping("/consumer")
    public String sayHello(String name){
        System.out.println("consumer name = " + name);
        String result = testAPI.sayHello(name);
        System.out.println("远程返回:" + result);
        return result;
    }
}
2.3.4 编辑启动类型
@SpringBootApplication
@EnableDubbo
public class NacosDubboConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosDubboConsumerApp.class, args);
    }
}
2.3.5 启动

​ 启动项目中可以在Nacos可视化控制台中发现注册的信息。

在这里插入图片描述

二、使用Nacos作为配置中心

1. 在nacos中新建配置文件

1.1 访问Nacos可视化管理界面

​ 在配置列表中点击“+”

在这里插入图片描述

1.2 编辑配置文件信息

​ Data ID:名称任意。此名称作为配置文件名称(有可以叫前缀(prefix))

​ Group: 在没有自己建立组时默认为DEFAUL_GROUP。此值不需要修改

​ 配置格式:选择properties或yml。此配置影响到客户端加载配置文件时配置。

​ 配置内容:根据所选配置格式,按照指定格式填写内容。

在这里插入图片描述

1.3 点击发布按钮后弹出配置文件信息

在这里插入图片描述

1.4 在配置列表中可查看

在这里插入图片描述

2. 新建项目使用配置中心中的配置

2.1 新建工程 alibaba_nacos_config

​ 新建工程 alibaba_nacos_config

2.2 POM依赖
<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>
2.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
2.4 编辑控制器
@RestController
@RefreshScope
public class ConfigController {
    @Value("${stu.name}")
    private String name;

    @GetMapping("/showInfo")
    public String showInfo(){
        System.out.println("姓名 : " + name);
        return "姓名 : " + name;
    }
}
2.5 编辑启动类型
@SpringBootApplication
public class NacosConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class, args);
    }
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐