簡介
Eureka
服務注冊中心是
netflix
開源組織提供的一個
服務高可用
的解決方案,在前端時間一直在瘋傳的
2.0開源流産
的問題,其實并不影響我們的使用,
netflix
隻不過是不再維護
2.0
分支的開源代碼,是以做出了免責聲明,不過對于我們使用者來說确實比較擔心這一點,還有不少人更換服務注冊中心,比如:
zookeeper
、
consul
。
當然對于
Eureka 2.0 流産
這件事情就當做一場鬧劇來對待吧,因為
SpringCloud.Finchley.SR1
版本依賴的
Eureka
是
1.9.3
,根本不需要考慮到這一點了。
我們還是來關心我們的
分布式
微服務架構系統該怎麼去設計。
建構項目
跟我們之前建構項目一樣, 使用
idea
工具直接建立一個新的
SpringBoot
項目,在選擇依賴的界面勾選
Cloud Discovert -> Eureka Server
依賴,建立完成後的
pom.xml
配置檔案内容如下:
...//省略部分
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--SpringCloud最新穩定版本-->
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<!--Netflix Eureka依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<!--SpringCloud依賴版本管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
...//省略部分
複制
我們在建立新的項目時,如果選擇了相關
SpringCloud
的依賴,則會自動在
pom.xml
配置檔案内添加
SpringCloud
最新穩定版本依賴配置。
spring-cloud-dependencies
這個依賴是
SpringCloud
内所需要依賴的
版本維護
,在
maven
項目内如果被
<dependencyManagement>
内修飾的
<dependency>
,子項目或者本項目在使用時可以不用設定版本号,預設使用
<dependencyManagement>
下
<dependency>
内設定的版本資訊。
正因如此,這也是為什麼我們添加了
spring-cloud-dependencies
依賴後,在使用相關
SpringCloud
插件時可以不用添加
version
标簽設定導入指定版本的依賴。
Eureka Server的配置
添加
spring-cloud-starter-netflix-eureka-server
依賴後,我們就來看看怎麼開啟
Eureka Server
服務。開啟
Eureka
的注冊中心服務端比較簡單,隻需要修改注意兩個地方。
- 第一個地方是在入口類上添加啟用
的注解Eureka Server
,如下所示:@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {
// main method
}
複制
- 第二個地方是application.yml/application.properties檔案内添加配置基本資訊,如下所示:
# 服務名稱
spring:
application:
name: hengboy-spring-cloud-eureka
# 服務端口号
server:
port: 10000
#Eureka 相關配置
eureka:
client:
service-url:
defaultZone: http://localhost:${server.port}/eureka/
# 是否從其他的服務中心同步服務清單
fetch-registry: false
# 是否把自己作為服務注冊到其他服務注冊中心
register-with-eureka: false
複制
- spring.application.name:服務名稱
- server.port:服務端口号
- eureka.client.service-url.defaultZone:Eureka預設的服務位址空間資訊配置
- eureka.client.fetch-registry:是否從其他Eureka注冊中心同步服務清單(單節點無需配置啟用).
- eureka.client.register-with-eureka:是否将自己作為服務注冊到其他Eureka服務注冊中心(單節點無需配置啟用).
運作測試
上面的步驟我們已經把
Eureka
服務端所需要的依賴以及配置進行了內建,接下來我們來運作測試看下效果,
Eureka
給我們提供了一個漂亮的
管理界面
,這樣我們就可以通過
管理界面
來檢視注冊的
服務清單
以及
服務狀态
等資訊。
測試步驟:
- 通過
方式進行啟動Application
Eureka Server
- 在本地浏覽器通路
,10000端口号是我們在http://localhost:10000
配置檔案内設定的application.yml
的值。server.port
- 成功通路到
管理界面Eureka Server
界面如下所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5Sdjt2bwlmYwJHevw1N4QzNyMTMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
Eureka Server 管理界面
對于界面我們可以看到一些
Eureka Server
的健康資料以及基本資訊,比如:
-
:已經啟動的耗時server-uptime
-
:目前占用的記憶體總量current-memory-usage
-
:注冊到該中心的服務清單Instances currently registered with Eureka
-
:目前ipAddr
的IP位址,如果沒有配置Eureka Server
eureka.instance.ip-address
那麼這裡使用預設的IP位址。
...
總結
本章介紹了
Eureka
作為
Server
的配置,配置的步驟比較簡單,沒有那麼多繁瑣的地方,當然這隻是
Eureka
單個
服務節點
的配置方式,更多進階的使用方式請檢視後續文章。
與恒宇少年面對面
如果你喜歡的相關文章,那麼就去微信公衆号(
恒宇少年
恒宇少年
)關注我吧!!!
當然你也可以去 SpringCloud碼雲源碼 項目底部掃描二維碼關注我,感謝閱讀!!!
學習目錄推薦
- SpringBoot配套源碼位址:通路碼雲檢視源碼、通路GitHub檢視源碼
- SpringCloud配套源碼位址:通路碼雲檢視源碼
- SpringBoot相關系列文章請通路:目錄:SpringBoot學習目錄
- QueryDSL相關系列文章請通路:QueryDSL通用查詢架構學習目錄
- SpringDataJPA相關系列文章請通路:目錄:SpringDataJPA學習目錄
恒宇少年的開源快訊
這段時間一直在編寫開源的相關架構,緻力于公司使用的架構更新以及開源計劃,将公司使用到的
工具
以及
插件
進行更新重構并且開源。
- 代碼生成器(Code-Builder)
代碼生成器根據你提供的模闆檔案(目前支援code-builder
)自動生成實體類,可以很大很有效的提高開發效率。freemarker
:https://gitee.com/hengboy/code-builderGitee位址
:https://github.com/hengyuboy/code-builderGithub位址
- 持久化架構(MyBatis-Enhance)
是一個對mybatis-enhance
架構的增強封裝,提供一系列的内部方法來完成單表資料的操作,多表資料提供mybatis
方式進行操作。DSL
:https://gitee.com/hengboy/mybatis-enhanceGitee位址
:https://github.com/hengyuboy/mybatis-enhanceGithub位址
- 自動分頁插件
是一款自動化分頁的插件,基于MyBatis-Pageable
内部的插件MyBatis
攔截器編寫完成,攔截Interceptor
的兩個重載方法計算出分頁的資訊以及根據配置的資料庫Executor.query
自動執行不同的查詢語句完成總數量的統計。Dialect
:https://gitee.com/hengboy/mybatis-pageableGitee位址