Spring Cloud Eureka服務註冊中心 單節點搭建(學習總結)
一、前言:
本文主要搭建Spring Cloud Eureka服務註冊中心(單節點),不過一般生產環境都是多節點負載均衡,形成一個服務註冊中心叢集,這樣一個註冊中心崩了不會影響整個系統的執行以及介面的呼叫。本文基於SpringBoot 1.5.2,Spring Cloud Camden.SR6版本編寫,版本不一致可能會有差異。下面就學習總結記錄一下:
二、新建一個Eureka-Server:
首先引入依賴pom.xml:
<?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.springcloud.wsh</groupId> <artifactId>springcloud_eureka_server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud_eureka_server</name> <description>Spring Cloud Eureka服務提供者</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.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> <spring-cloud.version>Camden.SR6</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
三、啟動類加上@EnableEurekaServer註解,開啟Eureka服務發現的功能。
@SpringBootApplication //@EnableEurekaServer註解的作用: 開啟Eureka服務發現的功能 @EnableEurekaServer public class SpringcloudEurekaServerApplication { public static void main(String[] args) { SpringApplication.run(SpringcloudEurekaServerApplication.class, args); } }
四、編寫application.yml檔案:主要配置一些埠號、應用名稱、以及服務註冊中心地址等等。
server: port: 1111 #服務埠號 eureka: client: fetch-registry: false #是否檢索服務 register-with-eureka: false #表示不向Eureka註冊自身服務 service-url: #服務註冊中心地址,其他服務可以通過指定eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/註冊到Eureka上 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ instance: #主機名 hostname: localhost spring: application: #服務名稱 name: eureka-server
到此,Eureka服務發現者已經搭建好。
五、搭建Eureka Client服務提供者
首先引入依賴pom.xml:
<?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.springcloud.wsh</groupId>
<artifactId>springcloud_eureka_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springcloud_eureka_client</name>
<description>Spring Cloud Eureka服務提供者</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.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>
<spring-cloud.version>Camden.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
六、啟動類加上@EnableDiscoveryClient註解,使其成為Eureka的一個服務提供者。
@SpringBootApplication
//@EnableEurekaClient
@EnableDiscoveryClient //註冊Eureka客戶端
public class SpringcloudEurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEurekaClientApplication.class, args);
}
}
七、編寫application.yml配置檔案:
主要是要指定服務註冊中心的地址,埠號等等
server:
port: 2222 #服務埠號
spring:
application:
#服務名稱,對應註冊到Eureka的例項名稱,後續Zuul路由對映的serviceId也是根據這個
name: eureka-client
eureka:
instance:
#主機名
hostname: localhost
client:
serviceUrl:
#服務註冊中心的地址,指定這個會向Eureka註冊一個名叫eureka-client的客戶端
#單節點Eureka服務註冊中心,不適用與生產環境,實際生產會用到Eureka Server叢集
defaultZone: http://localhost:1111/eureka/
#這裡可以定義一些自定義的引數,可以使用@Value("${com.springcloud.author}")獲取自定義引數的值
com:
springcloud:
author: weixiaohuai
date: 2018-09-07 10:10
八、新建測試Controller:TestController.java:
注意:可以引入discoveryClient獲取當前服務例項的一些資訊。可以使用@Value註解獲取在配置檔案自定義的一些引數。
//@RestController註解是一個組合註解, @RestController = @Controller + @ResponseBody
@RestController
public class TestController {
private static Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
private DiscoveryClient discoveryClient;
//獲取配置檔案中的自定義引數
@Value("${com.springcloud.author}")
private String author;
@Value("${com.springcloud.date}")
private String date;
@GetMapping("/test")
public String test() {
//獲取當前服務的例項
ServiceInstance serviceInstance = discoveryClient.getLocalServiceInstance();
String info = "hello eureka, 主機名:" + serviceInstance.getHost() + ", service_id:" + serviceInstance.getServiceId() + " 作者: " + author + " / 日期: " + date;
logger.info(info);
return info;
}
}
九、啟動專案:
瀏覽器訪問http://localhost:1111/,如下圖。可以看到eureka-client已經成功註冊到Eureka上面。
十、擴充套件
Eureka內部維護服務節點
的機制:
【a】服務下線
迭代更新
、終止訪問
某一個或者多個服務節點
時,在正常關閉服務節點
的情況下,Eureka Client
會告訴Eureka Server
我要下線了,Eureka Server
收到請求後會將該服務例項
的執行狀態
由UP
修改為DOWN
【b】失效剔除
Eureka Server
在啟動完成後會建立一個定時器每隔60秒
檢查一次服務健康狀況
,如果其中一個服務節點超過90秒
未檢查到心跳,那麼Eureka Server
會自動從服務例項列表
內將該服務剔除
。(記憶體溢位
、殺死程序
、伺服器宕機
等非正常流程關閉服務節點
)
【c】自我保護
Eureka Server
的自我保護機制
會檢查最近15分鐘
內所有Eureka Client
正常心跳的佔比,如果低於85%
就會被觸發保護機制,當觸發自我保護機制
後Eureka Server
就會鎖定服務列表
,不讓服務列表內的服務過期
,不過這樣我們在訪問服務時,得到的服務很有可能是已經失效的例項
,如果是這樣我們就會無法訪問到期望的資源,會導致服務呼叫失敗,所以這時我們就需要有對應的容錯機制
、熔斷機制
。
關閉自我保護: 在application.properties配置檔案中加入程式碼:
eureka.server.enable-self-preservation=false
到此,我們單節點的Eureka服務註冊中心已經搭建完成,本文是筆者在學習SpringCloud的時候的一些總結,僅供參考,大家一起學習,共同進步!
相關推薦
Spring Cloud Eureka服務註冊中心 單節點搭建(學習總結)
一、前言: 本文主要搭建Spring Cloud Eureka服務註冊中心(單節點),不過一般生產環境都是多節點負載均衡,形成一個服務註冊中心叢集,這樣一個註冊中心崩了不會影響整個系統的執行以及介面的呼叫。本文基於SpringBoot 1.5.2,Spring Cloud
搭建Spring Cloud Eureka服務註冊中心(二)服務呼叫
上一節我們搭建了單節點的Eureka和一個provide-server的服務,這一次我們再新建立一個consume-server,然後使用RestTemplate實現服務之間的呼叫。 1、建立consume-server服務 服務建立過程就不一一描述了,這裡貼一下appl
Spring Cloud Eureka-服務註冊與發現
效應 code ack size init -- 編輯 rep pid Spring Cloud Eureka Spring Cloud是目前用於開發微服務的主流框架之一,我們都知道在微服務架構中最為基礎、核心的模塊,就是服務註冊與發現。 在Spring Cloud裏我們可
解決spring cloud eureka服務註冊出現的Error creating bean with name 'org.springframework.cloud.netflix...問題
異常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.EurekaClien
spring-cloud-eureka-server 註冊中心啟動不顯示頁面而是xml問題
啟動eureka-server時,怎麼也訪問不了頁面: 而是: 各種找問題終於找到了原因: 將專案中依賴的freemarker-2.3.25-incubating.jar版本從本地maven倉庫中刪除,再maven update 專案。 終於··
01.Spring Cloud Eureka服務註冊與發現
Spring Cloud Eureka Spring Cloud Eureka 1.構建服務註冊中心 2.提供服務,註冊服務 依賴 啟動類 獲取服務 3.配置註冊中心高可用
第二篇:Spring Cloud Eureka 服務註冊+發現
Spring Cloud Netflix 主要元件 Spring Cloud Netflix 的核心是用於服務註冊與發現的 Eureka,接下來我們將以 Eureka 為線索,介紹 Eureka、Ribbon、Hystrix、Feign 這些 Spring Cloud Netflix 主要元件。 服務註冊
Spring Cloud Eureka 服務註冊與發現
Eureka是Netflix開源的一個RESTful服務,主要用於服務的註冊發現。Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作服務註冊伺服器。Eure
解決spring cloud eureka服務註冊出現的Error creating bean with name 'org.springframework.cloud.netflix...問題
異常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.Eu
Spring cloud Eureka服務註冊及發現(三)發現使用服務
Feign是一個宣告式的Web Service客戶端,它使得編寫Web Serivce客戶端變得更加簡單。我們只需要使用Feign來建立一個介面並用註解來配置它既可完成。具體Feign的解釋請看:Spring Cloud Feign詮釋 下面,通過一個例子
如何優化Spring Cloud微服務註冊中心架構?
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
沒使用Spring Cloud的版本管理導致Eureka服務無法註冊到Eureka服務註冊中心
esc ice 修改 encoding -s put http nag scrip 創建了一個Eureka Server的服務註冊集群(兩個Eureka服務),都能相互註冊,寫了一個Eureka客戶端服務無法註冊到服務發現註冊中心 註冊中心1: 註冊中心2:
Spring Cloud 中Eureka服務註冊中心的搭建
1:首先在idea上面建立一個Maven工程,命名為Sprng-Boot-eureka-test 建立的Maven工程中的pom檔案如下 2:在建立的Sprng-Boot-eureka-test工程下面新建一個module為eureka-server
基於spring-cloud-eureka 服務中心與註冊
本文基於Finchley.SR2以上,Edgware.SR5的配置部分不適用 spring-boot版本為2.0.2RELEASE, 用部分設定1.5已不適用 伺服器端設定 伺服器pom檔案設定 加入依賴 spring-cloud-starter-netflix-eureka
十五:Spring Cloud 之Eureka服務註冊中心(HA版)
1. Eureka簡介 2. 程式碼實現 2.1涉及的模組 eureka-server-ha:通過profiles指定不同的埠來模擬多服務例項。 eureka-service:服務提供者 2.2
Spring Cloud Eureka(四):Eureka 服務註冊中心配置說明
Eureka Client 配置項(eureka.client.*) org.springframework.cloud.netflix.eureka.EurekaClientConfigBean
初始化Spring Cloud建立Eureka服務註冊中心
bootstrap https 控制臺 depend lee 心跳 git reg iyu 1、新建項目 https://gitee.com/frankawp/vishnu 新建一個git項目 打開git bash git clone https://gitee.co
SpringCloud實戰二:Spring Cloud Eureka 服務發現與註冊中心
Spring Cloud Eureka 它是通過封裝 Netflix 開源的Eureka,一款基於 Rest 的服務發現與註冊元件,包括 Eureka Server 和 Eureka Client,最新版本為2018年8月釋出的1.9.4版本,最新的2.x版本已經不再開源,但是1.9
Spring Cloud Eureka 服務關閉但是未從註冊中心刪除 自我保護機制,以及如何關閉自我保護機制的辦法
自我保護背景 首先對Eureka註冊中心需要了解的是Eureka各個節點都是平等的,沒有ZK中角色的概念, 即使N-1個節點掛掉也不會影響其他節點的正常執行。 預設情況下,如果Eureka Server在一定時間內(預設90秒)沒有接收到某個微服務例項的心跳,Eure
Spring Cloud Eureka 服務關閉但是未從註冊中心刪除 自我保護機制
背景:由於Eureka擁有自我保護機制,當其登錄檔裡服務因為網路或其他原因出現故障而關停時,Eureka不會剔除服務註冊,而是等待其修復。這是AP的一種實現。 為了讓其有精準的 CP健康檢查,可以採取讓其剔除不健康節點。 server端: eureka.server.