spring cloud(Greenwich SR)- Eureka


spring cloud study

本次學習基於spring cloud Greenwich SR1 版本

學習要點:

Spring Boot/Spring Cloud應用開發套路

  • 加依賴
  • 加注解
  • 寫配置

Eureka (服務注冊與發現)

Eureka是Netflix開源的服務發現組件,本身是一個基於REST的服務,包含Server和Client兩部分,Spring Cloud將它集成在子項目Spring Cloud Netflix中

Eureka Server (快速入門)

遵循開發套路

  • 添加依賴
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

  • 添加注解 @EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer 
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
server:
  port: 8001

spring:
  application:
    name: microservice-discovery-eureka

eureka:
  client:
    service-url:
      #erueka server的地址,記住/eureka不要掉了
      defaultZone: http://localhost:8001/eureka
    # 是否從eureka server注冊,這里我們選擇false
    fetch-registry: false
    # 是否從eureka server 中拉取服務
    register-with-eureka: false

啟動項目,訪問http://localhost:8001/

Eureka Client

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
@SpringBootApplication
@EnableDiscoveryClient
public class ProvideApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProvideApplication.class, args);
    }
}

在Greenwich SR1版本中可以省略@EnableEurekaClient和@EnableDiscoveryClient注解,但為了養成好習慣,建議加上相應注解

@EnableDiscoveryClient: 可以配合不同的服務發現server 使用
@EnableEurekaClient: 只能配合 Eureka server 使用
server:
  port: 9001
spring:
  application:
    name: microservice-provide-user
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cloud-study?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowMultiQueries=true
    username: root
    password: root
    jpa:
      hibernate:
        ddl-auto: update
      show-sql: true


eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/
  instance:
   # 是否顯示ip,如果不設置那么就會顯示主機名,默認false
    prefer-ip-address: true

啟動項目,可以發現項目已經被注冊進eureka

生產者注冊進eureka

完整代碼:

microservice-discovery-eureka

microservice-provide-user

eureka 深入

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

  • Eureka Server負責提供服務發現的能力,各個微服務啟動時,會向Eureka Server注冊自己的信息(例如IP、端口、微服務名稱等)
  • Eureka Client是一個Java客戶端,可以與EurekaServer交互
  • client啟動后,會周期性的像server發送心跳,默認情況下 30s,如果server在一定時間內沒有收到client的心跳,那么server會注銷實例90s
  • Eureka Server遵循CAP原則,符合AP。eureka集群中每個節點之間都是平等狀態。如果一個節點宕機,不會進行選舉。因此可以很有效的保證可用性

搭建erueka集群

在host中添加
127.0.0.1 peer1 peer2
可以再microservice-discovery-eureka 的基礎上修改application.yml

spring:
  application:
    name: microservice-discovery-eureka-cluster
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8002/eureka/,http://peer1:8003/eureka/
---
spring:
  profiles: peer1
server:
  port: 8002
eureka:
  instance:
    hostname: peer1
---
spring:
  profiles: peer2
server:
  port: 8003
eureka:
  instance:
    hostname: peer2

修改microservice-provide-userapplication.yml

server:
  port: 9002
spring:
  application:
    name: microservice-provide-user
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cloud-study?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowMultiQueries=true
    username: root
    password: root
    jpa:
      show-sql: true
eureka:
  client:
    service-url:
      defaultZone: http://peer1:8002/eureka/,http://peer2:8003/eureka/
  instance:
    prefer-ip-address: true

啟動服務
eureka集群


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM