微服务架构之spring cloud eureka

  Spring Cloud Eureka是spring cloud的核心组件,负责服务治理功能,起到中心枢纽作用,其它组件都依赖eureka来获取服务,然后再根据项目需求实现自己的业务,eureka在整个微服务架构中的位置绝对是核心地位。

(一)   版本说明

  a)         Spring boot   2.0.6.RELEASE

  b)        Spring cloud  Finchley.SR2

  c)         Java version   1.8

(二)   项目设置

  1. Pom文件

    

<dependency>

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

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

    <version>2.0.2.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-actuator</artifactId>

</dependency>
  1. application.yml配置文件

    

spring:

  profiles:

    active: test-1001

  application:

    name: discover-services

eureka:

  datacenter: ctm

  instance:

  environment: dev

  server:

  client:

management:

  endpoints:

    web.exposure.include: "*"

  endpoint:

    health:

      show-details: ALWAYS

---

server:

  port: 1001

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1002/eureka/,http://${eureka.instance.hostname}:1003/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

spring:

  profiles: test-1001

---

server:

  port: 1002

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1003/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

spring:

  profiles: test-1002

---

server:

  port: 1003

eureka:

  server:

    enable-self-preservation: false

    eviction-interval-timer-in-ms: 60000

    renewal-percent-threshold: 0.85

  instance:

    hostname: ${eureka.instance.ip-address}

    prefer-ip-address: true

    ip-address: 192.168.1.129

    lease-renewal-interval-in-seconds: 10

    lease-expiration-duration-in-seconds: 30

    instance-id: ${eureka.instance.ip-address}:${server.port}

  client:

    service-url:

      defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1002/eureka/

    register-with-eureka: true

    fetch-registry: true

    healthcheck:

      enabled: true

spring:

  profiles: test-1003
  1. 主要参数说明

    a)         spring.profiles.active     设置当前使用的配置项,一般多配置场景下使用,这里为了eureka高可用,设置了3个实例,在运行实例的时候,可以动态设置。

    b)        spring.application.name 项目名称

    c)         server.port     运行端口号

    d)        eureka.server.enable-self-preservation 是否启用自我保护功能,该功能默认是启用,但为了快速的响应服务的上下线,一般在开发环境把自我保护功能禁用

    e)         client.client.service-url.defaultZone    服务注册中心地址,这里是交叉设置3个服务自理实例

    f)          client.instance.lease-renewal-interval-in-seconds   发送心跳的频率

    g)        client.instance.lease-expiration-duration-in-seconds      失效间隔,这个主要是判断客户端还活着,一般设置为client.instance.lease-renewal-interval-in-seconds的3倍。

    h)        其它参数说明可以参考官方说明,需要说明的是spring cloud 每次版本迭代都有配置参数的变更,最好是参考相对应的版本参数说明

(三)   项目运行

  1. 环境设置

修改/etc/hosts 文件,添加如下设置

127.0.0.1 server1

127.0.0.1 server2

127.0.0.1 server3

  1. 项目运行

      

sudo docker run --name discoverservice-1001 -d -p 1001:1001 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server2:1002/eureka/,http://server3:1003/eureka/  --eureka.instance.hostname=server1 --eureka.instance.ip-address=server1 --spring.profiles.active=dev-1001 -Xms128m -Xmx512m" discoverservice/discoverservice

sudo docker run --link discoverservice-1001:server1 --name discoverservice-1002 -d -p 1002:1002 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server3:1003/eureka/  --eureka.instance.hostname=server2 --eureka.instance.ip-address=server2 --spring.profiles.active=dev-1002 -Xms128m -Xmx512m" discoverservice/discoverservice

sudo docker run --link discoverservice-1002:server2 --link discoverservice-1001:server1  --name discoverservice-1003 -d -p 1003:1003 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server2:1002/eureka/  --eureka.instance.hostname=server3 --eureka.instance.ip-address=server3 --spring.profiles.active=dev-1003 -Xms128m -Xmx512m" discoverservice/discoverservice

我这里是docker运行,运行后,可以查看运行效果

   

  1. 在浏览器中输入你的主机的IP:端口号,就可以看到eureka服务自理的运行界面如下图所示

   

  a)         可以看到3个服务都在运行,其实你可以访问3个端口的任何一个,都可以看到该效果,同时该界面也显示了一些环境信息,比如有效内存、已经运行的时长 等等。

  b)        关于docker镜像生成、docker 私有仓库请翻阅我以前的文章。

  这样spring cloud eureka服务自理就介绍完了,如果在开发中遇到问题,也可以留言共同探讨共同进步。

