美文网首页
Nacos - 服务发现(2)

Nacos - 服务发现(2)

作者: __元昊__ | 来源:发表于2020-01-02 16:25 被阅读0次

    2.2 搭建Nacos服务端

    略...

    2.3 创建父工程

    为了规范依赖的版本,这里创建父工程,指定依赖的版本。
    父工程pom.xml如下:

    <?xml version="1.0" encoding="UTF‐8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven‐4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itheima.nacos</groupId>
    <artifactId>nacos‐discovery</artifactId>
    <version>1.0‐SNAPSHOT</version>
    <packaging>pom</packaging>
    <properties>
    <project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    </properties>
    <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>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring‐cloud‐dependencies</artifactId>
    <version>Greenwich.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐dependencies</artifactId>
    <version>2.1.3.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐maven‐plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    </project>
    

    2.4 服务生产者

    以下步骤演示了如何将一个服务生产者注册到 Nacos。
    1、pom.xml的配置。
    包括Spring Cloud Feign组件、Spring Cloud Alibaba Nacos Discovery组件以及Spring boot web相关组件依赖。

    <parent>
    <artifactId>nacos‐discovery</artifactId>
    <groupId>com.itheima.nacos</groupId>
    <version>1.0‐SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>quickstart‐provider</artifactId>
    <dependencies>
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring‐cloud‐starter‐openfeign</artifactId>
    </dependency>
    </dependencies>
    

    2、application.yml配置。一些关于 Nacos 基本的配置也必须在application.yml(也可以是application.properties)配置,如下所示: application.yml

    server:
      port: 56010 #启动端口
    spring:
      application:
        name: quickstart‐provider
      cloud:
        nacos:
          discovery:
            server‐addr: 127.0.0.1:8848
    logging:
      level:
        root: info
        org.springframework: info
    

    Note: spring.cloud.nacos.discovery.server-addr 指定了Nacos Server的网络地址和端口号。

    3、Provider(生产者)服务实现

    @RestController
    public class ProviderController {
    private static final Logger LOG = LoggerFactory.getLogger(ProviderController.class);
    @GetMapping("/service")
    public String service(){
    LOG.info("provider invoke");
    return "provider invoke";
    }
    }
    

    4、启动Provider(生产者)

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

    Note: @EnableDiscoveryClient 在spring cloud项目中表明此项目是一个注册发现客户端,这里注册服务发现使用的是Nacos
    Note: @EnableFeignClients 开启FeignClient

    2.5 服务消费者

    以下步骤演示了如何结合Nacos对spring cloud rest接口进行消费。
    1、pom.xml的配置。

    <parent>
    <artifactId>nacos‐discovery</artifactId>
    <groupId>com.itheima.nacos</groupId>
    <version>1.0‐SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>quickstart‐consumer</artifactId>
    <dependencies>
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring‐cloud‐starter‐openfeign</artifactId>
    </dependency>
    </dependencies>
    

    2、application.yml配置

    server:
      port: 56020 #启动端口 命令行注入
    
    spring:
      application:
        name: quickstart‐consumer
      cloud:
        nacos:
          discovery:
            server‐addr: 127.0.0.1:8848
    

    3、Provider(生产者)远程代理定义

    @FeignClient(name = "quickstart‐provider")
    public interface ProviderClient {
    @GetMapping("/service")
    String service();
    }
    

    4、Consumer(消费者)服务实现

    @RestController
    public class ConsumerController {
    private static final Logger LOG = LoggerFactory.getLogger(ConsumerController.class);
    @Autowired
    private ProviderClient providerClient;
    @GetMapping("/service")
    public String service(){
    LOG.info("consumer invoke");
    String providerResult = providerClient.service();
    return "consumer invoke" + "|" + providerResult;
    }
    }
    

    5、启动Consumer(消费者)

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

    访问地址:http://127.0.0.1:56020/service

    QQ截图20200102162005.png
    浏览器访问 http://127.0.0.1:8848/nacos ,打开nacos控制台,并点击菜单服务管理->服务列表,可展示出刚刚注册的两个服务:
    QQ截图20200102162051.png

    2.6 测试多实例负载均衡

    修改quickstart-provider工程的application.yaml,实现port动态传入:

    server:
      port: ${port:56010} #启动端口
    

    设置启动参数:

    QQ截图20200102162239.png
    启动quickstart-provider两个实例。
    QQ截图20200102162349.png
    请求http://127.0.0.1:56020/service测试负载均衡。
    跟踪quickstart-provider两个实例的控制台的日志输出,默认负载均衡策略是轮询。

    相关文章

      网友评论

          本文标题:Nacos - 服务发现(2)

          本文链接:https://www.haomeiwen.com/subject/lhjooctx.html