SpringCloud學習筆記(二):建立注冊中心,注冊微服務
注冊中心
上一篇文章中我們新建了一個簡單的微服務工程,在一個常規的項目中,會有十幾個甚至更多的這樣的微服務來構成一個完整的系統,微服務之間通過接口互相傳遞數據。那么,按照往常的思維,微服務之間的接口URL只能通過硬編碼的方式來寫進代碼里了,這樣顯然大大增加了代碼的維護難度,一個接口的地址、參數產生了變化,可能會影響到多個微服務對其的調用,這時SpringCloud帶著eureka組件應運而生了,SpringCloud首先要解決的,就是這個URL的問題。每個微服務都將在eureka上注冊,eureka將分配一個微服務ID給每一個微服務,這個微服務ID在eureka體系中可以實現替代URL中主機名的作用。
建立注冊中心
我們首先在IDEA中新建一個模塊或者新建一個Maven項目,我這里是選擇新建一個模塊,先點擊項目結構設置(Ctrl+Alt+Shift+S)
接下來配置項目模塊(Moudules),單擊左上角的+號,選擇New Moudule新建一個模塊。
模塊依賴選擇Maven,下一步,填寫Maven項目信息
點擊下一步,修改一下項目的目錄位置,不然會被放在第一個項目的目錄下
打開新模塊下的pom.xml,在其中加入如下代碼:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<!-- 導入Spring Cloud的依賴管理 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--springboot 整合eureka服務端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
eureka注冊中心自身也是一個微服務,是基于SpringBoot的,因此我們同樣需要編寫啟動類,以啟動eureka服務。在java文件夾下新建runner包,在包下面新建一個eurekaApp類,代碼如下:
package runner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //聲明這是一個Eureka服務
public class eurekaApp {
public static void main(String[] args) {
SpringApplication.run(eurekaApp.class, args);
}
}
最后在resource文件夾下,新建一個application.yml,配置一下SpringBoot需要的參數以及eureka需要的參數,注冊中心就可以啟動了,代碼如下:
#服務端口號
server:
port: 9090
#服務名稱
spring:
application:
name: app-eureka-center
eureka:
instance:
#注冊中心地址
hostname: localhost
#客戶端調用地址
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#是否將自己注冊到Eureka服務中
register-with-eureka: false
#是否從Eureka中獲取注冊信息
fetch-registry: false
設置完這些參數以后就可以運行啟動類中的入口方法了,等待項目加載完成,在瀏覽器中訪問localhost:9090就可以看到如下圖所示的注冊中心頁面了
從圖中我們可以看見Instances currently registered with Eureka下面的表格還沒有數據,這是因為我們還沒有任何的服務被注冊到Eureka中,接下來我們要做的就是注冊一個微服務到注冊中心。
注冊微服務
把微服務注冊到注冊中心是非常簡單的一件事情,我們只需要在原先的微服務模塊中新增一個依賴,yml文件中添加幾行配置,然后在啟動類上加一個注解就可以實現將微服務注冊到注冊中心了。
首先我們先打開上一個模塊(microservicefirst)的pom.xml,在依賴中新增下面這個依賴:
<!--springboot 整合eureka客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
然后打開resource目錄下的application.yml文件,在底下新增如下幾行配置
#服務注冊到eureka注冊中心的地址
eureka:
instance:
instance-id: ${spring.application.name}###${server.port} #指定實例id
client:
service-url:
#注冊中心地址
defaultZone: http://localhost:9090/eureka/
#需要注冊到注冊中心
register-with-eureka: true
#是否需要從eureka上檢索服務
fetch-registry: false
最后修改runner啟動類上的注解,新增在類上新增一行注解:
@EnableEurekaClient//啟動Eureka客戶端,標記這個服務是Eureka的客戶端服務
啟動這個微服務模塊,等待模塊啟動完成之后再次訪問localhost:9090,就可以看到在列表下新增了一個微服務,我們的微服務在注冊中心上注冊成功了。
上面那一大串紅字是由于Eureka長時間沒有接收到微服務心跳啟動了自動保護機制,暫時先不用去理會它。至此,我們的微服務就注冊到注冊中心上了,接下來我們將了解如何從注冊中心獲取微服務提供的接口。
智能推薦
微服務學習SpringCloud之注冊中心界面配置 actuator
寫在前面:后續的文章都是基于第一篇文章進行更新,我是按照SpringCloud學習順序進行文章編寫,因為項目只有一個項目,需要了解SpringCloud前面skill的可以看一下前面SpringCloud體系。 現在存在的問題: 問題1 主機名稱:服務名稱修改 在我們的監控界面會出現 左邊的DESKTOP-這是我們主機名,為了不顯示這個東西我們可以進行這樣配置 在服務提供者的...
微服務(SpringCloud)介紹 -- 之注冊中心
微服務 SpringCloud介紹 Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, in...
SpringCloud-微服務-注冊中心Eureka
有的時候會出現注解無法使用的問題,需要設置SpringCloud的版本 運行效果: 9月2號補充: 想到的問題:如果我們不通過IP,而只是通過服務名調用服務。那么當注冊中心蕩掉了的話,那就不能調用服務了。那么該怎么辦呢? 解決的方法: 1.只把注冊中心當作用于監控微服務的工具,放棄通過服務名調用微服務,而是通過其它的途徑調用微服務(例如Nginx等)【暫時還...
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...