springcloud之註冊中心eureka

簡介

Spring Cloud是目前用於開發微服務的主流框架之一,咱們都知道在微服務架構中最爲基礎、核心的模塊,就是服務註冊與發現。git

在Spring Cloud裏咱們可使用它的Eureka模塊來實現服務註冊與發現,Spring Cloud Eureka是基於Netflix Eureka作了二次封裝,它主要負責完成各個微服務實例的自動化註冊和發現功能。算法

Eureka包含兩個組件:Eureka Server和Eureka Clientspring

Eureka Server提供服務註冊服務,各個節點啓動後,會在EurekaServer中進行註冊,這樣EurekaServer中的服務註冊表中將會存儲全部可用服務節點的信息,服務節點的信息能夠在界面中直觀的看到架構

EurekaClient是一個Java客戶端,用於簡化Eureka Server的交互,客戶端同時也具有一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。在應用啓動後,將會向Eureka Server發送心跳(默認週期爲30秒)。若是Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,EurekaServer將會從服務註冊表中把這個服務節點移除(默認90秒) 在這裏插入圖片描述app

構建與部署

eureka server

一、單點部署 若是是idea,能夠直接直接new project >> springinitializr >> cloud discovery 在這裏插入圖片描述 按着步驟操做,就能夠搭建一個單點eureka server負載均衡

二、集羣部署 通常生產環境都是三個或以上節點,集羣中的每一個節點也是把本身當一個提供者相互註冊 在這裏插入圖片描述 application.yml配置以下框架

server:
  port: 8761

spring:
  application:
    name: eureka
  profiles:
    active: dev
  security:
    basic:
      enabled: false # 啓用身份認證
    user:
      name: lipeng # 定義用戶名
      password: lipeng. # 定義密碼

---
spring:
  profiles: prd-1

eureka:
  instance:
    hostname: register1
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.166
  server:  #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

---
spring:
  profiles: prd-2

eureka:
  instance:
    hostname: register2
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.171
  server:  #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

---
spring:
  profiles: prd-3

eureka:
  instance:
    hostname: register3
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.167
  server:  #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

打包後部署時在啓動命令中增長 --spring.profile.active=prd-1/prd-2/prd-3 啓動後以下:在這裏插入圖片描述 在這裏插入圖片描述 這樣纔算部署成功,若是上面兩個節點是在unavailable-replicas中則是沒有成功的。ide

k8s中集成eureka

通常是不建議在k8s中使用eureka,不過有時候若是須要的話,則部署時最好填寫域名。設置該變量就行 在這裏插入圖片描述微服務

eureka client

這個就比較簡單了,網上有不少例子 pom依賴fetch

<!--註冊中心-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

增長註解 在這裏插入圖片描述 yml配置

spring:
  profiles: dev
eureka:
  instance:
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 20
    hostname: ${spring.application.name}
  client:
    serviceUrl:
      defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/
    registry-fetch-interval-seconds: 10

實際上defaultZone只須要配置一個節點,其餘節點也會自動同步。 啓動服務就能夠看到 在這裏插入圖片描述

詳細代碼見:https://gitee.com/lpxs/lp-springcloud.git,上面的是配置中心的部署demo。

相關文章
相關標籤/搜索