springcloud之Eureka上
0 环境
系统环境:win10
编辑器:IDEA
1 注册中心
Eureka是springcloud中的注册中心。
原因:
当是单体应用 类似一条直线
随着项目越来越大 系统拆分 类似那个藕(模块间相互协作 调用) 为了解决服务之间的耦合 注册中心有必要出现了
2 Eureka构成
Eureka分为两部分:服务端和客户端,服务端就是注册中心,接收其他服务注册,客户端则是Java客户端,用来注册。 Eureka有三个角色:
Eureka Server:注册中心
Eureka Provider:服务提供者
Eureka Consumer:服务消费者
3 基础搭建
Eureka由Java开发的,springcloud使用springboot对Eureka进行了封装,使用方便。
1 对应的版本


2 创建一个springboot项目 添加Eureka依赖


2 yml配置 启动Eureka功能

# 给当前服务取一个名字
spring:
application:
name: eureka # 设置端口号
server:
port: 1234 # 默认情况下 Eureka Server也是一个普通的微服务 即当它是一个注册中心的时候 他有2种 1:注册中心 2:普通服务(把自己注册到自己的上面去)
# 比喻不形象 Server是一个结婚登记处 1:他是一个登记员 登记其他人的结婚信息 2:同时他也是人类的一员 他也可能结婚 那么自己登记自己老 也不是不可以 # register-with-eureka为false 表示不把当前项目注册到服务中心上
# fetch-registry为false 表示不从Eureka Server上获取注册信息
eureka:
client:
register-with-eureka: false
fetch-registry: false
3 启动项目
4 Eureka后台管理界面介绍

4 Eureka集群
注册中心使用之后 所有服务都要通过服务注册中心进行信息交换 服务注册中心的稳定性很重要 一旦注册中心崩了 整个系统都会受到影响 在实际使用中 Eureka一般是以集群的形式出现的 Eureka集群 多个Eureka实例的启动 多Eureka实例之间 相互注册、同步数据 共同组成一个Eureka集群
(你中有我 我中有你 互通有无)
1 全景

2 yml配置
# 给当前服务取一个名字
spring:
application:
name: eureka # 设置端口号
server:
port: # 默认情况下 Eureka Server也是一个普通的微服务 即当它是一个注册中心的时候 他有2种 :注册中心 :普通服务(把自己注册到自己的上面去)
# 比喻不形象 Server是一个结婚登记处 :他是一个登记员 登记其他人的结婚信息 :同时他也是人类的一员 他也可能结婚 那么自己登记自己老 也不是不可以 # register-with-eureka为false 表示不把当前项目注册到服务中心上
# fetch-registry为false 表示不从Eureka Server上获取注册信息
eureka:
client:
register-with-eureka: true
fetch-registry: true
# A服务要注册到B上面
service-url:
defaultZone: http://eurekaB:1235/eureka
instance:
hostname: eurekaA
# 给当前服务取一个名字
spring:
application:
name: eureka # 设置端口号
server:
port: # 默认情况下 Eureka Server也是一个普通的微服务 即当它是一个注册中心的时候 他有2种 :注册中心 :普通服务(把自己注册到自己的上面去)
# 比喻不形象 Server是一个结婚登记处 :他是一个登记员 登记其他人的结婚信息 :同时他也是人类的一员 他也可能结婚 那么自己登记自己老 也不是不可以 # register-with-eureka为false 表示不把当前项目注册到服务中心上
# fetch-registry为false 表示不从Eureka Server上获取注册信息
eureka:
client:
register-with-eureka: true
fetch-registry: true
# A服务要注册到B上面
service-url:
defaultZone: http://eurekaA:1234/eureka
instance:
hostname: eurekaB
3 打jar包


java jar xxxx.jar --spring.profiles.active=a
java jar xxxx.jar --spring.profiles.active=b
启动2个实例时 可能会报一些错 不影响使用 页面登陆不了 排除你自己哪里写的有问题了


