网关过滤器过滤器可以在请求过程中,修改请求的参数和响应的结果等信息。在生命周期的角度总体上可以分为前置过滤器(Pre)和后置过滤器(Post)。在实现的过滤范围角度可以分为局部过滤器(GatewayFilter)和全局过滤器(GlobalFilter)。局部过滤器作用的范围是某一个路由,全局过滤器作用的范围是全部路由。Pre前置过滤器:在请求被网关路由之前调用,可以利用这种过滤器实现认证、鉴权、路由等功能,也可以记录访问时间等信息...
2022-06-01 11:25:45 5215浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏的《SA实战·《SpringCloudAlibaba实战》服务治理:实现服务的自动注册与发现》一文中,我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题,那就是如果用户微服务和商品微服务在服务器上部署多份的话,之前的程序无法实现服务调用的负载均衡功能。本文就带着大家一起实现服务调用的负载均衡功能。负载均衡在正式优化程序代码之前,我们先来看看什么是负载均衡...
2022-05-31 16:38:46 4774浏览 0点赞 0回复 0收藏
服务雪崩系统采用分布式或微服务的架构模式后,由于网络或者服务自身的问题,一般服务是很难做到100%高可用的。如果一个服务出现问题,就可能会导致其他的服务级联出现问题,这种故障性问题会在整个系统中不断扩散,进而导致服务不可用,甚至宕机,最终会对整个系统造成灾难性后果。这里,小伙伴们可以对比冰河写的《一起进大厂系列》专栏中的《【高并发】面试官:讲讲什么是缓存穿透?击穿?雪崩?如何解决?》一文进行记忆。...
2022-05-31 16:38:32 3834浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。但是,现在系统中存在着一个很明显的问题,那就是如果系统的并发量上来后,系统并没有容错的能力,这可能会导致系统不可用或者直接宕机,所以,我们的系统需要支持容错的能力。本文主要内容如下所示。并发对系统的影响当一个系统的架构设计采用微服务架构模式时,...
2022-05-31 16:38:22 5107浏览 0点赞 0回复 0收藏
为远程调用实现容错(1)需要在订单微服务shoporder中,为远程调用接口实现容错方法。这里,先为用户微服务实现容错。在订单微服务中新建io.binghe.shop.order.Feign.fallback包,并在io.binghe.shop.order.Feign.fallback包下创建UserServiceFallBack类实现UserService接口,用于调用用户微服务的容错类,如下所示。authorbinghe(公众号:冰河技术)version1.0.0description用户服务容错类ComponentpublicclassUserServiceFallB...
2022-05-31 16:38:06 5224浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。同时,我们详细介绍了服务雪崩和服务容错的一些方案。文章总览章节概述今天,我们就使用Sentinel实现接口的限流,并使用Feign整合Sentinel实现服务容错的功能,让小伙伴们体验下微服务使用了服务容错功能的效果。因为我们整个专栏的内容仅仅围绕着SpringCloudAliba...
2022-05-31 16:37:48 4777浏览 0点赞 0回复 0收藏
大家好,我是冰河文章总览章节概述今天,我们就使用Sentinel实现接口的限流,并使用Feign整合Sentinel实现服务容错的功能,让小伙伴们体验下微服务使用了服务容错功能的效果。因为我们整个专栏的内容仅仅围绕着SpringCloudAlibaba技术栈展开,所以,这里我们使用的服务容错组件是阿里开源的Sentinel。当然,能够实现服务容错功能的组件不仅仅有Sentinel,比如:Hystrix和Resilience4J也能够实现服务容错的目的,关于Hystrix和Re...
2022-05-31 16:37:33 4614浏览 0点赞 0回复 0收藏
热点规则Sentinel的热点规则可以将流量规则控制到具体的参数上。热点规则概述Sentinel的热点规则可以根据具体的参数来控制流量规则,适用于根据不同参数进行流量控制的场景。演示热点规则(1)在订单微服务的io.binghe.shop.order.controller.SentinelController类中新增requestSentinel3()方法,其中会带有一个String类型的参数header和一个String类型的参数body,如下所示。GetMapping(value"requestsentinel3")SentinelResou...
2022-05-31 16:37:21 5407浏览 0点赞 0回复 0收藏
大家好,我是冰河本章总览文章有点长呀,小伙伴们耐心看完,并跟着实操每一个案例,相信你一定会对Sentinel有一个全新的认识。Sentinel核心功能随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。所以,Sentinel的核心功能包括:流量控制、熔断降级、系统负载保护。流量控制在高并发、大流量场景下,进入系统的流量如果不加控...
2022-05-31 16:36:46 5211浏览 1点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则。今天,我们正式进入服务网关章节的学习,首先,我们对服务网关进行简要的概述并对其核心架构进行简要的剖析。本章总览网关概述当采用分布式、微服务的架构模式开发系...
2022-05-31 16:36:08 4749浏览 0点赞 0回复 0收藏
(2)在服务网关shopgateway模块中新建io.binghe.shop.config包,并在包下新建GatewayConfig类。基于Sentinel的Gateway限流是通过其提供的Filter来完成的,使用时只需注入对应的SentinelGatewayFilter实例以及SentinelGatewayBlockExceptionHandler实例即可。GatewayConfig类的源代码如下所示。authorbinghe(公众号:冰河技术)version1.0.0description网关配置类ConfigurationpublicclassGatewayConfig{privatefinalList<ViewRe...
2022-05-31 16:35:49 5487浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则,同时,简单介绍了服务网关,并对SpringCloudGateway的核心架构进行了简要说明。今天,我们就正式在项目中整合SpringCloudGateway网关本章总览章节概述今天,我们就在...
2022-05-31 16:35:30 5280浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则。同时,简单介绍了服务网关,并对SpringCloudGateway的核心架构进行了简要说明,也在项目中整合了SpringCloudGateway网关实现了通过网关访问后端微服务,另外,也能够S...
2022-05-31 16:34:28 5249浏览 0点赞 0回复 0收藏
接下来,实现的逻辑在订单微服务的io.binghe.shop.order.service.impl.OrderServiceV4Impl类中,并且在OrderServiceV4Impl类上会标注Service("orderServiceV4")注解。订单微服务的代码结构如下所示。├─shoporder││pom.xml││shoporder.iml│││└─src│└─main│├─java││└─io││└─binghe││└─shop│││OrderStarter.java│││││└─order││├─config│││LoadBalanceConfig.java│││││├─cont...
2022-05-31 16:31:43 5099浏览 0点赞 0回复 0收藏
大家好,我是冰河注意:本项目完整源码加入冰河技术知识星球即可获取,文末有优惠券。在《SpringCloudAlibaba实战》专栏的《SA实战·《SpringCloudAlibaba实战》快速搭建三大微服务并完成交互开发与测试》一文中,我们初步实现了用户微服务、商品微服务和订单微服务之间的交互。但是在实现的过程中,存在一个很明显的问题:那就是将用户微服务所在的IP和端口,以及商品微服务所在的IP和端口硬编码到订单微服务的代码中了。这样...
2022-05-31 16:31:27 4854浏览 0点赞 0回复 0收藏
改造其他微服务我们可以用同样的方式来改造商品微服务和订单微服务的代码,改造好之后,分别启动商品微服务和订单微服务,并再次刷新Nacos的页面,如下所示。可以看到,用户微服务、商品微服务和订单微服务都已成功注册到Nacos。实现服务发现按照整个项目的执行流程,用户执行下单操作时,订单微服务会调用用户微服务的接口获取用户的基本信息,会调用商品微服务的接口获取商品的基本信息。在订单微服务中校验用户的合法性和校...
2022-05-31 16:31:19 5168浏览 0点赞 0回复 0收藏
大家好,我是冰河没错,真如标题所示,我基于MVCC算法(这里我姑且叫它算法吧,毕竟在实际写代码时,确实是利用算法实现的),使用C++写了个简易版的MySQL,实现了简易版的CRUD操作。其实,今天我并不打算先向小伙伴们演示我写的简易版MySQL,这个项目待我再优化下,会开源出来的,到时大家可以一起学习,一起进步,一起来维护它。今天,我想跟大家重点聊聊MVCC,网上关于MVCC的文章很多,大部分都是基于版本链进行介绍的,其实...
2022-05-31 16:31:05 5458浏览 0点赞 0回复 0收藏
大家好,我是冰河在《SpringCloudAlibaba实战》专栏中前面的文章,我们为开发用户微服务、商品微服务和订单微服务做了充分的准备。今天,我们就一起正式开撸三大微服务的核心业务。点击上方卡片关注我文章结构本文有点长,文章的总体结构如下图所示。项目概述为了便于大家理解和跟上开发的进度,今天我们先使用SpringBoot快速搭建三大微服务,并基于SpringBoot完成三大微服务之间的交互。在后续的文章中,我们会陆续加入SpringC...
2022-05-31 16:30:55 6315浏览 0点赞 0回复 0收藏
接下来,在io.binghe.shop.product.service.impl包下创建ProductServiceImpl类,实现ProductService接口,并实现ProductService接口中定义的getProductById()方法和updateProductStockById()方法,如下所示。authorbingheversion1.0.0description商品业务实现类ServicepublicclassProductServiceImplimplementsProductService{AutowiredprivateProductMapperproductMapper;OverridepublicProductgetProductById(Longpid){return...
2022-05-31 16:30:27 5162浏览 0点赞 0回复 0收藏
大家好,我是冰河注意:面试过程全程高能,过于真实,扎心了,冰河强烈建议收藏!!原创不易,冰河在线求四连(收藏、点赞、在看、留言)程序员小菜是一家互联网公司的开发人员,主要负责后端Java技术开发,平时的工作中以CRUD为主。从刚毕业来到公司,一转眼3年过去了,小菜突然觉得在这家公司工作没啥意思了,整天做CRUD的工作没啥挑战。于是,小菜童鞋优化了下自己的简历,并在网上投递了自己的简历,不一会,一个电话打过来...
2022-05-31 16:29:50 5216浏览 0点赞 0回复 0收藏