首页 > 其他分享 >决战圣地玛丽乔亚Day01

决战圣地玛丽乔亚Day01

时间:2023-01-29 00:33:32浏览次数:36  
标签:服务 ip Day01 玛丽 eureka 注册 乔亚 Eureka com

SpringCloud的服务注册与发现:

单机的服务注册与发现需要配置一个服务注册中心,一个生产者微服务,一个消费者微服务。

注册中心:

 

 

 服务的生产者:

服务的消费者:

 

配置的方式大致类似。调用都是通过RestTemplate进行远程调用。

但是实际的生产过程中不可能只有一台主机,需要考虑使用集群来解决大流量的问题。

这时候,注册中心和各个微服务都是以集群的形式出现。

注册中心的配置文件的方式也需要进行改造,defaultZone的地址从自己改为集群的其他注册中心地址,如果有三台注册中心,两两注册。

 defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

对于生产者的defaultZone,需要写所有注册中心的地址,代表可以向其中的任意一个进行注册

service-url:
defaultZone:

http://eureka7001.com:7001/eureka,

http://eureka7002.com:7002/eureka,

http://eureka7002:com:7002/eureka

 

我们同样可以把服务的生产者变成集群的形式,创建多个提供者。

为了方便我们一眼看出请求是哪台机器发出的,可以对instance进行改造,之后即可在eureka网站上通过id进行分辨。

instance:
prefer-ip-address: true # 使用ip地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port}

 

 

Eureka剔除服务:

默认心跳间隔30s,等待时间90s,超出等待时间则会剔除服务。

instance:
prefer-ip-address: true # 使用ip地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port}
# 该实例给服务中心发送心跳的间隔时间,用于表明该服务实例可用
lease-renewal-interval-in-seconds: 2
# 服务中心删除此服务实例的等待时间(秒为单位),时间间隔为最后一次服务中心接受到的心跳时间
lease-expiration-duration-in-seconds: 10

 

Eureka的自我保护机制:

如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制

某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存,其实是属于CAP理论中的AP

enable-self-preservation: false
eviction-interval-timer-in-ms: 3000

 

Ribbon负载均衡:

Ribbon负责客户端的负载均衡,进程式。在调用微服务接口的时候,会在注册中心获取注册信息服务列表之后缓存到JVM本地,从而实现RPC远程调用

Nginx负责服务器端的负载均衡。 所有的请求都会交给Nginx然后Nginx进行转发操作。

实现方法很简单:

1.在创建RestTemplate对象的时候,标注LoadBalance注解。

2.在使用RestTemplate调用远程微服务的时候,用服务名去请求服务地址。

 

restTemplate:

getForObject(返回响应结果)、getForEntity(返回相应结果+状态码+响应头信息)

 

IRule自定义轮询规则:

自带的特定算法:

  • RoundRobinRule

    轮询【默认】

  • RandomRule

    随机

  • RetryRule

    先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务。

  • WeightedResponseTimeRule

    对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择

  • BestAvailableRule

    会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务

  • AvailabilityFilteringRule

    先过滤掉故障实例,再选择并发较小的实例

  • AvailabilityFilteringRule

    默认规则,复合判断server所在区域的性能和server的可用性选择服务器。

重要细节

官方文档明确给出了警告:这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了。

 

 

 

通过@RibbonEurekaClient配置轮询策略过滤的服务名和需要实现的自定义的负责均衡算法。

 

轮询策略的底层逻辑:
rest接口第几次请求数 % 服务器集群总数量 = 实际调用服务器位置下标

 每次服务重启动后rest接口计数从1开始

 

轮询策略的源代码:

 

今天就到此为止了,希望我可以带着这份热情冲到六月份,顺利拿到offer。加油!

标签:服务,ip,Day01,玛丽,eureka,注册,乔亚,Eureka,com
From: https://www.cnblogs.com/dwj-ngu/p/17071576.html

相关文章

  • day01
    Markdown学习标题:+标题名字字体hello,world!黑体:两边都加*Hello,World!斜体:两边加*Hello,World!斜体加粗:两边加***Hello,World!删除线:两边加~~引用//大于号......
  • Day01
    Markdown初学标题空格+标题名字一级标题空格+标题名字二级标题同理可书写至六级标题字体Hello,word!前后加两个星号变成粗体Hello,word!前后加一个星号变成......
  • Day01 - HTML&CSS
    1.html介绍简介html叫超文本标记语言,是开发网页的语言html中的标签大多数都是成对出现的,格式:<标签名></标签名>html的定义HTML的全称为:HyperTextMark-upLa......
  • day01 - Linux基础命令
    1.操作系统介绍操作系统的作用:用来整合硬件系统资源常用操作系统: 1.DOS 2.Windows: a.win3.1,win3.2 b.win95 c.win97 d.windowsme e.window......
  • bbs复习day01
    BBS项目复习day011.创建项目2.配置设置templates路径设置数据库设置第三方js,css文件路径设置3.app创建创建apppython38manage.pycreateappapp01app添加sett......
  • Day01-Python环境安装
    一、Python简介1、开源代码是公开的,任何人都可以去查看,修改以及使用。2、版本包括CPython(由C编写,把python编译成中间态的字节码,然后有虚拟机解释),Jthon(将python代码编译......
  • day01-Spring基本介绍
    Spring基本介绍1.官方资料和下载1.1Spring5下载直接访问https://repo.spring.io/ui/native/release/org/springframework/spring/,选择相应版本即可进入官网https......
  • 代码随想录算法训练营day01 | leetcode 704/27
    前言  考研结束半个月了,自己也简单休整了一波,估了一下分,应该能进复试,但还是感觉不够托底。不管怎样,要把代码能力和八股捡起来了,正好看到卡哥有这个算法训练营,遂果断参加......
  • 代码随想录算法训练营day01| 704. 二分查找、27. 移除元素
    数组基础知识数组是存放在连续内存空间上的相同类型数据的集合。数组下标都是从0开始的。数组内存空间的地址是连续的数组的元素是不能删的,只能覆盖。704二分查找......
  • 代码随想录day01|26.删除重复项;27.移除元素;704.二分;844.含退格字符串
    2627;704;844关键内容:数组;二分;快慢指针首先,在面对数组时,我们必须清楚,数组中的元素在内存中是连续分布的,单独删除一个元素是不可实现的,所以当出现类似删除原数组元素之......