SpringCloud註冊中心eureka搭建與服務註冊

微服務:獨立的工程之間通過框架形成的一個集羣的服務調用;這個集羣稱之爲微服務集羣;

微:集羣中的工程(服務器),都是獨立運行的項目;功能非常單一微小,例如後臺的增刪改查可以切分成4個獨立運行的微服務工程.

springCloud的微服務框架具有很多的功能組件:

1 服務治理 eureka 所有工程都可以在eureak中註冊自己的服務名稱,如果名稱一致,將會被eureka作爲同一個服務來使用;

2 負載均衡調用組件:ribbon, 前端的客戶端的組件
3 接口客戶端組件: feign 底層依賴ribbon+template實現的調用。看不到實際調用的方法,利用接口,註解
4 熔斷器:Hystrix, 當服務調用出現任何異常或者問題時,可以利用熔斷的邏輯完成錯誤的解決;類似代碼中的try catch
5 分佈式配置:config,分佈式配置組件;
6 網關組件:zuul,實現網關路由,監聽,對當前的需要的服務進行網關治理;

微服務治理組件eureka

springcloud中的核心組件之一,沒有它就無法形成微服務的框架;有服務治理中心,有服務註冊客戶端;

搭建一個服務註冊中心

1 springboot工程(quickstart)

可以再 start.spring.io 生成一個springboot工程

2 pom依賴(標準的springboot,但是必須springboot版本1.5.9.Release,和springcloud版本兼容 Edgware,Dalston)
<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.arno</groupId>
  <artifactId>eureka-server</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>eureka-server</name>
  <url>http://maven.apache.org</url>
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.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>Edgware.RELEASE</spring-cloud.version>
  </properties>
  <dependencies>
        <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</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>
</project>

3 application.properties
server.port=8090
//當前中心訪問的域名
eureka.instance.hostname=localhost 
eureka.client.registerWithEureka=false  
//當前的註冊中心默認情況會在自己啓動的中心註冊一個自己的服務
eureka.client.fetchRegistry=false  
//匹配eureka.instance.hostname的值得中心訪問地址,服務註冊中心的頁面可以通過這個地址訪問,給其他的服務使用的,瀏覽器直接訪問localhost:8090,給其他服務用來在註冊中心註冊的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8090/eureka/
3 編寫啓動類,查看註冊中心內容,在啓動類上添加@EnableEurekaServer註解
package com.arno;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class StarterEurekaServer {
	
	public static void main(String[] args) {
		SpringApplication.run(StarterEurekaServer.class, args);
	}
}

localhost:8090訪問測試,服務端已經搭建起來

在這裏插入圖片描述

eureka客戶端(服務調用的服務提供者)在註冊中心註冊服務

1 quickstart的maven骨架

可以再 start.spring.io 生成一個springboot工程

2 pom依賴
<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.arno</groupId>
  <artifactId>eureka-client01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>eureka-client01</name>
  <url>http://maven.apache.org</url>
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.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>Edgware.RELEASE</spring-cloud.version>
	</properties>
  <dependencies>
    <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>
</project>
3 application.properites
server.port=8091
server.context-path=/
//在eureka中心註冊一個service-hi的服務,名字自定義,服務中心根據服務名稱判斷是否是處理同一種邏輯的服務,
//例如用戶登錄服務,統一一個名字,可以啓動多個項目,到註冊中心
spring.application.name=service-hi
//指向註冊中心,與eureka center一致,服務啓動後悔自動到下面的地址註冊名稱爲service-hi的服務
eureka.client.serviceUrl.defaultZone=http://localhost:8090/eureka/
在啓動類中添加@EnableEurekaClient註解
package com.arno;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class StarterEurekaClient01 {
	
	public static void main(String[] args) {
		SpringApplication.run(StarterEurekaClient01.class, args);
	}
}

啓動客戶端會根據地址自動到服務端註冊服務,查看服務端http://localhost:8090/

在這裏插入圖片描述

已經註冊了服務,和服務提供的地址。

eureka報警

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

當提供服務的eureka client斷開連接,程序關閉,宕機等問題,導致服務治理中心無法發現或連接通信服務提供者時,可連接的服務提供者佔用所有服務提供者的85%(默認值)以下時,出現以上預警

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章