快速搭建springcloud環境

前言

SpringCloud並不是一個第三方框架的名稱, 而是一整套微服務框架的統稱, 使用這套框架可以快速搭建出高可用的微服務環境, 因爲功能衆多,所以又被稱SpringCloud全家桶, 由於篇幅較長所以文章採用了目錄引導, 第二章是微服務的基礎, 第三章是功能模塊擴展, 如網關, 服務保護, 分佈式配置中心, nginx, 下面就跟着我們的文章, 一起來看吧.

一.什麼是微服務

就是把一整個後臺項目拆分成多個模塊, 每一個模塊稱作一個服務, 每個服務都可以獨立運行, 這樣做的好處是其中有一個服務掛掉後, 另外的服務不受影響, 這些服務使用接口相互通信, 減少了依賴和耦合.

二.快速開始

創建一個空的spring boot項目,做父工程,整個項目是由maven進行管理的, 依賴包就是我們開發時需要用到的第三方jar包, 也就是框架, 這裏爲什麼什麼也不選? 我說一下, 因爲我們要做的是微服務, 所以框架結構爲一個基座+多個子模塊, 我們上面建立的就是基座, 你可以把它當成一個工作空間用途是管理子模塊。

1.Eureka註冊中心

首先要新建我們SpringCloud項目的核心eureka註冊中心, 爲什麼說它是項目的核心呢, 我在簡介中說過了, 微服務就是把一整個後臺應用拆分成小的功能模塊, 那麼這些模塊之間如何進行通信呢?

沒錯就是註冊中心, 那麼我們接下來就開始搭建一個註冊中心吧!

首先在父工程中新建一個Module子項目, 也就是一個微服務模塊.

在這裏插入圖片描述

到這裏我們註冊中心模塊就建立好了, 之後我們來簡單配置一下.

在啓動類上加上@EnableEurekaServer註解

在這裏插入圖片描述

首先開啓eureka服務

之後找到配置文件

配置一下application.yml, 如果你的是application.properties, 請修改後綴爲yml, 這兩個配置文件都可以配置工程, 相比之下yml更直觀一些, 所以本教程使用yml進行配置.

之後我們進行配置

server:
  # 配置服務端口
  port: 8081
eureka:
  client:
    service-url:
      # 配置eureka服務器地址
      defaultZone: http://127.0.0.1:8081/eureka
    #是否需要將自己註冊到註冊中心(註冊中心集羣需要設置爲true)
    register-with-eureka: false
    #是否需要搜索服務信息 因爲自己是註冊中心所以爲false
    fetch-registry: false

注意縮進, 因爲yml使用縮進來區分不同字段的.

然後我們來運行項目吧!

運行啓動類

然後我們來訪問一下注冊中心吧.

http://localhost:8081

在這裏插入圖片描述

網頁可以正常運行後 我們的註冊中心就配置完畢了

2.創建微服務

光有註冊中心是沒有用的, 服務都沒有, 根本寫不了接口, 所以接下來我們就繼續在父工程中創建兩個服務.

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

同理配置service-b, 新建完成之後是這個樣子

在這裏插入圖片描述

之後我們配置服務的入口文件,在啓動類上加上註解@EnableEurekaClient

在這裏插入圖片描述

然後配置一下application.yml
首先是service-a

server:
  # 服務端口號
  port: 8082
spring:
  application:
    # 服務名稱 - 服務之間使用名稱進行通訊
    name: service-objcat-a
eureka:
  client:
    service-url:
      # 填寫註冊中心服務器地址
      defaultZone: http://localhost:8081/eureka
    # 是否需要將自己註冊到註冊中心
    register-with-eureka: true
    # 是否需要搜索服務信息
    fetch-registry: true
  instance:
    # 使用ip地址註冊到註冊中心
    prefer-ip-address: true
    # 註冊中心列表中顯示的狀態參數
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

之後是service-b

server:
  # 服務端口號
  port: 8083
spring:
  application:
    # 服務名稱 - 服務之間使用名稱進行通訊
    name: service-objcat-b
eureka:
  client:
    service-url:
      # 填寫註冊中心服務器地址
      defaultZone: http://localhost:8081/eureka
    # 是否需要將自己註冊到註冊中心
    register-with-eureka: true
    # 是否需要搜索服務信息
    fetch-registry: true
  instance:
    # 使用ip地址註冊到註冊中心
    prefer-ip-address: true
    # 註冊中心列表中顯示的狀態參數
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

之後我們來運行一下剛配置好服務吧運行service-a和service-b的啓動類

在這裏插入圖片描述

@RestController
public class TestController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello world";
    }
}

重啓service-a服務

重啓服務, 訪問下面地址

http://localhost:8082/hello

在這裏插入圖片描述

瀏覽器上出現hello world說明成功了

有人會問了 到這裏並沒有使用到任何註冊中心的功能啊?
不要着急 接下來我們就是用一用註冊中心
我們現在有一個需求 使用服務b調用服務a的接口
這時我們就需要用到eurka(註冊中心)feign客戶端了
首先我們在service-b中創建interface

在這裏插入圖片描述

@FeignClient("SERVICE-OBJCAT-A")
public interface ServiceAFeignClient {
    @RequestMapping("/hello")
    public String hello();
}

重啓service-b服務

應用名可以在eureka中找到
http://localhost:8081

在這裏插入圖片描述

之後我們來寫接口 在服務service-b中添加個控制器

在這裏插入圖片描述

@RestController
public class TestController {

    @Autowired
    private ServerAFeignClient serverAFeignClient;

    @RequestMapping("/call")
    public String call() {
        String result = serverAFeignClient.hello();
        return "b to a 訪問結果 ----- " + result;
    }
}

之後我們發現報錯了 不要慌張設置一下即可

在這裏插入圖片描述

最後在應用入口加上註解@EnableFeignClients,就能實現服務之間的調用了.

在這裏插入圖片描述

重新運行服務b 在網站上訪問試試吧

http://localhost:8083/call

在這裏插入圖片描述

到這裏服務之間的相互訪問也可以完成了 到這裏springcloud最基本的環境搭建就完成了 快寫幾個微服務玩玩吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章