一、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. redhat 7.x 的防火墙软件firewall 介绍

    zone 的概念.firewall 一般有9个zone ,配置文件都在 /usr/lib/firewalld/zones/ 里面. 系统的配置文件目录就在 /usr/lib/firewalld 这个目 ...

  2. 开发属于自己的包,并上传到npm上

    1.DIY开发包 1.1符合标准的包结构 一个规范的包,它的组成结构,必须符合以下3点要求: 包必须以单独的目录而存在 包的顶级目录下,必须包含package.json这个包管理文件 package. ...

  3. C语言图书管理借阅系统——ncurses库的使用

    一.前言 作为一只大四狗,最近还跟着大二同学修了一门课(当然不是之前没通过啦),课程是高级语言课程设计,高级语言指的是C语言 :),内容是做一个XX管理系统,我选择了图书管理系统,先介绍下我做的系统: ...

  4. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」帮你梳理RocketMQ或Kafka的选择理由以及二者PK

    前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ.Kafka.RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知 ...

  5. Salesforce Consumer Goods Cloud 浅谈篇一之基础介绍

    本篇参考: https://baike.baidu.com/item/%E6%B6%88%E8%B4%B9%E5%93%81/425802?fr=aladdin https://help.salesf ...

  6. [第二章]c++学习笔记5(构造函数和析构函数调用时机)

    示例函数 注:输出并不一定从main函数开始,如全局对象的初始化在main函数前执行,如构造函数中存在输出,则从构造函数的输出开始 此处6被类型转换构造函数的存在转换为临时对象赋值,而在这个过程结束后 ...

  7. 如何用webgl(three.js)搭建一个3D库房,3D密集架,3D档案室(升级版)

    很长一段时间没有写3D库房,3D密集架相关的效果文章了,刚好最近有相关项目落地,索性总结一下 与之前我写的3D库房密集架文章<如何用webgl(three.js)搭建一个3D库房,3D密集架,3 ...

  8. java开发环境搭建,配置

    java开发环境搭建 下载jdk8的地址 是oracle的 安装JDK 下载电脑对应的版本 双击安装JDK 记住安装路径 配置环境变量 我的电脑/此电脑 右键属性 高级设置 环境变量 点击新建 变量名 ...

  9. 【Linux】解压分卷压缩的zip文件

    例如linux.zip.001, linux.zip.002, linux.zip.003. 1. cat linux.zip* > linux.zip #合并为一个zip包. 2. unzip ...

  10. 在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装

    简介 从 Gitlab 8.0 开始,Gitlab CI 就已经集成在 Gitlab 中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成.在介绍 ...