启动成功后 确实是相互注册了 共建了一个集群
5 Eureka细节
Eureka分为Eureka Server和Eureka Client
1 Eureka Server
对外提供的功能:
(服务端的接收 发放 同步server端)
.服务注册(接收) 所有服务都注册到server端
.提供注册表(发放) 注册表将所有注册到服务上来的整理成一个列表 Eureka调用服务时 获取这个注册表 正常情况下 注册表会缓存下来 若缓存失效 直接获取最新的注册表
.同步状态 Eureka Client通过注册、心跳等机制 和Eureka Server同步当前客户端的状态
2 Eureka Client
Eureka Client很多事情帮你做了(自动拉取 更新以及缓存server信息 哪怕所有server节点凉了 client依旧能获取到想要的地址(但是地址可能不太准确)) 简化每个服务和server之间的交互
2.1 服务注册
服务提供者将自己注册到服务注册中心(server) 提示->服务提供者(业务划分上的划分) 本质上是Eureka Client 当Eureka Client向Eureka Server注册时 需要提供必要的元信息 比如IP地址 名称 运行状态 端口等。。。
2.2 服务续约
Eureka Client注册到Eureka Server上之后 注册成功后 Eureka Client每隔30s向Eureka发送一条心跳信息(告诉它我还活着) 若连续90s(连续3次没法送)有没有收到Eureka Client的续约消息 它会认为Client挂了 赶紧把client从服务列表撤销
eureka:
instance:
# 服务续约时间 默认为30s
lease-renewal-interval-in-seconds:
# 服务失效时间 默认为90s
lease-expiration-duration-in-seconds:
2.3 服务下线
当client下线时 发消息通知server我下线了
2.4 获取注册表信息
Eureka Client从Eureka Server上获取服务的注册信息 将其缓存在本地 本地客户端调用服务器 会从该信息中查找远程服务所对应的IP地址等信息 Eureka Client上缓存服务定期30s更新 若本地缓存注册表的信息与server传过来的信息有变化的话 Client会自动处理
eureka:
client
# 是否运行获取注册表信息
fetch-registry: true
# Client上缓存的服务注册信息 定期30s更新
registry-fetch-interval-seconds:
6 Eureka集群原理

