1. 程式人生 > >spring cloud : 服務註冊與發現(自動管理微服務地址)

spring cloud : 服務註冊與發現(自動管理微服務地址)

目前的架構缺點如下:

1.           如果服務提供者provider的sort.port=8000 改成sort.port=8001,消費者consumer微服務就要修改http://localhost:8001而且需要重新發布兩個所有微服務。

2.           Provider如果部署多個,消費者要跟著更新地址的工作量要成倍增加,而且容易配置錯誤。

ð  Eureka (尤銳卡) 大家微服務註冊發現伺服器,架構如下:


圖說明:Eureka Client將微服務註冊到Eureka Server,定期向其傳送心跳(遠端call,傳送微服務例項),如果Eureka Server在90秒內沒接收到會登出此例項


1.     Eureka Server

新建maven專案命名為tcloud-user-eurekaserver

1.     配置依賴

<?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.svw.tbox.tcloud.base</groupId>

<artifactId>tcloud-user-eurekaserver</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>tcloud-user-eurekaserver</name

>

<description>provider</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>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<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>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka-server</artifactId>

</dependency>

</dependencies>

<!-- 引入spring cloud的依賴 -->

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>Camden.SR4</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>

2.     啟動類宣告

package com.svw.tbox.tcloud.base.eurekaserver;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication

@EnableEurekaServer

public class PateoEurekaServerApplication {

         public static void main(String[] args) {

                  SpringApplication.run(PateoEurekaServerApplication.class, args);

         }

}

3.     配置屬性(application.yml)

server:

port: 8100                   

eureka:

client:

registerWithEureka:false#是否註冊到server 本身是server 所以false

fetchRegistry:false#是否從server獲取資訊,由於此處是單點server 所以不需要同步資訊

serviceUrl:

defaultZone: http://localhost:8100/eureka/    #server互動的地址

1.     新增依賴

tcloud-user-provider 的pom.xml中新增如下依賴包

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<!-- 引入spring cloud的依賴 -->

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>Camden.SR4</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

2.     新增application.yml

spring:

application:

name: tcloud-user-provider    #註冊應用名

eureka:

client:

serviceUrl:

defaultZone: http://localhost:8100/eureka/

instance:

prefer-ip-address:true#註冊IP,而不是預設hostname

3.     啟動類宣告為Eureka client

添加註解@EnableDiscoveryClient

@SpringBootApplication

@MapperScan("com.svw.tbox.tcloud.user.provider.*")//掃描mybatis的持久化類

@EnableDiscoveryClient

publicclass ProviderApplication {

4.     同樣配置tcloud-user-consumer客戶端為Eureka client

5.     效果

按照順序啟動如下服務:

tcloud-user-eurekaserver

=》tcloud-user-provider

=》tcloud-user-consumer

訪問Eureka server 地址http://localhost:8100/檢視所有微服務:

1.     高可用改造


原理:Eureka Server1和Eureka Server2 兩個例項相互註冊(增量同步資訊)

1.     修改主機名

開啟C:\Windows\System32\drivers\etc\hosts(Linux系統是/etc/hosts),新增如下一行語句:

127.0.0.1  pateo1  pateo2

2.     配置server相互註冊

修改tcloud-user-eurekaserver的application.yml

spring:

application:

name: tcloud-user-eurekaserver

---

spring:

profiles: pateo1                                 # 指定profile=pateo1

server:

port: 8100

eureka:

instance:

hostname: pateo1                               # 指定當profile=pateo1時,主機名是pateo1

client:

serviceUrl:

defaultZone: http://pateo2:8101/eureka/      # pateo1註冊到pateo2

---

spring:

profiles: pateo2

server:

port: 8101

eureka:

instance:

hostname: pateo2

client:

serviceUrl:

defaultZone: http://pateo1:8100/eureka/     #pateo2註冊到pateo1

啟動兩個server例項:

PateoEurekaServerApplication類右擊 => run as => run configurations => Arguments =>Program arguments 新增引數

--spring.profiles.active=pateo1

點選執行

PateoEurekaServerApplication類右擊 => run as => run configurations => Arguments =>Program arguments 新增引數

--spring.profiles.active=pateo2

點選執行

3.     將client微服務註冊到Eureka Server叢集

將tcloud-user-consumer 和tcloud-user-provider的application.yml中

eureka.client.serviceUrl.defaultZone改成兩個server的地址

eureka:

client:

serviceUrl:

defaultZone: http://pateo1:8100/eureka/,http://pateo2:8101/eureka/

注意:分別註冊到server1或者server2上也行,因為此時sever之間是相互同步的



相關推薦

spring cloud : 服務註冊發現自動管理服務地址

目前的架構缺點如下:1.           如果服務提供者provider的sort.port=8000 改成sort.port=8001,消費者consumer微服務就要修改http://localhost:8001而且需要重新發布兩個所有微服務。2.          

構建服務架構Spring Cloud服務註冊發現Eureka、Consul

comm 簡介 foundry 架構 eas args 包含 什麽 其他 Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全

Spring Cloud 一:服務註冊發現Eureka【Dalston版】

什麽是 pom 日誌 操作 prop ng- 通過 決策 target Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局

Spring Cloud ---- 服務註冊發現Eureka 找到了!找到了! 嘻嘻

  記錄一下吧,為什麼接觸分散式。因為裸辭之後沒有找到工作,好的公司都要求有分散式經驗,但是我完全沒有。在一次面試的時候,面試官說如果你會分散式架構的話,我可以把工資給你開高2.5,我就考慮著給我點時間,讓我學習這個狗東西。一個月後看學習效果再看我能不能拿到多了2.5的工資,面試官也就答應了。分散式之路就此開

Spring Cloud 入門教程1、服務註冊發現Eureka

一、前言 1、什麼是Eureka? Eureka是Netflix開源的服務註冊與發現框架,Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。 Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務登

Spring Cloud構建服務架構:服務註冊發現Eureka、Consul

Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。 Spring Cloud包含

Spring Cloud構建服務架構:服務註冊發現Eureka

1. Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了

Spring Cloud 基於Spring Boot 2.x的服務註冊發現Eureka

一.Spring Cloud 簡介        Spring Cloud為開發人員提供了快速構建分散式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智慧路由,微代理,控制匯流排,一次性令牌,全域性鎖定,領導選舉,分散式 會話,群集狀態)。 分散式系統的協調導致鍋