原文地址:https://www.cnblogs.com/lzh-boy/p/10367555.html

时间: 2024-10-29 03:40:53

微服务架构之spring cloud eureka的相关文章

微服务架构之spring cloud 介绍

在当前的软件开发行业中,尤其是互联网,微服务是非常炽热的一个词语,市面上已经有一些成型的微服务框架来帮助开发者简化开发工作量,但spring cloud 绝对占有一席之地,不管你是否为java开发,大部分都应该听说过,因为他实现了微服务所必备的功能. Spring cloud总体概览,这是我用了近3个小时的成果,也是实际项目的总结. a)         Spring cloud gateway 是网关,起到总管的作用,也是终端调用服务的第一道门槛,统一的入口. b)        Spring

微服务:整合 Spring cloud Eureka - 服务治理机制

一.简介 在体验了Spring Cloud Eureka 通过简单的注解配置就能实现强大的服务治理功能之后,我们可以进一步了解一些Eureka基础架构中各个元素之间的通信行为,以此来更加深入的理解Eureka服务治理体系是如何运转起来的. 二.微服务基础架构拓扑图 1.“Eureka Server 服务注册中心-1” 和 “Eureka Server 服务注册中心-2” ,他们相互注册成为高可用集群. 2.服务提供者启动两个实例,一个注册到“Eureka Server 服务注册中心-1” 上,另

【微服务架构】Spring Cloud之Hystrix(三)

一.雪崩效应 在微服务架构中,由于服务和服务之间可以互相调用,一项工作的完成可能会依赖调用多个微服务模块,但由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪:再加上服务和服务之间的依赖性,瘫痪会迅速传播,给整个微服务系统造成严重的后果,这就是服务故障的“血崩”效应. 服务雪崩效应形成的阶段 1.服务提供者不可用 硬件故障.硬件损坏导致服务器主机宕机,或网络硬件

微服务架构之spring cloud turbine

在前面介绍了spring cloud hystrix及其hystrix dashboard,但都是对单个项目的监控,对于一个为项目而言,必定有很多微服务,一个一个去看非常的不方便,如果有一个能集中熔断器监控的地方就完美了,spring cloud turbine 就实现了这样的功能,这篇文章就来介绍spring cloud turbine. (一) 版本说明 a) Spring boot 2.0.6.RELEASE b) Spring cloud Finchley.SR2 c) Java ver

微服务架构之spring cloud hystrix&amp;hystrix dashboard

在前面介绍spring cloud feign中我们已经使用过hystrix,只是没有介绍,spring cloud hystrix在spring cloud中起到保护微服务的作用,不会让发生的异常无边界的蔓延下去,很像我们电路中的保险设置,有超压或者线路有问题就即时的断开,保护用电设备不被损坏,这篇文章就来介绍spring cloud hystrix及其hystrix dashboard. (一) 版本说明 a) Spring boot 2.0.6.RELEASE b) Spring clou

微服务架构之spring cloud gateway

Spring Cloud Gateway是spring cloud中起着非常重要的作用,是终端调用服务的入口,同时也是项目中每个服务对外暴露的统一口径,我们可以在网关中实现路径映射.权限验证.负载均衡.服务聚合等业务功能. (一) 版本说明 a) Spring boot 2.0.6.RELEASE b) Spring cloud Finchley.SR2 c) Java version 1.8 d) spring-cloud-starter-gateway 2.0.2.RELEASE (二) 项

微服务架构之spring cloud feign

在spring cloud ribbon中我们用RestTemplate实现了服务调用,可以看到我们还是需要配置服务名称,调用的方法 等等,其实spring cloud提供了更优雅的服务调用方式,就是这篇文章要讲解的spring cloud feign,feign内部已经集成了ribbon,所以不用再单独引用,只需要引用spring cloud feign即可. (一) 版本说明 a) Spring boot 2.0.6.RELEASE b) Spring cloud Finchley.SR2

微服务为什么选Spring Cloud?

前言现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性.同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚--Spring Cloud.这是序篇,主要讲述我们为什么选择Spring Cloud和它的技术概览. 1.为什么微服务架构需要Spring Cloud 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB),并且强调DevOps和快速演化.这

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka 什么是服务治理 服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现. 为什么需要服务治理模块 在最初构建微服务系统的时候可能服务并不多,我们可以通过做一些静态配置来完成服务调用 此时看着一切都还正常. 随着项目逐渐接近尾声,维护人员需要维护的服务越来越多,越来越复杂,最终形成大量的配置文件,维护将会变得越来越困难.此时,微服务应用实例自动化管理框架变得