SpringCloud學習筆記(一)服務注冊
接觸SpringCloud很久了總結一下
項目結構
主項目 pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-cloud</groupId>
<artifactId>eureka</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<!-- 統一項目字符集 -->
<!--jdk版本-->
<!-- spring-cloud版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<!--在父項目的POM文件中,我們會使用到dependencyManagement元素。通過它來管理jar包的版本,讓子項目中引用一個依賴而不用顯示的列出版本號。Maven會沿著父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然后它就會使用在dependencyManagement元素中指定的版本號。-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
然后構建eureka-server
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>spring-cloud</groupId>
<artifactId>eureka</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后寫eurake-server的配置文件application.yml
server:
port: 8761
enableSelfPreservation: false
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
default-zone:
http://${eurake.instance.hostname}:${server.port}/eurake/
#服務注冊中心端口號
server.port=8761
#服務注冊中心實例的主機名
eureka.instance.hostname=localhost
#是否向服務注冊中心注冊自己
eureka.client.register-with-eureka=false
#是否檢索服務
eureka.client.fetch-registry=false
#服務注冊中心的配置內容,指定服務注冊中心的位置
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
#是否關閉自我保護模式
server.enableSelfPreservation= false
當有一個新的 Eureka Se凹er 出現時,它嘗試從相鄰 Peer 節點獲取所有服務實例注冊表信 息。如果從相鄰的 Peer 節點獲取信息時出現了故障, Eureka Server 會嘗試其他的 Peer 節點。 如果 Eureka Serve 能夠成功獲取所有的服務實例信息,則根據配置信息設置服務續約的閥值。 在任何時間,如果 Eureka Serve 接收到的服務續約低于為該值配置的百分比(默認為 15 分鐘 內低于 85%),則服務器開啟自我保護模式,即不再剔除注冊列表的信息。 這樣做的好處在于,如果是 Eureka Server 自身的網絡問題而導致 Eureka Cli陽it 無法續約, Eureka Client 的注冊列表信息不再被刪除,也就是 Eureka Client 還可以被其他服務消費。
因為我們目前只有一個節點所以先關閉,不然會有警告。
然后是工程啟動類
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
啟動 EurekaClientApplication
Eureka Server 的所有搭建工作已經完成。
接著是配置 Eureka-client
pom文件和Eureka-server一樣,注意名字是eureka-client
關鍵是配置文件 bootstrap.yml
eureka:
client:
service-url:
default-zone: http://localhost:8761/eureka/
server:
port: 8762
spring:
application:
name: eureka-client
bootstrap.yml(bootstrap.properties)用來程序引導時執行,應用于更加早期配置信息讀取,如可以使用來配置application.yml中使用到參數等
application.yml(application.properties) 應用程序特有配置信息,可以用來配置后續各個模塊中需使用的公共參數等。
bootstrap.yml 先于 application.yml 加載
#http://localhost:8761/eureka/ 是client向server注冊服務的地址
client啟動類
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
啟動client
控制臺打印出
看server控制臺
說明已經注冊成功
再次訪問注冊中心
參考資料:
《深入理解Spring+Cloud與微服務構建》
智能推薦
學習筆記系列之SpringCloud | 第一章 服務注冊中心(Eureka)
Eureka 簡介 Eureka是Netflix開發的服務發現框架,本身是一個基于REST的服務,主要用于定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。 SpringCloud將它集成在其子項目spring-cloud-netflix中,來實現SpringCloud的服務發現功能。通過一些簡單的注解,開發者就可以快速的在應用中配置一下常用模塊并構建龐大的分布式系統。 ...
springcloud 筆記-服務注冊中心
1.搭建springcloud服務注冊中心需要添加eureka的依賴: 2.編寫配置文件(server): 啟動類(主要是這個注解@EnableEurekaServer): 3.客戶端配置: 客戶端啟動類: 客戶端socket: 4.先啟動客戶端再啟動服務端就能看見注冊中心上的服務顯示出來: 至此eureka配置完成! ...
SpringCloud學習筆記(二):服務注冊與發現Eureka
一、什么是Eureka Eureka是Netflix的一個子模塊,也是核心功能之一,Eureka是一個基于Rest的服務,用于定位服務,以實現云端中間件服務發現要和故障移除。服務注冊與發現對于微服務架構來說是非常重要的,由來服務發現與注冊,只需要使用服務的標識符,就可以訪問到服務,而不需要修改服務調用的配置文件了。功能類似于dubbo的注冊中心,比如Zookeeper ...
(五)SpringCloud學習筆記之服務注冊Eureka高級
服務注冊Eureka高級 1 Eureka Server 高可用集群 1.1 搭建 Eureka Server高可用集群 1.2 服務注冊到Eureka Server集群 2 Eureka中的常見問題 2.1 服務注冊慢 2.2 服務節點剔除問題 2.3 監控頁面顯示ip 3 Eureka源碼解析 1 Eureka Server 高可用集群 在上一個章節,實現了單節點的Eureka Server的...
猜你喜歡
SpringCloud學習筆記---服務的注冊和發現
前言 ? 微服務的意義和概念在當下十分火熱,而spring同樣提供了實現微服務的SpringCloud框架。更多的也不多說,希望通過這個系列記錄學習過程的的經驗。 ? 所有版本以SpringBoot2.x和SpringCloud Finchley為主,構建工具為gradle,IDE為基礎的eclipse。如果使用maven構建可以在官網和其他推薦文章中參考構建pom代碼。 ? 第一篇是關于在微服務...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...