自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 服务网关Gateway_入门案例

【代码】服务网关Gateway_入门案例。

2023-09-28 01:05:23 493

原创 服务网关Gateway_三大核心概念

首先任何请求进来,网关都会把它们拦住。根据请求的URL把它们分配到不同的路由上,路由上面会有断言,来判断请求能不能进来。进来之后会有一系列的过滤器对请求被转发前或转发后进行改动。具体怎么个改动法,那就根据业务不同而自定义了。一般就是监控,限流,日志输出等等。

2023-09-28 01:03:50 210

原创 服务网关Gateway_微服务中的应用

Webflux模式替换了旧的Servlet线程模型。用少量的线程处理request和response io操作,这些线程称为Loop线程,而业务交给响应式编程框架处理,响应式编程是非常灵活的,用户可以将业务中阻塞的操作提交到响应式框架的work线程中执行,而不阻塞的操作依然可以在Loop线程中进行处理,大大提高了Loop线程的利用率。Webflux虽然可以兼容多个底层的通信框架,但是一般情况下,底层使用的还是Netty,毕竟,Netty是目前业界认可的最高性能的通信框架。

2023-09-27 22:27:12 1598

原创 服务断路器_Resilience4j限流

【代码】服务断路器_Resilience4j限流。

2023-09-27 21:18:00 172

原创 服务断路器_Resilience4j线程池隔离实现

配置文件设置核心线程2个最大4个服务会一次处理4个请求。

2023-09-27 21:09:49 182

原创 服务断路器_Resilience4j信号量隔离实现

配置隔离并发线程最大数量为5。

2023-09-27 21:04:53 124

原创 服务断路器_Resilience4j异常比例熔断降级

创建取样器HTTP请求。修改HTTP请求参数。

2023-09-27 19:30:59 118

原创 服务断路器_Resilience4j重试机制

重试机制比较简单,当服务端处理客户端请求异常时,服务端将会开启重试机制,重试期间内,服务端将每隔一段时间重试业务逻辑处理。如果最大重试次数内成功处理业务,则停止重试,视为处理成功。如果在最大重试次数内处理业务逻辑依然异常,则此时系统将拒绝该请求。

2023-09-27 19:30:11 105

原创 服务断路器_Resilience4j超时降级

【代码】服务断路器_Resilience4j超时降级。

2023-09-27 08:07:13 175

原创 服务断路器_Resilience4j的断路器

closed -> open : 关闭状态到熔断状态, 当失败的调用率(比如超时、异常等)默认50%,达到一定的阈值服务转为open状态,在open状态下,所有的请求都被拦截。open-> half_open: 当经过一定的时间后,CircubitBreaker中默认为60s服务调用者允许一定的请求到达服务提供者。half_open -> open: 当half_open状态的调用失败率超过给定的阈值,转为open状态。

2023-09-27 05:50:42 107

原创 服务断路器_Resilience4j介绍

我们耳熟能详的就是Netflix Hystrix,这个断路器是SpringCloud中最早支持的一种容错方案,现在这个断路器已经处于维护状态,已经不再更新了,你仍然可以使用这个断路器,但是呢,我不建议你去使用,因为这个已经不再更新,所以Spring官方已经出现了Netflix Hystrix的替换方案。Resilience4j是一个轻量级的容错组件,其灵感来自于Hystrix,但主要为Java 8和函数式编程所设计,也就是我们的lambda表达式。轻量级体现在其只用Vavr。

2023-09-27 05:50:18 235

原创 服务断路器_服务雪崩解决方案之服务限流

服务熔断和服务隔离都属于出错后的容错处理机制,而限流模式则可以称为预防模式。限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。

2023-09-27 05:43:33 98

原创 服务断路器_服务雪崩解决方案之服务隔离

将用户请求线程和服务执行线程分割开来,同时约定了每个服务最多可用线程数。使用线程池隔离后动物园有了新规矩-线程隔离,就是说每个服务单独设置一个小房间(独立线程池),把大厅区域和服务区域隔离开来,每个服务房间也有接待数量限制,比如我设置了熊猫馆最多接纳10人,犀牛管最多5人,大象馆20人。这样,即便来了20个人想你熊猫,我们也只能接待10人,剩下的10个人就会收到Thread Pool Rejects。如此一来,也不会耽搁动物园为用户提供其他服务。

2023-09-27 05:15:46 42

原创 服务断路器_服务雪崩解决方案之服务降级

当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户!

2023-09-27 05:09:36 118

