天天看點

【微服務~Nacos】Nacos服務提供者和服務消費者

【微服務~Nacos】Nacos服務提供者和服務消費者

🔎這裡是【微服務~Nacos】,關注我學習雲原生不迷路

👀專欄介紹

【微服務~Nacos】 目前主要更新微服務,一起學習一起進步。

👀本期介紹

本期主要介紹微服務~Nacos

文章目錄

​​搭建父項目​​

​​服務提供者Provider​​

​​搭建服務​​

​​建立服務​​

​​檢視服務​​

​​注冊異常​​

​​服務消費者Consumer​​

​​搭建服務​​

​​建立服務​​

​​查詢服務​​

搭建父項目

  • 項目名:nacos-parent-2.1
  • 添加坐标
<parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-build</artifactId>
        <version>2.3.5.RELEASE</version>
    </parent>

    <properties>
        <spring.cloud.version>Hoxton.SR12</spring.cloud.version>
        <spring.cloud.alibaba.version>2.2.7-SNAPSHOT</spring.cloud.alibaba.version>
        <mybatis.plus.starter.version>3.4.0</mybatis.plus.starter.version>
        <durid.starter.version>1.1.10</durid.starter.version>
        <swagger.version>2.7.0</swagger.version>
        <jwt.jjwt.version>0.9.0</jwt.jjwt.version>
        <jwt.joda.version>2.9.7</jwt.joda.version>
    </properties>


    <dependencyManagement>
        <dependencies>
            <!-- Spring 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>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <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>

            <!-- mybatis-plus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis.plus.starter.version}</version>
            </dependency>

            <!-- Druid連接配接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${durid.starter.version}</version>
            </dependency>

            <!--swagger2-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>      
  • 項目目錄結構
【微服務~Nacos】Nacos服務提供者和服務消費者

服務提供者Provider

搭建服務

  • 建立項目:nacos-provider-2.1
  • 添加依賴:
<dependencies>
        <!-- web 啟動類 -->
        <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>      
  • 建立yml檔案
#server.port=8070
#spring.application.name=service-provider
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#端口号
server:
  port: 8070

spring:
  application:
    name: service-provider          #服務名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #nacos服務位址      

建立服務

  • 啟動類
【微服務~Nacos】Nacos服務提供者和服務消費者
package com.czxy.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


@SpringBootApplication
@EnableDiscoveryClient      //服務發現
public class TestNacosProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestNacosProviderApplication.class, args );
    }
}      
  • 處理類controller
【微服務~Nacos】Nacos服務提供者和服務消費者
package com.czxy.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;


@RestController
public class EchoController {

    @Resource
    private HttpServletRequest request;

    @GetMapping("/echo/{string}")
    public String echo(@PathVariable String string) {
        int serverPort = request.getServerPort();
        return "Hello Nacos Discovery " + string + ":" + serverPort;
    }
}      

檢視服務

  • 通過浏覽器通路
​​http://localhost:8070/echo/abc​​
【微服務~Nacos】Nacos服務提供者和服務消費者
  • 通過Nacos控制台檢視
【微服務~Nacos】Nacos服務提供者和服務消費者

注冊異常

【微服務~Nacos】Nacos服務提供者和服務消費者

服務消費者Consumer

搭建服務

  • 項目名:nacos-consumer-2.1
  • 添加依賴
<dependencies>
        <!-- web 啟動類 -->
        <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>

        <!-- openfeign 遠端調用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>      
  • 建立配置檔案
【微服務~Nacos】Nacos服務提供者和服務消費者
#server.port=8071
#spring.application.name=service-consumer
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#端口号
server:
  port: 8071

spring:
  application:
    name: service-consumer          #服務名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #nacos服務位址      

建立服務

  • 建立啟動類
【微服務~Nacos】Nacos服務提供者和服務消費者
package com.czxy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


@SpringBootApplication
@EnableDiscoveryClient  //服務發現
public class TestNacosConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestNacosConsumerApplication.class, args );
    }
}      
  • 遠端調用配置類
【微服務~Nacos】Nacos服務提供者和服務消費者
package com.czxy.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;


@Component
public class RestTemplateConfig {
    @LoadBalanced   //負載均衡
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}      
  • 處理類
package com.czxy.nacos.controller;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;


@RestController
public class TestRestController {
    @Resource
    private RestTemplate restTemplate;

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

查詢服務

  • 通過浏覽器通路
​​http://localhost:8071/echo/abc​​
【微服務~Nacos】Nacos服務提供者和服務消費者

通過Nacos控制台檢視

繼續閱讀