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

完整代码:

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

启动服务

原文地址:https://www.cnblogs.com/amberbar/p/10995395.html

时间: 2024-07-30 20:36:20

spring cloud(Greenwich SR)- Eureka的相关文章

Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】

Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin[Finchley 版] 发表于 2018-04-24 | 随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药.于是就有了分布式系统调用跟踪的诞生. 现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文<Dapper, a Larg

跟我学Spring Cloud(Finchley版)-07-Ribbon入门

经过前文讲述,我们已经实现了服务发现.本节来解决 跟我学Spring Cloud(Finchley版)-02-构建分布式应用 提到的如下问题: 负载均衡如何考虑?难道得在电影微服务和用户微服务之间加个NGINX做负载均衡吗?听起来是可行的,但如果有10000+服务(这并不夸张,我司的微服务数目是这个数字乘以N,N >= m,哈哈哈)那这个NGINX的配置得有多复杂-- 一般来说,提到负载均衡,大家一般很容易想到浏览器 -> NGINX -> 反向代理多个Tomcat这样的架构图--业界管

跟我学Spring Cloud(Finchley版)-17-Zuul路由配置详解

上一节( 跟我学Spring Cloud(Finchley版)-16-Zuul )中,已经实现用Zuul转发到Eureka上的微服务.默认的路由规则是:访问$ZUUL_URL/指定为服务/** 会被转发到指定微服务 的/** . 但在实际项目中,往往需要自己定义路由规则,Zuul的路由配置非常灵活.简单,本节详细讲解Zuul的路由配置. 一.自定义指定微服务的访问路径 配置zuul.routes.指定微服务的serviceId = 指定路径 即可.例如: zuul: routes: micros

跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式. 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统.服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性.Hystrix主要通过以下几点实现延迟和容错. 包裹请求 使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行.这使用到了设计模式中的"命令模式". 跳闸机制 当某服务的错误率超过一定阈值时,Hystrix可以自动或者手

跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-Git仓库配置详解 原

在跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一节中,已实现使用Git仓库作为Config Server的后端存储,本节详细探讨如何配置Git仓库. 一.占位符支持 Config Server的占位符支持{application}.{profile}和{label}. 示例: server: port: 8080 spring: application: name: microservice-config-server cloud

跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-

在跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一节中,已实现使用Git仓库作为Config Server的后端存储,本节详细探讨如何配置Git仓库. 一.占位符支持 Config Server的占位符支持{application}.{profile}和{label}. 示例: server: port: 8080 spring: application: name: microservice-config-server cloud

Spring Cloud(Alibaba版)序言

一.为什么会出现Spring Cloud Alibaba 什么是维护模式? 将模式置于维护模式,意味着 Spring Cloud 团队将不会再向模块添加新功能了.我们将修复 block 级别的 bug 以及安全问题,我们也会考虑并审查社区的小型 pull request.我们打算继续支持这些模块,直到Greenwich版本被普遍采用至少一年. Spring Cloud Netflix 项目进入了维护模式: 维护链接:https://spring.io/blog/2018/12/12/spring

跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Co

经过前文讲解,至此,微服务架构已经日趋完善--现在已经可以做一个大型的应用了!然而,随着项目的迭代,微服务数目往往与日俱增,如何高效地管理配置成为我们必须解决的问题.本节来讨论如何使用Spring Cloud Config管理配置. 为什么要使用配置中心 集中管理配置.一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此集中管理配置是非常有必要的: 不同环境,不同配置.例如,数据源配置在不同的环境(开发.测试.预发布.生产等)中是不同的: 运行期间可动态调整.例如,我们可根据各个微服务的

Spring Cloud(四):服务容错保护 Hystrix【Finchley 版】

Spring Cloud(四):服务容错保护 Hystrix[Finchley 版] 发表于 2018-04-15 |  更新于 2018-05-07 | 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况,这种现象被称为服务雪崩效应.为了应对服务雪崩,一种常见的做法是手动服务降级.而 Hystrix 的出现,给我们提供了另一种选择. Hystrix [h?st'r?ks] 的中文含义是 "豪猪",豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与 Hy