原创 服务断路器_服务雪崩解决方案之服务熔断

熔断就跟保险丝一样,当一个服务请求并发特别大,服务器已经招架不住了,调用错误率飙升,当错误率达到一定阈值后,就将这个服务熔断了。熔断之后,后续的请求就不会再请求服务器了,以减缓服务器的压力。当失败率(如因网络故障/超时造成的失败率高)达到阀值自动触发降级,熔断器触发的快速失败会进行快速恢复。

2023-09-26 23:58:49 39

原创 服务断路器_什么是灾难性雪崩效应

假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D,C和D服务都依赖E服务。A和B不断的调用C,D处理客户请求和返回需要的数据。当E服务不能供服务的时候,C和D的超时和重试机制会被执行由于新的调用不断的产生,会导致C和D对E服务的调用大量的积压,产生大量的调用等待和重试调用,慢慢会耗尽C和D的资源比如内存或CPU,然后也down掉。A和B服务会重复C和D的操作,资源耗尽,然后down掉,最终整个服务都不可访问。

2023-09-26 01:02:12 151

原创 服务接口调用OpenFeign_超时机制

【代码】服务接口调用OpenFeign_超时机制。

2023-09-26 00:51:52 172

原创 服务接口调用OpenFeign_日志增强

OpenFeign虽然提供了日志增强功能,但是默认是不显示任何日志的,不过开发者在调试阶段可以自己配置日志的级别。

2023-09-26 00:48:23 109

原创 服务接口调用OpenFeign_入门案列

【代码】服务接口调用OpenFeign_入门案列。

2023-09-26 00:20:00 119

原创 服务接口调用_OpenFeign概述

Feign是一个声明式WebService客户端。它的使用方法是定义一个服务接口然后在上面添加注解。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign旨在使编写Java Http客户端变得更容易。前面在使用RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。Spring Cloud OpenFeign用于Spring Boot应用程序的声明式REST客户端。

2023-09-25 17:57:44 59

原创 客户端负载均衡_负载均衡策略

每次AvailabilityFilteringRule(简称AFR)都会请求RobinRule挑选一个节点,然后对这个节点做以下两步检查:是否处于不可用,节点当前的active请求连接数超过阈值,超过了则表示节点目前太忙,不适合接客如果被选中的server不幸挂掉了检查,那么AFR会自动重试(次数最多10次),让RobinRule重新选择一个服务节点。应该说这个Rule有点智能的味道了,在过滤掉故障服务以后,它会基于过去30分钟的统计结果选取当前并发量最小的服务节点,也就是最“闲”的节点作为目标地址。

2023-09-25 17:37:26 512

原创 客户端负载均衡_什么是负载均衡

Spring Cloud Ribbon是NetFlix发布的负载均衡器,它有助于Http和Tcp的客户端行为。可以根据负载均衡算法(轮询、随机或自定义)自动帮助消费者请求,默认就是轮询。问题:状态停更进维替代方案。

2023-09-25 17:28:15 118

原创 服务注册发现_高可用Eureka注册中心搭建

在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样。Spring-Cloud为基础的微服务架构,所有的微服务都需要注册到注册中心,如果这个注册中心阻塞或者崩了,那么整个系统都无法继续正常提供服务,所以,这里就需要对注册中心搭建,高可用(HA)集群。Eureka Server的设计一开始就考虑了高可用问题,在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。

2023-09-24 21:11:57 73

原创 服务注册发现_服务发现Discovery

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。

2023-09-24 20:48:29 73

原创 服务注册发现_actuator微服务信息完善

SpringCloud体系里的,服务实体向eureka注册时,注册名默认是IP名:应用名:应用端口名。自定义服务在Eureka上的实例名怎么弄呢。

2023-09-24 18:38:45 94

原创 服务注册发现_服务自保和服务剔除机制

服务剔除,服务自保,这两套功法一邪一正,俨然就是失传多年的上乘心法的上卷和下卷。但是往往你施展了服务剔除便无法施展服务自保,而施展了服务自保,便无法施展服务剔除。也就是说,注册中心在同一时刻,只能施展一种心法,不可两种同时施展。

2023-09-24 17:26:51 67

原创 服务注册发现_创建服务消费者

先启动EurekaServer服务,访问。

2023-09-24 17:16:25 36

原创 服务注册发现_解读Eureka注册中心UI界面

这个下面的信息是这个Eureka Server相邻节点,互为一个集群。注册到这个服务上的实例信息。实例的状态分为UP、DOWN、STARTING、OUT_OF_SERVICE、UNKNOWN.注册到Eurka服务上的实例信息。

