SpringCloud 微服務 (二) Eureka (Server)

微服務是一種架構風格,設計思想前端

特色    ① 由一系列微小的服務組成java

           ② 運行獨立,互不干擾spring

           ③ 獨立部署後端

           ④ 每一個微小的服務都有本身的業務實現安全

           ⑤ 各自獨立分散服務管理-->分佈式管理架構

 

單體架構: 測試的時候在一塊兒,容易測試,部署的時候就一個war包,這種架構開發效率受到影響,當應用愈來愈大的時候,維護起來比較麻煩,改動應用小bug須要從新總體部署,部署一次也可能須要很長的時間,模塊性能擴展有限app

 

服務註冊發現: 註冊方提供信息, 服務方經過註冊方的信息, 發現註冊服務;框架

服務網關: 除了服務的信息交互,還須要與外界進行交互,因此須要暴露本身的服務,但也不能什麼都暴露,就涉及到服務網關,網關能夠過濾後端信息,前端配合須要路由控制引導微服務選擇,由於全部的請求都會通過網關,因此還能夠限流,容錯,監控,日誌,安全,防爬蟲等等操做分佈式

後端服務,前端服務: 互相配合,完成服務的最簡化業務實現. 好比後端服務提供A,B接口,前端服務能夠根據業務場景拆分,聚合後端服務,將A,B合併返回或者拆分A中的一部分返回.ide

 

方案A: Spring全家桶 ...(本次,就決定是他了)

方案B: Dubbo服務,Zookeeper註冊中心 ...

 

SpringCloud提供了微服務開發所需的配置,是一個開發工具集,有不少個子項目,開源框架

利用SpringBoot開發,方便, 基於Netflix開源組件封裝,強大的微服務組件

總而言之SpringCloud簡化了分佈式開發,重要在理解分佈式、架構特色以及組件

 

SpringCloud Eureka基於Netflix Eureka的封裝,

主要兩個組件: 註冊中心(Eureka Server)、服務註冊(Eureka Client)

 

Eureka Server 註冊中心

註冊中心記錄服務信息,狀態, 好比服務名字,運行的狀況

 

建立E:/MyCloud文件夾,後續實踐的應用都放在此處

利用IDEA的Spring Initializr構建一個SpringBoot項目,第一步

第二步,選擇Cloud Discovery-Eureka Server,而且SpringBoot版本2.0.2

第三步,選擇個人建立路徑目錄E:/MyCloud

第四步,建立好了,把不須要的文件刪除掉,沒用

右下角會提示說Add as Maven Project or Disable notification,

選擇Add as Maven Project,加載一會就行了, 最後的目錄展現 

若是以爲com.server.eureka不爽,不想疊在一塊兒,能夠按下圖設置一下,

把Hide Empty Middle Packages的勾去掉

再啓動類上加一個註解@EnableEurekaServer,標識他是EurekaServer註冊中心

啓動項目的時候會報一些錯,先無論,訪問一下localhost:8080,成功 以下

Instances currently registered with Eureka是註冊服務列表

目前只有Server,尚未創建Client,因此是空的

 

回來看控制器報錯的緣由,關於@EnableEurekaServer註解

Cannot execute request on any known server

由於他雖然被標識爲Server,但他本身同時也是Client,會心跳檢測Server,沒有找到報錯

在application.yml文件中配置,順便加個name,運行

spring:
  application:
    name: my first eureka

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

每次不知道怎麼配置的時候,能夠Ctrl+左鍵,進入查看方法信息,或多或少能夠知道點套路

這時候,服務中心 發現了本身,name爲剛剛設置的my first eureka,默認Zone也替換掉了

 

通過上面的測試,回到服務中心,咱們就想他作一件事就夠了,不用又作服務中心,又作註冊服務的,

因此在剛剛的yml文件中加一個配置register-with-eureka: false ,對於此eureka取消註冊

spring:
  application:
    name: my first eureka

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false

重啓訪問,就會發現沒有註冊服務了,OK完成

 

 

提示端口8080很經常使用,建議改一個,eureka的默認是8761

應用啓動時,控制檯有不少提示信息

yml 配置屬性

// 將IP註冊到Eureka Server上,若是不配置就是機器的主機名
eureka.instance.prefer-ip-address=true

// 設置自我保護
eureka.server.enable-self-preservation=false

// 自我保護係數(默認0.85)
eureka.server.renewal-percent-threshold=0.55

// 表示是否將本身註冊到Eureka Server,默認爲true
eureka.client.register-with-eureka=false

// 表示是否從Eureka Server獲取註冊信息,默認爲true
eureka.client.fetch-registry=false

// 自動檢查失效服務的間隔時間(單位毫秒)
eureka.server.eviction-interval-timer-in-ms=6000

// 設置eureka server同步失敗的等待時間 默認 5分 , 在這期間,它不向客戶端提供服務註冊信息
eureka.server.wait-time-in-ms-when-sync-empty=5

// 設置eureka server同步失敗的重試次數 默認爲 5 次
eureka.server.number-of-replication-retries=5

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

相關文章
相關標籤/搜索