Spring Cloud 服務註冊發現

簡介: Spring Cloud是一個基於Spring Boot實現雲應用的開發工具。Spring Cloud 是Pivotal提供的用於簡化分散式系統構建的工具集。Spring Cloud引入了雲平 臺聯結器(Cloud Connector)和服務

Spring Cloud學習---服務註冊發現Eureka

本博目錄: 一、 服務註冊與發現簡介 如何使用Spring Cloud搭建服務註冊與發現模組。 這裡我們會用到Spring Cloud Netflix,該專案是Spring Cloud的子專案之一,Eureka是Spring Cloud N

spring clould(一)服務註冊發現Eureka

前言 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具。Spring cloud包含了很多子專案,用於解決我們服務開發中需要對面的問題,比如服務叢集、服務發現、斷路器、智慧路由。 本次開發專案中是用Spring Cloud Eureka實現在服務治理。

SpringCloud進擊 | 一淺出:服務註冊發現Eureka【Finchley版本】

1.前言 Spring Cloud 已經幫我們實現了服務註冊中心,我們只需要很簡單的幾個步驟就可以完成。關於理論知識,我想大家都已經有不同程度上的瞭解和認識,這裡,我們最後再進行總結。本系列 Spring Cloud 介紹基於 Spring Boot 2.0.5 版本和 Spring C

關於SpringCloud服務雲架構構建B2B2C電子商務平臺分析:服務註冊發現Eureka、Consul

Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。 Spring

SpringCloud教程一:服務註冊發現Eureka

Spring CloudSpring Cloud為開發人員提供了快速構建分散式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智慧路由,微代理,控制匯流排)。分散式系統的協調導致了樣板模式,

.NET服務從0到1:服務註冊發現Consul

[toc] # Consul搭建 ## 基於Docker搭建Consul *以下為單機環境構建指令碼,用於本機測試,生產環境中應當進行叢集搭建* ```yml version: '3' services: consul: image: consul:1.7.1 container_name

.Net Core服務入門全紀錄——Consul-服務註冊發現

# 前言 上一篇【[.Net Core微服務入門全紀錄(一)——專案搭建](https://www.cnblogs.com/xhznl/p/13071260.html)】講到要做到服務的靈活伸縮,那麼需要有一種機制來實現它,這個機制就是服務註冊與發現。當然這也並不是必要的,如果你的服務例項很少,並且很穩定,那

.Net Core服務入門全紀錄——Consul-服務註冊發現

# 前言 上一篇【[.Net Core微服務入門全紀錄(二)——Consul-服務註冊與發現(上)](https://www.cnblogs.com/xhznl/p/13091750.html)】已經成功將我們的服務註冊到Consul中,接下來就該客戶端通過Consul去做服務發現了。 # 服務發現 - 同

4--SpringCloud搭建高可用的服務註冊中心 1--SpringCloud的服務註冊發現Eureka 1--SpringCloud的服務註冊發現Eureka 1--SpringCloud的服務註冊發現Eureka

  我們已經介紹了1--SpringCloud的服務註冊與發現Eureka,其中,主要演示瞭如何構建和啟動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,但是在之前的示例中,這個服務註冊中心是單點的,顯然這並不適合應用於線上生產環境,那麼下面在前文的基礎上,我們來看看

Spring Cloud服務註冊發現 Eureka【Finchley 版】

LEDE .com Go eureka clean 英文逗號 開始 效果 sam Spring Cloud(二):服務註冊與發現 Eureka【Finchley 版】 發表於 2018-04-15 | 更新於 2018-05-07 | 上一篇主要介紹了相關理論,這一

Spring Cloud (1) 服務註冊發現Eureka

我們 enable 微服務 啟動 分布式系 source string 新建 系統 Spring Cloud簡介   Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理