2023-09-24 14:44:24 473

原创 Dubbo概念简介_什么是RPC

RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务。大白话理解就是:RPC让你用别人家的东西就像自己家的一样。屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法隐藏底层网络通信的复杂性,让我们更加专注业务逻辑。

2023-09-24 04:38:48 57

原创 服务注册发现_搭建单机Eureka注册中心

这个下面的信息是这个Eureka Server相邻节点,互为一个集群。注册到这个服务上的实例信息。实例的状态分为UP、DOWN、STARTING、OUT_OF_SERVICE、UNKNOWN.访问浏览器localhostL:7001。注册到Eurka服务上的实例信息。

2023-09-24 04:10:37 93

原创 服务注册发现_Eureka概述

Spring Cloud Eureka 是Netflix 开发的注册发现组件,本身是一个基于 REST 的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力。

2023-09-23 23:51:39 196

原创 服务注册发现_什么是服务治理

在架构选型的时候,我们需要注意一下切记不能为了新而新,忽略了对于当前业务的支持,虽然Eureka2.0不开源了,但是谁知道以后会不会变化,而且1.0也是可以正常使用的,也有一些贡献者在维护这个项目,所以我们不必要过多的担心这个问题,要针对于业务看下该技术框架是否支持在做考虑。武当派直接调用峨眉派和华山派,同样,华山派直接调用武当派和峨眉派如果系统不复杂,这样调用没什么问题。微服务系统中服务众多,这样会导致服务间的相互调用非常不便,因为要记住提供服务的IP地址、名称、端口号等。

2023-09-23 20:27:50 48

原创 如何学习微服务Spring Cloud

简单来说,就是“三大功能,两大特性”。三大功能是指微服务核心组件的功能维度,由浅入深层次递进;而两大特性是构建在每个服务组件之上的高可用性和高可扩展性。别看微服务框架组件多,其实你完全可以按照这三大功能模块,给它们有简入难对号入座。

2023-09-23 19:53:34 69

原创 Spring Cloud版本选择

其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误,比如eureka注册了结果找不到服务类啊,比如某些jar导入不进来啊,等等这些错误。从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的 "日历化" 版本命名方式。SpringCloud的版本号是根据英国伦敦地铁站的名字进行命名的,由地铁站名称字母A-Z依次类推表示发布迭代版本。

2023-09-23 19:50:44 580

原创 为什么选择Spring Cloud

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

2023-09-23 19:47:31 173

原创 微服务的拆分规范和原则

再跟大家举一个例子,那就是“商品发布”,对新零售业务来说,当开设一个线下大型卖场以后,需要将所有库存商品一键上架,这里的商品总数是个非常庞大的数字(几十万+),瞬间就可以打出很高的QPS。根据用户群体做拆分,我们首先要了解自己的系统业务里有哪些用户,比如说电商领域,我们有2C的小卖家,也有2B的大客户,在集团内部有运营、采购、还有客服小二等等。用户群体相当于一个二级域,我们建议先根据主链路和领域模型做一级域的拆分,再结合具体的业务分析,看是否需要在用户领域方向上做更细粒度的拆分。

2023-09-23 18:27:21 93

原创 Zookeeper高级_选举机制

或者叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。值越大说明数据越新,在选举算法中数据越新权重越大。比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大。服务器中存放的最大数据ID.

2023-09-23 18:24:24 199

原创 Zookeeper高级_四字命令

之前使用stat命令来验证ZooKeeper服务器是否启动成功,这里的stat命令就是ZooKeeper 中最为典型的命令之一。ZooKeeper中有很多类似的命令,它们的长度通常都是4个英文字母,因此我们称之为“四字命令”。

2023-09-23 17:00:50 416

原创 Java客户端_Apache Curator操作Zookeeper

Curator是 Netflix公司开源的一套ZooKeeper客户端框架。和ZkClient一样,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和 NodeExistsException异常等,目前已经成为了Apache的顶级项目,是全世界范围内使用最广泛的ZooKeeper客户端之一。

2023-09-23 16:45:14 467

原创 Java客户端_zkclient库操作Zookeeper

zkclient是Github上一个开源的Zookeeper客户端,在Zookeeper原生 API接口之上进行了包装,是一个更加易用的Zookeeper客户端。同时Zkclient在内部实现了诸如Session超时重连,Watcher反复注册等功能,从而提高开发效率。

2023-09-23 16:12:53 381

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除