【筆記】 springCloud--Alibaba--服務註冊和服務發現

Genuine楊不易發表於2020-08-16

原始碼地址: https://gitee.com/yangbuyi/bky_yby

接著上一次的nacos初步講解和安裝

任意門:https://www.cnblogs.com/Yangbuyi/p/13479767.html

如果啟動失敗的話 上一篇也是講解過的.

本文章開始服務註冊和發現

工程準備

建立一個父模組將裡面的src刪除即可留下.idea和pox.xml檔案

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.3.RELEASE</version>
    </parent>

    <!-- 全域性版本控制 -->
    <properties>
        <springCloud.version>Hoxton.SR7</springCloud.version>
        <springCloud-alibaba.version>2.1.1.RELEASE</springCloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springCloud 版本控制 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${springCloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 阿里 版本庫 依賴 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${springCloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>

建立consumer工程模組和provide工程模組(呼叫者、服務者)

1.在consumer模組當中新增依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- 服務發現 nacos  -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2. 手寫啟動類

/**
 * @description: 楊不易網站:www.yangbuyi.top
 * @program: springcloudalibabaparent
 * @ClassName: AppConsumer
 * @create: 2020-08-16 20:57
 * @author: yangbuyi
 * @since: JDK1.8
 * @AppConsumer:
 **/
@SpringBootApplication
@Slf4j
// nacos 服務發現 客戶端
@EnableDiscoveryClient

public class AppConsumer {

	  public static void main(String[] args) throws UnknownHostException {
			ConfigurableApplicationContext application = SpringApplication.run(AppConsumer.class, args);
			Environment env = application.getEnvironment();
			String ip = InetAddress.getLocalHost().getHostAddress();
			String port = env.getProperty("server.port");
			String path = env.getProperty("server.servlet.context-path");
			String hj = env.getProperty("spring.profiles.active");
			log.info("\n----------------------------------------------------------\n\t" +
					"Application yangbuyiCloud is running! Access URLs:\n\t" +
					"Local: \t\thttp://localhost:" + port + path + "/\n\t" +
					"當前配置環境: \t\t當前環境為:" + hj + "/\n\t" +
					"----------------------------------------------------------");
	  }

	  /**
	   * @Description: 楊不易個人網址:http://yangbuyi.top
	   * 功能描述:  @LoadBalanced 讓rest 擁有負載均衡的能力
	   * @Param: @RestTemplate http請求服務
	   * @return:
	   * @Author: TeouBle
	   * @Date: 2020/8/16 20:58
	   */
	  @Bean
	  @LoadBalanced
	  public RestTemplate restTemplate() {
			return new RestTemplate();
	  }


}

3.在啟動類上新增註解

nacos 服務發現 客戶端 @EnableDiscoveryClient

4.在配置檔案新增新增配置

server:
  port: 5000
  servlet:
    context-path: /cloud-user
spring:
  application:
    name: consumer-user
  cloud:
    nacos:
      discovery:
        #nacos服務的地址 不要加http
        # 可以寫一個地址 叢集會自動獲取服務 但是為了安全起見還是全部寫上
        #         server-addr: 127.0.0.1:8849,127.0.0.1:8850,127.0.0.1:8851
        # 使用nginx反向代理
        server-addr: 192.168.43.204:80
        register-enabled: true
    #   server-addr: localhost:8850


name: 預設環境

上面看不懂的話也可直接寫這樣子的

server:
  port: 5000
  servlet:
    context-path: /cloud-user
spring:
  application:
    name: user-client
# 將當前工程註冊到nacos上面
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos服務的地址 不要加http

5.啟動工程後, 在nacos當中查詢服務列表

nacos服務沒有下載的去觀看上一章節的nacos服務安裝和錯誤解決

https://www.cnblogs.com/Yangbuyi/p/13479767.html

6.使用相同方式 把provide服務註冊到nacos上

建立啟動類

package top.yangbuyi;

/**
 * @description: 楊不易網站:www.yangbuyi.top
 * @program: springcloudalibabaparent
 * @ClassName: top.yangbuyi.AppConsumer
 * @create: 2020-08-16 20:57
 * @author: yangbuyi
 * @since: JDK1.8
 * @AppConsumer:
 **/
@SpringBootApplication
@Slf4j
// nacos 服務發現 客戶端
@EnableDiscoveryClient

public class AppProvide  {

	  public static void main(String[] args) throws UnknownHostException {
			ConfigurableApplicationContext application = SpringApplication.run(AppProvide.class, args);
			Environment env = application.getEnvironment();
			String ip = InetAddress.getLocalHost().getHostAddress();
			String port = env.getProperty("server.port");
			String path = env.getProperty("server.servlet.context-path");
			String hj = env.getProperty("spring.profiles.active");
			log.info("\n----------------------------------------------------------\n\t" +
					"Application yangbuyiCloud is running! Access URLs:\n\t" +
					"Local: \t\thttp://localhost:" + port + path + "/\n\t" +
					"當前配置環境: \t\t當前環境為:" + hj + "/\n\t" +
					"----------------------------------------------------------");
	  }

	  /**
	   * @Description: 楊不易個人網址:http://yangbuyi.top
	   * 功能描述:  @LoadBalanced 讓rest 擁有負載均衡的能力
	   * @Param: @RestTemplate http請求服務
	   * @return:
	   * @Author: TeouBle
	   * @Date: 2020/8/16 20:58
	   */
	  @Bean
	  @LoadBalanced
	  public RestTemplate restTemplate() {
			return new RestTemplate();
	  }


}



建立yml配置

server:
  port: 7000
  servlet:
    context-path: /cloud-yby
spring:
  application:
    name: provide-goods # 服務名稱  服務ID
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8085 # nacos服務地址 單個服務

name: 預設環境

7. 啟動兩個服務 consumer和 provide 去nacos檢視是否有

8. 在consumer工程中通過服務發現呼叫provide 工程

自己對著圖片的打一遍 別偷懶

到此即可通過 consumer訪問provide工程當中的方法啦

9.測試

nacos有問題請評論區聯絡我

完結 下一章節 nacos叢集

相關文章