euerka总结
一、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总结的更多相关文章
- Euerka环境搭建
机器环境 windows10,IntelliJ IDEA 配置host 单节点Eureka 一.pom文件 <?xml version="1.0" encoding=&quo ...
- Consul etcd ZooKeeper euerka 对比
这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,kee ...
- Refit在ASP.NET Core中的实践
前言 声名式服务调用,己经不算是一个新鲜的话题了,毕竟都出来好些年了. 下面谈谈,最近项目中用到一个这样的组件的简单实践. 目前部分项目用到的是Refit这个组件,都是配合HttpClientFact ...
- 项目笔记:2018年4月(SpringCloud架构和SpringBoot框架)
一.启动Euerka服务 1.在启动类里用@propertySource引入全局配置文件noteapp-service.properties: 如上图.左侧为某服务配置文件properties,右侧为 ...
- springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解
在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件, ...
- 【三】Eureka服务注册与发现
1.是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于 REST 服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构来说是非常 ...
- 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?
今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...
- (转)Spring Cloud(一)
(二期)22.微服务框架spring cloud(一) [课程22]spirng c...简介.xmind54KB [课程22]spirng cl...架构.xmind0.5MB [课程22]负载均. ...
- 服务注册发现consul之三:服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,kee ...
随机推荐
- redhat 7.x 的防火墙软件firewall 介绍
zone 的概念.firewall 一般有9个zone ,配置文件都在 /usr/lib/firewalld/zones/ 里面. 系统的配置文件目录就在 /usr/lib/firewalld 这个目 ...
- 开发属于自己的包,并上传到npm上
1.DIY开发包 1.1符合标准的包结构 一个规范的包,它的组成结构,必须符合以下3点要求: 包必须以单独的目录而存在 包的顶级目录下,必须包含package.json这个包管理文件 package. ...
- C语言图书管理借阅系统——ncurses库的使用
一.前言 作为一只大四狗,最近还跟着大二同学修了一门课(当然不是之前没通过啦),课程是高级语言课程设计,高级语言指的是C语言 :),内容是做一个XX管理系统,我选择了图书管理系统,先介绍下我做的系统: ...
- 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」帮你梳理RocketMQ或Kafka的选择理由以及二者PK
前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ.Kafka.RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知 ...
- Salesforce Consumer Goods Cloud 浅谈篇一之基础介绍
本篇参考: https://baike.baidu.com/item/%E6%B6%88%E8%B4%B9%E5%93%81/425802?fr=aladdin https://help.salesf ...
- [第二章]c++学习笔记5(构造函数和析构函数调用时机)
示例函数 注:输出并不一定从main函数开始,如全局对象的初始化在main函数前执行,如构造函数中存在输出,则从构造函数的输出开始 此处6被类型转换构造函数的存在转换为临时对象赋值,而在这个过程结束后 ...
- 如何用webgl(three.js)搭建一个3D库房,3D密集架,3D档案室(升级版)
很长一段时间没有写3D库房,3D密集架相关的效果文章了,刚好最近有相关项目落地,索性总结一下 与之前我写的3D库房密集架文章<如何用webgl(three.js)搭建一个3D库房,3D密集架,3 ...
- java开发环境搭建,配置
java开发环境搭建 下载jdk8的地址 是oracle的 安装JDK 下载电脑对应的版本 双击安装JDK 记住安装路径 配置环境变量 我的电脑/此电脑 右键属性 高级设置 环境变量 点击新建 变量名 ...
- 【Linux】解压分卷压缩的zip文件
例如linux.zip.001, linux.zip.002, linux.zip.003. 1. cat linux.zip* > linux.zip #合并为一个zip包. 2. unzip ...
- 在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装
简介 从 Gitlab 8.0 开始,Gitlab CI 就已经集成在 Gitlab 中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成.在介绍 ...