微服務架構:spring cloud之服務註冊和服務發現

SpringCloud主要提供的模塊包括:服務發現(Eureka),斷路器(Hystrix),智能路有(Zuul),客戶端負載均衡(Ribbon),Archaius,Turbine,Eureka爲微服務的註冊中心。java

1.Eureka簡介

Eureka是Spring Cloud Netflix的一個子模塊,也是核心模塊之一。用於雲端服務發現,一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。spring

服務註冊與發現對於微服務系統來講很是重要。有了服務發現與註冊,你就不須要成天改服務調用的配置文件了,你只須要使用服務的標識符,就能夠訪問到服務。他的功能相似於dubbo的註冊中心(register)。apache

服務發現:服務發現是微服務基礎架構的關鍵原則之一。試圖着手配置每一個客戶端或某種格式的約定能夠說是很是困難的和很是脆弱的。Eureka是Netflix服務發現的一種服務和客戶端。這種服務是能夠被高可用性配置的和部署,而且在註冊的服務當中,每一個服務的狀態能夠互相複製給彼此。bootstrap

服務註冊:當一個客戶端註冊到Eureka,它提供關於本身的元數據(諸如主機和端口,健康指標URL,首頁等)Eureka經過一個服務從各個實例接收心跳信息。若是心跳接收失敗超過配置的時間,實例將會正常從註冊裏面移除安全

下圖是基本的服務註冊和發現 bash

2.Eureka服務發現和註冊(建立註冊中心)

(a):建立一個基礎的Spring Boot工程,並在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.demo.springcloud</groupId>
		<artifactId>eureka_register_service</artifactId>
		<version>1.0.0</version>
		<packaging>jar</packaging>

		<name>eureka_register_service</name>
		<description>Spring Cloud project</description>

		<parent>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-parent</artifactId>
			<version>1.4.3.RELEASE</version>
			<relativePath /> 
		</parent>

		<properties>
			<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
			<java.version>1.8</java.version>
		</properties>

		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-test</artifactId>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-eureka-server</artifactId>
			</dependency>
		
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-security</artifactId>
			</dependency>
		</dependencies>

		<dependencyManagement>
			<dependencies>
				<dependency>
					<groupId>org.springframework.cloud</groupId>
					<artifactId>spring-cloud-dependencies</artifactId>
					<version>Brixton.RELEASE</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>	
複製代碼

(b):建立一個啓動類Applicationapp

package com.demo.springcloud;

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

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

 }
複製代碼

經過@EnableEurekaServer註解啓動一個服務註冊中心提供給其餘應用進行對話。負載均衡

(c):建立一個配置文件 application.properties,注意不要出現空格,否啓動報錯eclipse

server.port=8000
 eureka.client.register-with-eureka=false
 eureka.client.fetch-registry=false
 eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
複製代碼

(d):執行bluid.sh進行構建,而後執行main方法。本人因爲在eclipse下沒有進行手動編譯,啓動的時候一直讀取不到application.properties。

(e):查看註冊中心 http://127.0.0.1:8000/ 能夠看到以下圖

是否是很簡單啊,那麼人要問了,爲何連登錄帳號和密碼都沒有,在外網不是直接能進入註冊中心, 這樣很不安全啊。好,那咱們加入登錄帳號和密碼

3.Eureka註冊中心加入權限

(a):加入註冊中心須要引入jar,在pom.xml加入

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>
複製代碼

(b):配置文件新建一個bootstrap.yml文件

security:
    basic:
      enabled: true
    user:
      name: admin
      password: 123
複製代碼

記得從新編譯打包而後執行main方法。

4.註冊一個服務

首先要去掉註冊中心加入的權限,否則服務端會連接不上註冊中心進行註冊.

執行demo應該能看上面的結果,下圖是註冊中心找到的服務BIZ-SERVICE-0,上圖是服務暴露的接口
相關文章
相關標籤/搜索