在这个图上 Eureka通过Replicate进行数据同步 不同Eureka Server之间的节点地位均等 节点间集群的形成 通过置顶的serviceUrl相互注册 高可用节点的可用性得到提高 若集群中某个节点失效 client自动切换到其他server上(每个server节点相互同步) Eureka连接方式 不建议单线连接(->-> 此时1也会和3互相同步) 可以指定多个注册地址(这样配置serviceUrl -> ->) Eureka分区:
.region->地理上的不同区域
.zone->具体的机房
7 小结
.注册中心的出现解决了服务间的耦合 .Eureka三种角色 server(注册中心) client(provider(提供者) consumer(服务消费者) ) .Eureka搭建 引入依赖 在application上开启server服务 在yml中配置服务名 端口号。。。启动成功后 会显示系统状态 副本 注册上来的服务信息 系统运行环境 以及该的一些ip等基本信息 .eureka集群(类似互联网 离了你照转) 比如需要2个eureka yml配置 注 register-with-eureka: true fetch-registry: true 配置一个hostname serviceUrl->其他yml的(http://hostname:port/application name)
为了省事 打包运行 即可看到相互注册了 .eureka细节 server -> 对外提供3个功能:给予服务注册(接收) 提供注册表 便于client的调用 同步 判断client是否活着 活着才能同步 否则就被杀掉(无情)
client -> 特色:自动拉取 更新 缓存信息
服务注册:服务提供者将自己注册上去(业务划分出2个角色 本质是一个人) 注册时需要提供一些元信息 ip啥的(类似身份证 手机号啥的 证明你是你开玩笑的 好认识你和你交朋友)
服务续约:注册上来 噩梦刚开始 client向server30s续约(费)一次 告诉server别杀我 我还活着 server连续3次90s未接收到client消息 掉线了(类似在黑吧 当你时间到了 给你3次机会 你还没有付费 你个穷鬼 别站在茅坑不拉屎 赶紧下来) 就这样被server从服务列表中剔除了
服务下线:告诉server我下线了(老板 我下线了 我结一下帐)
获取注册表信息(消费者):从server上获取信息 缓存本地 更新操作 -> 根据信息比对是否进行更新处理
提供者:向server注册 提供自身的信息 以及与server心跳时间(存活)的约定 以及服务下线的功能
消费者:从server获取服务注册信息 并缓存 定期对比该服务信息进行更新处理 .集群
server每个节点地位平等 通过Replicate数据同步 serverUrl相当于拨号 节点相互之间的连接方式(某个节点崩溃怎么办) 脚踏"两"只船
springcloud之Eureka上的更多相关文章
- SpringCloud Netflix Eureka(服务注册/发现)
⒈Eureka是什么? Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务架构来 ...
- SpringCloud中eureka配置心跳和剔除下线的服务的时间
在默认的springCloud中eureka注册中心在服务下线时表现的非常不灵敏,用惯了dubbo的zk注册中心表示很不习惯,eureka设计的本意是在服务不会频繁上下线和网络稳定的内网,这种设计在生 ...
- springcloud(二) eureka的使用
上一节讲到order微服务是通过rest调用user微服务的地址.但是,user微服务的地址是写死的, 如果user微服务集群的话,那么order微服务该如何调用呢?这个时候注册中心该上场了 演示eu ...
- SpringCloud学习笔记(三、SpringCloud Netflix Eureka)
目录: 服务发现简介 SpringCloud Netflix Eureka应用 Eureka高可用 Eureka源码分析 >>> Eureka Client初始化(客户端定时获取服务 ...
- SpringCloud之Eureka注册中心原理及其搭建
一.Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCl ...
- springCloud 之 Eureka注册中心高可用配置
springCloud的eureka高可用配置方案思路是:几个服务中心之间相互注册,比如两个注册中心,A注册到B上,B注册到A上,如果是三个注册中心则是:A注册到BC上,B注册到AC上,C注册到AB上 ...
- 【分布式】SpringCloud(3)--Eureka服务注册与发现
1.Eureka概述 1.1.什么是Eureka Eureka是Netflix的一个子模块.基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 只需要使用服务的标识符,就可以访问到 ...
- springcloud优雅停止上下线与熔断
SpringCloud 服务优雅上下线 Spring Boot 框架使用"约定大于配置"的特性,优雅流畅的开发过程,应用部署启动方式也很优雅.但是我们通常使用的停止应用的方式是 k ...
- SpringCloud创建Eureka模块集群
1.说明 本文详细介绍Spring Cloud创建Eureka模块集群的方法, 基于已经创建好的Spring Cloud Eureka Server模块, 请参考SpringCloud创建Eureka ...
随机推荐
- 解决datagridview 横向的scrollbar不显示
下午遇到这个问题.看到了网上各种解决办法.都没搞定. 新建了一个datagridview.发现是没问题了.仔细对比了一下它们的属性. 在Columns的属性中,有一项:Frozen, 把这个值改顺默认 ...
- espcms P8.19082801 vulnerability
author: naiquan chai Net name:Hanamizuki花水木 Through the vulnerability we can get the webshell if w ...
- Java 解决Emoji表情过滤问题
Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错. 原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去 ...
- Java线程池 ThreadPoolExecutor类
什么是线程池? java线程池是将大量的线程集中管理的类, 包括对线程的创建, 资源的管理, 线程生命周期的管理. 当系统中存在大量的异步任务的时候就考虑使用java线程池管理所有的线程, 从而减少系 ...
- tornado结合前端进行文件上传
在表单中我们获取用户提交的数据,使用的是get_argument,复选框使用的是get_arguments,但是文件的不一样,文件的使用request.files. form文件上传 html代码: ...
- 前端 移动端H5页面 DEBUG
下载网址:https://github.com/Tencent/vConsole 把这个JS复制到项目里面 然后引入到HTML中 然后在JS上面实例化一下即可 页面就会有一个绿色的,然后点击一下就可以 ...
- Window Server 2019 配置篇(1)- 创建域并把本机设置成域控制器
由于这个学期的Window Server大作业是做一个服务器群,在域中创建包括DNS,DHCP,网关,更新服务器,hyper-v,自动部署等服务,所以我会把制作过程分步写在这个博客上 首先我们新建一个 ...
- 067-PHP使用匿名函数
<?php $func=function ($x,$y){ //匿名函数与变量绑定 return $x+$y; }; echo '5+6='.$func(5,6); //使用匿名函数 echo ...
- 留学萌新Essay写作须知
Essay是留学生们接触比较多的一项留学生作业,但尽管如此,依旧有部分同学对于essay写作是没有足够的把握的.随着开学季的到来,很多萌新初次接触Essay写作,难免会有很多不懂得地方.所以今天小编就 ...
- abstract和interface关键字介绍
一.abstract关键字介绍 abstract可以修饰方法.类.使用abstract修饰的方法和类分别叫做抽象方法和抽象类. 1.抽象方法 抽象方法的定义:指可以通过abstract关键字声明的方法 ...