一、euerka的基本知识

1. 服务治理

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理

在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,

管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,

可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

2. 服务注册

Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。

这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息

比如:服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),

以该别名的方式去注册中心上获取到实际的服务通讯地址,

然后再实现本地RPC调用RPC远程调用框架核心设计思想:

在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。

在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

3. Eureka包含两个组件:Eureka Server和Eureka Client

Eureka Server提供服务注册服务

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,

这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,

服务节点的信息可以在界面中直观看到。

EurekaClient通过注册中心进行访问

是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、

使用轮询(round-robin)负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。

如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,

EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

二、euerka的Server端以及单机集群的相关配置

  • 启动类

    在启动类上添加注解:

    @EnableEurekaServer  // 标明该服务是euerka的一个服务注册中心
    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) // 避免加载数据库报错
  • 配置文件:使用yml配置文件

    server:
    port: 7000 eureka:
    instance:
    hostname: eureka7000 # eureka服务端的实例名称
    client:
    register-with-eureka: false # false表示不向注册中心注册自己。
    fetch-registry: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
    # 集群配置,指向其他euerka
    defaultZone: http://eureka7001:7001/eureka/
    # 单机配置
    # defaultZone: http://eureka7000:7000/eureka/ # server:
    # 关闭自我保护机制,保证不可用服务被及时踢除
    # enable-self-preservation: false
    # eviction-interval-timer-in-ms: 2000

三、euerka的client端以及单机集群的相关配置

  • 启动类

    @EnableEurekaClient 	// 标明将该服务注册到euerka注册中心
  • 配置文件:yml配置文件

server:
port: 8000 # 端口号 spring:
application:
name: payment # 服务名
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包
url: jdbc:mysql://127.0.0.1:3306/spring-cloud?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root # 用户名
password: root # 密码 eureka:
client:
# 表示是否将自己注册进EurekaServer默认为true。
register-with-eureka: true
# 是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
# 单机版
# defaultZone: http://localhost:7000/eureka
# 集群版
defaultZone: http://eureka7000:7000/eureka,http://eureka7001:7001/eureka
instance:
instance-id: payment8000 # euerka注册中心中显示的实例名
# 访问路径可以显示IP地址
prefer-ip-address: true
#Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
#lease-renewal-interval-in-seconds: 1
#Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
#lease-expiration-duration-in-seconds: 2 mybatis-plus:
mapperLocations: classpath:com/kl/payment/mapper/xml/*.xml # 扫描xml文件

四、euerka的自我保护机制

当某些服务发送的心跳数没有按照设定的时间间隔正常返回时,euerka会触发自我保护机制。

开启保护机制的情况下euerka不会立即将对应的服务下线,而是认为该服务可能出现了例如网络延时

这样的问题,只要在到达强制下线的时间才会将服务正式下线。

默认心跳时间:30秒一次

默认强制下线时间:90秒

  • 配置文件中的具体配置

    eureka:
    instance:
    # Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1 # 可以根据具体场景进行修改
    # Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 10 # 可以根据具体场景进行修改

五、服务发现

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

  • 主启动类

    @EnableDiscoveryClient    // 服务发现
  • 需要用的到controller、service直接注入

    @Autowired
    private DiscoveryClient discoveryClient;
    // 调用例子
    @GetMapping(value = "/payment/discovery")
    public Object discovery(){
    List<String> services = discoveryClient.getServices();
    for (String element : services) {
    System.out.println(element);
    } List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
    for (ServiceInstance element : instances) {
    System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
    + element.getUri());
    }
    return this.discoveryClient;
    }

六、 actuator微服务信息完善

  • 主机名称:服务名称修改、访问信息有IP信息提示

    eureka:
    instance:
    # 服务名称
    instance-id: payment8000
    # 访问路径可以显示IP地址
    prefer-ip-address: true
  • 服务健康检查

    检查服务order

    浏览器输入 http://IP:端口号/actuator/health,显示 status : "UP" 说明服务正常

euerka总结的更多相关文章

  1. Euerka环境搭建

    机器环境 windows10,IntelliJ IDEA 配置host 单节点Eureka 一.pom文件 <?xml version="1.0" encoding=&quo ...

  2. Consul etcd ZooKeeper euerka 对比

    这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,kee ...

  3. Refit在ASP.NET Core中的实践

    前言 声名式服务调用,己经不算是一个新鲜的话题了,毕竟都出来好些年了. 下面谈谈,最近项目中用到一个这样的组件的简单实践. 目前部分项目用到的是Refit这个组件,都是配合HttpClientFact ...

  4. 项目笔记:2018年4月(SpringCloud架构和SpringBoot框架)

    一.启动Euerka服务 1.在启动类里用@propertySource引入全局配置文件noteapp-service.properties: 如上图.左侧为某服务配置文件properties,右侧为 ...

  5. springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解

    在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件, ...

  6. 【三】Eureka服务注册与发现

    1.是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于 REST 服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构来说是非常 ...

  7. 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?

    今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...

  8. (转)Spring Cloud(一)

    (二期)22.微服务框架spring cloud(一) [课程22]spirng c...简介.xmind54KB [课程22]spirng cl...架构.xmind0.5MB [课程22]负载均. ...

  9. 服务注册发现consul之三:服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka

    这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,kee ...

随机推荐

  1. 并发编程从零开始(十二)-Lock与Condition

    并发编程从零开始(十二)-Lock与Condition 8 Lock与Condition 8.1 互斥锁 8.1.1 锁的可重入性 "可重入锁"是指当一个线程调用 object.l ...

  2. 写一段java程序来执行linux命令

    摘要 在日常开发中,程序员需要经常查询服务器日志来排查问题和调试程序.如果是本地调试还好,但项目一旦发布到服务器上,每次查日志就很麻烦,而且日志量巨大,有时我们无法找到我们需要的信息.经常需要借助第三 ...

  3. Jquery校验中国身份证号码是否正确

    在项目中使用表单时经常会涉及到身份证号码是否正确的校验,下面看看应该中国二代身份证号码应该怎么用Jquery校验呢? 二代身份证校验码的计算方法 二代身份证由17位数字和一位校验码组成,那么校验方法是 ...

  4. std::string类详解

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至 ...

  5. Swift-技巧(三)使用元组(tuple)

    最近看 iOS 的官方功能的 Demo 时,发现代码中使用元组的地方很多,所以兴趣上来,查了下元组的出处. 在苹果的文档中就只有简短的两句,使用元组创建一个组合的值,从函数中返回多个值.元组中的可以使 ...

  6. 启用MFA的office 365 账号如何连接Exchange online

    第一篇随手笔记,从简单开始... 如何使用Exchange Online PowerShell呢? 以Windows操作系统为例,如Windows10:首先需要安装Exchange Online Po ...

  7. idea查看方法在哪里被调用

    方法一 选中方法名,右键选择Find Usages 方法二 选中方法快捷键ctrl + alt + h查看Hierarchy Callers

  8. Linux usb 4. Device 详解

    文章目录 1. 简介 2. Platform Layer 2.1 Platform Device 2.2 Platform Driver 3. UDC/Gadget Layer 3.1 Gadget ...

  9. vscode输出窗口中文乱码

    解决方法:开始->设置->时间和语言->其他日期.时间和区域设置->区域.更改位置->管理.更改系统区域设置->勾选->重启 完美解决!来源:https:// ...

  10. Java学习(十五)

    下棋又被暴打 所以心态有点爆炸,学完习又去打云顶,忘记写博客了... 所以今天也有点水了,这下棋真是搞崩我心态了. Java学了函数重载 大概的要点在这 还有Web的学习,否定伪类. 如 p:not( ...