SpringCloud入門學習筆記2--eureka
一、Eureka簡介
1.1 什么是Eureka
Eureka是Netflix開發的服務發現框架,SpringCloud將它集成在自己的子項目spring-cloud-netflix中,實現SpringCloud的服務發現功能。Eureka包含兩個組件:Eureka Server和Eureka Client。
Eureka Server提供服務注冊服務,各個節點啟動后,會在Eureka Server中進行注冊,這樣EurekaServer中的服務注冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到。
Eureka Client是一個java客戶端,用于簡化與Eureka Server的交互,客戶端同時也就別一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。在應用啟動后,將會向Eureka Server發送心跳,默認周期為30秒,如果Eureka Server在多個心跳周期內沒有接收到某個節點的心跳,Eureka Server將會從服務注冊表中把這個服務節點移除(默認90秒)。
Eureka Server之間通過復制的方式完成數據的同步,Eureka還提供了客戶端緩存機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用緩存中的信息消費其他服務的API。綜上,Eureka通過心跳檢查、客戶端緩存等機制,確保了系統的高可用性、靈活性和可伸縮性。
1.2 Eureka服務端開發
(1) 右鍵點擊父工程>new>module創建demo_eureka模塊
(2) pom.xml引入eureka-server依賴
(3)添加application.yml配置文件
server:
port: 8888
eureka:
client:
register-with-eureka: false #是否將自己注冊到Eureka服務中,本身就是所有無需注冊
fetchRegistry: false #是否從Eureka中獲取注冊信息
serviceUrl: #Eureka客戶端與Eureka服務端進行交互的地址
defaultZone: http://127.0.0.1:${server.port}/eureka/
server:
enableSelfPreservation: false #本地調試環境下關閉自我保護機制
這里簡單說明一下Eureka 的保護機制:
Eureka Server在運行期間,會統計心跳失敗的比例在15分鐘之內是否低于85%,如果出現低于的情況(在單機調試的時候很容易滿足,實際在生產環境上通常是由于網絡不穩定導致),Eureka Server會將當前的實例注冊信息保護起來。保護模式主要用于一組客戶端和Eureka Server之間存在網絡分區場景下的保護。一旦進入保護模式,Eureka Server將會嘗試保護其服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是不會注銷任何微服務)。上面為了方便我們觀察到Eureka移除服務的情況,所以在本地測試時可以關閉他的保護機制。
(4)編寫啟動類
在demo_eureka/src/mainjava下新建一個包 eureka,包下新建EurekaServer類,注意需要添加@EnableEurekaServer注解
(5)運行啟動類,然后在瀏覽器地址欄輸入 http://localhost:8888/ 運行效果如下:
主界面中system status為系統信息 General Info為一般信息 Instances currently,registered with Eureka為當前注冊的所有微服務列表。
1.3 服務注冊
下面我們將新建一個模塊,用來測試Eureka 的服務注冊以及服務調用等。
(1)右鍵點擊父工程>new>module創建demo_base模塊。(該模塊下將會整合mybatis,后續補充)
(2) pom.xml引入依賴
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
(3)添加application.yml配置文件
(4)編寫啟動類
在demo_base/src/mainjava下新建一個包 base,包下新建BaseApplication類,通過注解@EnableEurekaClient 表明自己是一個eurekaclient
運行Eureka然后運行BaseApplication類,觀察之前的Eureka界面:
可以看到,demo-base已經成功注冊到Eureka上了。(因為我們已經關掉了他的保護機制,所以如果你現在停掉demo-base,那么過了一定時間,一般為3個心跳周期也就是90秒左右,Eureka就會將該服務移除掉)
下一篇:微服務注冊到Eureka后,服務間的調用(ribbon+restTemplate模式與feign模式)
智能推薦
springcloud(微服務)學習之---eureka入門
這里寫自定義目錄標題 微服務概括 springCloud概括 微服務概括 springcloud服務治理組件eureka eureka治理組件的應用 eureka-client的編寫 微服務概括 微服務就是系統架構上的一種設計風格,它的主旨是將一個原本獨立的系統拆分成多個小型的微服務,這些小型的微服務都在各自獨立的進程中運行,服務之間通過基本的通信協議進行寫作溝通,由于通信時基于通用協議,所以這些...
springCloud入門學習(四):Eureka元數據
Eureka元數據有兩種,分別是標準元數據和自定元數據。 標準元數據:主機名、IP、端口號、狀態也及健康檢查等信息。這些信息會被發布在服務注冊表中,用于服務之間的調用。 自定義元數據:用戶自行定義的元素,遠程客戶端可訪問并且可以根據這些元素進行一定的處理。 遠程客戶端獲取元數據:movie服務獲取user服務的元數據。 1、用戶微服務修改: 2、電影服務修改: discoveryClient.ge...
SpringCloud學習筆記(二)Eureka服務注冊
上節學習了Eureka進行服務治理未寫完,這次將服務進行注冊到Eureka中,在上次的架子上繼續前進。 yyc-registry 注冊中心詳見:SpringCloud學習筆記-Eureka服務治理 首先新建一個yyc-test模塊,進行服務提供,使注冊到Eureka的注冊中心, 在pom文件中我們引入yyc父類,并引入web模塊 記得,在父類yy...
SpringCloud學習筆記(四)Eureka集群
修改配置 當前status狀態顯示包含主機名,可以通過修改配置文件直接顯示項目名稱,點擊以后可以直接訪問該ip 點擊服務以后轉到錯誤頁面,添加pom 配置文件添加 父工程中添加build 這樣就可以給服務添加一些說明信息。 eureka自我保護 什么是自我保護模式? 默認情況下,如果EurekaServer在一定時間內沒有接收到某個微服務實例的心跳,EurekaServer將會注銷該...
SpringCloud學習筆記:Eureka注冊中心
簡介 Eureka是Netflix開源的基于rest的服務治理方案,分為Server端和Client端,Server端為注冊中心,其他微服務通過Client端連接Server端進行服務的注冊和發現。 項目介紹 sc-parent,父模塊 sc-provider,提供者模塊 sc-eureka,注冊中心 sc-consumer-discovery,消費者模塊 搭建父模塊 創建父模塊sc-parent...
猜你喜歡
SpringCloud學習筆記——服務注冊中心——Eureka
SpringCloud學習筆記——服務注冊中心——Eureka 參考:尚硅谷2020最新版SpringCloud(H版&alibaba)——周陽 1. Eureka 單機版 創建子模塊,子模塊名稱 cloud-eureka-server7001 pom依賴 創建application.yml 創建主啟動類EurekaM...
Springcloud整合Eureka,學習筆記整理
版本信息: springboot 2.2.2.RELEASE;springcloud Hoxton.SR1 目錄結構如下: 首先配置聚合工程,父模塊的pom如下: 一、配置Eureka服務端 pom文件: yml文件: 主啟動類: 二、配置Eureka客戶端 pom文件: yml文件: 主啟動類: 加上controller的業務邏輯,獲取端口號 類似的,再配置兩個客戶端,三臺客戶端也就是三個提供者...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...