zoukankan      html  css  js  c++  java
  • SC Nacos 服务注册和发现202107

    1、Nacos本地安装和启动

    git clone https://github.com/alibaba/nacos.git

    inux/Unix/Mac系统
    启动命令(standalone代表着单机模式运行,非集群模式):

     sh startup.sh -m standalone

     

     

    Windows系统

    启动命令:cmd startu.cmd

    由于在1.3.2之后默认使用的【集群方式】启动我们要手动改回单机模式,如果你非要用高版本,需要修改启动命令,改为【单机模式】右键点击startup.cmd选择编辑

    Nacos启动失败问题

    https://blog.csdn.net/qq_41965041/article/details/113714859

    或者双击startup.cmd运行文件

    应用启动之后,访问 http://127.0.0.1:8848/nacos/,Nacos0.8 版本已经支持简单登录功能,默认用户名/密码为: nacos/nacos。

     

    2、集成 Spring Cloud 服务发现

    1)、服务提供者 provider2004

           i)、 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sc</groupId>
    <artifactId>provider2004</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>provider2004</name>
    <description>Demo project for Spring Boot</description>

      <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <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>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
    <exclusions>
    <exclusion>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    </dependencies>

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${spring-cloud-alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>

    </project>

      ii)、 application.properties 注册到 Nacos

        # 应用名称
        spring.application.name=provider2004
        # 应用服务 WEB 访问端口
        server.port=2004
        # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
        # Nacos认证信息
        spring.cloud.nacos.discovery.username=nacos
        spring.cloud.nacos.discovery.password=nacos
        # Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
        spring.cloud.nacos.discovery.server-addr=http://127.0.0.1:8848
        # 注册到 nacos 的指定 namespace,默认为 public
        spring.cloud.nacos.discovery.namespace=public

     iii)、 Provider2004Application 启动类

        @EnableDiscoveryClient
        @RestController
        @SpringBootApplication
        public class Provider2004Application {

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

        @RequestMapping(value = "/hello/{string}",method = RequestMethod.GET)
        public String echo(@PathVariable String string){
          return " from provider2004 Hello "+string;
        }
    }

     

    2)、服务消费者-ribbon  consumer2005

      i)、 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.sc</groupId>
        <artifactId>consumer2005</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>consumer2005</name>
        <description>Demo project for Spring Boot</description>

      <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
      </properties>

      <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>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
          <dependency>
          <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
          <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    <exclusions>
    <exclusion>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    </dependencies>

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${spring-cloud-alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>

    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.7.RELEASE</version>
    <configuration>
    <mainClass>com.sc.consumer2005.Consumer2005Application</mainClass>
    </configuration>
    <executions>
    <execution>
    <id>repackage</id>
    <goals>
    <goal>repackage</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>

    </project>

       ii)、 application.properties 订阅到 Nacos

        spring.application.name=consumer2005
        # 应用服务 WEB 访问端口
        server.port=2005
        # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
        # Nacos认证信息
        spring.cloud.nacos.discovery.username=nacos
        spring.cloud.nacos.discovery.password=nacos
        # Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
        spring.cloud.nacos.discovery.server-addr=http://127.0.0.1:8848
        # 注册到 nacos 的指定 namespace,默认为 public
        spring.cloud.nacos.discovery.namespace=public

          iii)、启动类,调用提供者

        @EnableDiscoveryClient
        @SpringBootApplication
        public class Consumer2005Application {

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

        @LoadBalanced
        @Bean
        public RestTemplate restTemplate(){
          return new RestTemplate();
        }
      }

      iiii)、RestTemplate调服

      @RestController
      public class TestController {

        @Autowired
        private RestTemplate restTemplate;

        @RequestMapping(value = "/hello/{str}",method = RequestMethod.GET)
          public String echo(@PathVariable String str){
          return restTemplate.getForObject("http://provider2004/hello/"+str,String.class);
        }
      }

        注:参考如下服务名

     --------------------------------------------------------------------------------------------------------------------------------------------

    3)、服务消费者-feign  consumer2006

           sentinel+feign降级处理实例

      i)、 pom.xml

    <modelVersion>4.0.0</modelVersion>
      <groupId>com.sc</groupId>
      <artifactId>consumber2006</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>consumber2006</name>
      <description>Demo project for Spring Boot</description>

      <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
      </properties>

      <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-sentinel</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
          <exclusions>
            <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>

      <dependencyManagement>
        <dependencies>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-dependencies</artifactId>
          <version>${spring-cloud.version}</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-dependencies</artifactId>
          <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        </dependencies>
      </dependencyManagement>

       ii)、 application.properties 订阅到 Nacos

        # 应用名称
        spring.application.name=consumber2006
        # 应用服务 WEB 访问端口
         server.port=2006
        # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
          # Nacos认证信息
        spring.cloud.nacos.discovery.username=nacos
        spring.cloud.nacos.discovery.password=nacos
        # Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
        spring.cloud.nacos.discovery.server-addr=http://127.0.0.1:8848
        # 注册到 nacos 的指定 namespace,默认为 public
        spring.cloud.nacos.discovery.namespace=public

        #启用sentinel
        feign.sentinel.enabled=true
        #哨兵
        spring.cloud.sentinel.transport.dashboard=localhost:2008

          iii)、启动类Consumber2006Application 

           

        @EnableDiscoveryClient
        @EnableFeignClients
        @SpringBootApplication
        public class Consumber2006Application {

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

        }

             iiii)、interfaceFeign   TestFeignClient

        @Primary
        @FeignClient(name="provider2004",fallback =TestFeignClientFallback.class)
        public interface TestFeignClient {

        @RequestMapping(value = "/hello/{string}",method = RequestMethod.GET)
          public String echo(@PathVariable(value="string") String string);
        }

      

    注:参考如下服务名

    iiiii)、Controller    TestFeignClientFallback 

        @Component
        public class TestFeignClientFallback implements TestFeignClient{
        @Override
          public String echo(String string) {
          return " from provider2004 error ";
          }
        }

    iiiiii)、Controller      feignController 

      @RestController
      public class feignController {

        @Autowired
        private TestFeignClient testFeignClient;

        @RequestMapping(value = "/hello/{str}",method = RequestMethod.GET)
        public String echo(@PathVariable String str){
          return testFeignClient.echo(str);
        }
      }

    ...........................................

      注:sentinel安装

       i)、下载:https://github.com/alibaba/Sentinel/releases/download/1.8.2/sentinel-dashboard-1.8.2.jar

       ii)、启动  端口:2008   ,默认用户密码 sentinel/sentinel

           java -Dcsp.sentinel.api.port=2009   -Dserver.port=2008 -Dcsp.sentinel.dashboard.server=localhost:2008  -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar

      

    Spring Cloud 服务注册和发现组件

    spring cloud alibaba sentinel+feign降级处理实例

                                                                                                                                                                                      

  • 相关阅读:
    C程序课题设计——基于图形界面开发的学生信息管理系统
    Linux系统的介绍(以下以Manjaro最新版为例子)
    linux环境下PS1变量配置
    C指针课题实验报告——职工工资管理系统
    vim系统配置文件,配置专属自己的环境
    git常用操作命令
    vim设置成类source insight功能,实现跳转和查找
    ext2文件系统学习札记
    【转载】解析Linux中的VFS文件系统机制
    linux中链表_队列等的基本原理以及操作以及堆栈
  • 原文地址:https://www.cnblogs.com/smallfa/p/15078361.html
Copyright © 2011-2022 走看看