springcloud
文章平均质量分 56
一只渣渣
个人记录一些自己的工作所得,和学习中所遇见的问题以及浏览到的知识,如果有小伙伴看到我记录的文章欢迎指正出不足的地方,让我们一起进步,做一只悲催的程序猿(*^▽^*)
展开
-
nacos启动异常
nacos遇到的几个小异常原创 2022-01-13 16:35:39 · 12208 阅读 · 0 评论 -
引用feignClient对象项目启动异常-Consider defining a bean of type ‘com.xxx.service.xxxRemote‘ in your configura
Consider defining a bean of type 'com.xxx.service.xxxRemote' in your configura原创 2022-01-13 14:52:42 · 2623 阅读 · 2 评论 -
RestTemplate请求基本使用
POST: RestTemplate restTemplate = new RestTemplate(); StringBuffer url= new StringBuffer(LiveGoodsUtils.ADD); url.append(WeixinInfoUtils.accessToken); //请求头 HttpHeaders httpHeaders = new HttpHeaders(); //定义原创 2020-06-05 20:20:16 · 553 阅读 · 0 评论 -
springcloud之Config初识篇—客户端批量热加载
上一篇中我们实现服务不需重启即可获取到远程仓库配置文件的最新信息,但是依然存在两个问题:微服务数量多,每个微服务都做一次加载请求对于开发者而言仍然是一个不小的工作量 分布式系统的理念中微服务只专注于处理自身的业务其他的琐碎业务并不关心,而此时我们需要每个服务都做加载操作从某种程度上违法了微服务的单一性原则希望实现的模式:一次请求所有微服务都实现热部署 一个服务去请求各个微服务仍然只关...原创 2020-05-08 01:02:00 · 206 阅读 · 0 评论 -
springcloud之Config初识篇—客户端热加载
QA:根据上一篇文章客户端已经可以获取到远程仓库的文件信息,此时我们修改远程仓库的配置文件信息,项目是否能获取到呢?服务端请求远程仓库获取到最新的文件信息 客户端请求服务端获取的还是之前的历史信息原因:客户端项目处于运行状态时获取的信息无法直接加载到正在运行的spring环境中。此时我们将客户端服务重新启动就可以获取最新的配置信息。但这又存在一个严重的问题:没有实现热部署加载,我们希望...原创 2020-05-08 00:26:06 · 302 阅读 · 0 评论 -
springcloud之Config初识篇—客户端获取配置文件
我们的每个有配置文件的服务都是config的客户端。客户端通过调用服务端获取远程仓库的配置文件,它自身不会和远程仓库做交互。1、maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-...原创 2020-05-07 23:56:08 · 558 阅读 · 0 评论 -
springcloud之Config初识篇—服务端连接远程仓库
配置中心在使用上和注册中心有些相似之处,也是分为客户端和服务端,服务端用来连接我们的远程仓库(如git、svn)获取仓库中的配置文件,客户端连接服务端,从服务端获取配置文件信息。服务端:1、添加maven依赖<!--启动项目使用--> <dependency> <groupId>org.springframe...原创 2020-05-07 23:19:45 · 260 阅读 · 0 评论 -
springcloud之Config初识篇—背景
Config:配置文件的管理中心,让我们更加方便的管理项目的配置文件,已热部署的方式更新配置文件的内容。当一个系统从传统项目转成分布式项目后,具体的业务模块会被拆分成多个具体的微服务,为了更好的处理系统高可用问题,微服务不可避免的需要做集群操作,这样微服务的数量就变得更加多了,原来我们一个项目只需要管理一个或少数几个配置文件即可,现在因为微服务的关系我们需要管理几十上百个配置文件(项目大的话甚...原创 2020-05-07 22:09:59 · 171 阅读 · 0 评论 -
rabbitmq-springboot整合
PS:生产者和消费者在两个项目中生产者1、maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> ...原创 2020-05-02 23:46:14 · 174 阅读 · 0 评论 -
springcloud之Zuul初识篇—容错机制
上一篇描述了过滤器异常时执行error类型过滤器处理,当网关转发请求给业务模块出现异常时通过容错机制来处理。代码:import com.netflix.hystrix.exception.HystrixBadRequestException;import com.netflix.hystrix.exception.HystrixTimeoutException;import org....原创 2020-04-15 18:30:03 · 219 阅读 · 0 评论 -
springcloud之Zuul初识篇—Error过滤器
zuul的过滤器执行异常时会执行zuul中Error类型的过滤器,执行后在继续执行其他的过滤器。PS:若发起远程请求前过滤器异常则过滤器不会再调用远程请求,该类型其他过滤器不再执行。例:一个自定义的pre异常,则其他pre类型的过滤器都不在执行,发起远程请求(route)的过滤器不执行请求业务,返回客户端信息的过滤器(post)正常执行。import com.netflix.zuul...原创 2020-04-15 18:18:51 · 589 阅读 · 0 评论 -
springcloud之Zuul初识篇—过滤器细节
1、过滤器校验禁止向业务服务请求@Override public Object run() throws ZuulException { RequestContext requestContext = RequestContext.getCurrentContext(); Boolean flag = true; //设置不在向下执行请...原创 2020-04-15 17:44:28 · 475 阅读 · 0 评论 -
springcloud之Zuul初识篇—过滤器使用
使用方式创建一个过滤器继承ZuulFilter,实现ZuulFilter中的抽象方法,并将定义的类添加到spring容器中。代码:import com.google.common.util.concurrent.RateLimiter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.Reques...原创 2020-04-14 21:49:55 · 164 阅读 · 0 评论 -
springcloud之Zuul初识篇—过滤器概述
通过Zuul的路由功能实现请求转发,转发前需要对请求进行鉴权、限流等操作以及返回客户端请求前对返回值进二次处理等使用Zuul的过滤器来实现。过滤器类型pre:最先执行,限流、黑名单、鉴权等在该类过滤器中处理 route:在此执行转发到哪一个具体的服务(ribbon功能在此实现) post:业务服务执行完成后执行,封装返回参数、添加返回信息(如:token)等再此操作 error:上述...原创 2020-04-14 17:39:23 · 123 阅读 · 0 评论 -
springcloud之Zuul初识篇—路由配置
上篇文章实现了网关最基本的路由使用,现在了解下网关路由的相关配置。1、指定服务名称(正常使用这种)zuul: routes: test1: /testOne/**请求路径的改变:原始:http://localhost:8501/test1/eureka-clinet1/ribbonTest现在:http://localhost:8501/testOne/eureka-...原创 2020-04-14 00:22:27 · 239 阅读 · 0 评论 -
springcloud之Zuul初识篇—路由基础使用
创建一个网关服务1、添加pom依赖 <!--网关服务也需要注册到注册中心来获取其他服务的相关信息--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spri...原创 2020-04-13 22:42:14 · 112 阅读 · 0 评论 -
springcloud之Zuul初识篇—背景
分布式项目中存在大量独立运行的服务,如果把所有服务的端口都暴露出来肯定是不可取的(不安全也不方便调用)。所以需要一组服务来作为代理,外部请求只请求这个代理服务,由该服务代理请求相应的业务服务,同时完成鉴权、限流等一系列通用操作。这样既减少了服务的暴露也简化了各业务模块部分冗余代码的开发(如:订单模块只做和订单相关的事,权限鉴证什么的都交给代理服务来做),这样的代理服务我们一般定义为网关,sprin...原创 2020-04-13 19:34:43 · 170 阅读 · 0 评论 -
springcloud之Hystrix初识篇—熔断简述
熔断的主要感觉就像是电表的保险闸,正常情况下它是关闭的,当发现家里用电量过大超出负荷他就会自动打开开关停止供电,已保证家里不出现电力事故。Hystrix的熔断也就是像电表保险闸类似的断路器,不过比我们的保险闸更加高级,设置了三种状态。断路器会实时记录请求的健康状态,并基于一段时间内请求的健康状态来改变断路器的状态。关闭:正常情况下断路器的状态。开启:当某请求在某段时间内请求错误的次...原创 2020-03-29 23:06:04 · 247 阅读 · 0 评论 -
springcloud之Hystrix初识篇—RestTemplate与Feign使用对比
RestTemplate:添加相关注解参数即可,使用简单方便 熔断节点易控制,方便后续基于业务作出相应调整 异常捕获简单,同页面下添加对应方法即可 请求更贴近httpclient,使用更有熟悉感Feign:编写方式优雅,基于面向接口的风格,但是开发起来较为繁琐 yml需要添加配置启动hystrix组件 需要创建对应类来执行fallback方法 捕获异常信息和不捕获异常实现的接...原创 2020-03-29 18:53:01 · 1347 阅读 · 0 评论 -
springcloud之Hystrix初识篇—结合Feign禁用降级方法
1、创建一个配置类定义忽略降级方法(提供者异常时直接返回异常信息,不走降级方法)。/** * Created by py * 2020/3/26 */public class FeignDisableHystrixConfiguration { /** * singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例...原创 2020-03-29 18:35:31 · 514 阅读 · 1 评论 -
springcloud之Hystrix初识篇—结合Feign获取请求异常
1、创建一个fallbackfactory(捕获异常)类/** * FallbackFactory<T>:FeignTest1Service就是用于feign请求的接口 * Created by py * 2020/3/26 */@Componentpublic class FeignTest1ServiceFallBackFactory implements Fal...原创 2020-03-29 18:26:58 · 310 阅读 · 0 评论 -
springcloud之Hystrix初识篇—结合Feign使用简例
1、添加pom依赖(使用Hoxton.SR3版本feign中没有自动依赖Hystrix,需要我们手动添加)<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netfl...原创 2020-03-29 18:14:48 · 191 阅读 · 0 评论 -
springcloud之Hystrix初识篇—HystrixCommand配置参数
HystrixCommandPropertiesstatic final Integer default_metricsRollingStatisticalWindow = 10000; private static final Integer default_metricsRollingStatisticalWindowBuckets = 10; private stati...原创 2020-03-28 23:15:07 · 506 阅读 · 0 评论 -
springcloud之Hystrix初识篇—结合ResTeamplate小述HystrixCommand基本使用
忽略异常:通过@HystrixCommand的参数配置我们可以忽略异常,不走降级方法正常返回异常信息。自定义异常:package com.example.springcloud.testdemo.exception;/** * Created by py * 2020/3/25 */public class HystrixIgnoreException extends Runti...原创 2020-03-28 23:11:47 · 211 阅读 · 0 评论 -
springcloud之Hystrix初识篇—结合ResTeamplate小述
【PS:观看该篇文章前请先参考上一篇文章】捕获熔断异常:降级方法中可以添加一个异常参数,用于抓取正式调用请求异常的信息。/** * fallbackMethod:降级方法【PS:该方法最多只能添加下面这2个参数,或只接收请求方法的参数】 * @param body 请求方法的参数 * @param throwable 异常信息 * @return */public Strin...原创 2020-03-28 21:59:17 · 141 阅读 · 0 评论 -
springcloud之Hystrix初识篇—结合ResTeamplate使用简例
1、添加pom依赖。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>2.2.1.RELEASE...原创 2020-03-28 20:42:46 · 206 阅读 · 0 评论 -
springcloud之Hystrix初识篇—概念
基于分布式中因某个微服务不可用而导致的服务雪崩等问题,为防止异常传递进而导致的异常传播等问题,需要实现当某个微服务发生异常时不因为该服务异常而影响依赖该服务的其他微服务正常运行,springcloud通过使用hystrix组件来解决。思考:服务异常了如何保证其他服务不受影响?场景:服务提供者异常时调用者因等待提供者返回信息而一直同步阻塞着,消耗消费者服务资源,随着调用的越多消耗越大,直...原创 2020-03-28 17:35:34 · 135 阅读 · 0 评论 -
springcloud之Hystrix初识篇—背景
分布式项目通过业务拆分将项目整体拆分成一个个单独的微服务,通过微服务之间的相互调用来实现整体的功能。由于每个微服务都是一个独立运行的进程,某个微服务异常就导致依赖它的业务模块都不可用例:金额录入服务异常。结果:客户充值、客户付款、商家收款等功能都无法正常使用,从而引申出客户下单失败(系统无法正常记录金额信息,故而订单无法正式生产【网站下一个订单,30分钟无法付款成功,订单自动取消】...原创 2020-03-28 00:36:22 · 165 阅读 · 0 评论 -
springcloud之Feign初识篇—yml参数信息
server: port: 8091 servlet: context-path: /feign1eureka: instance: hostname: feign1 client: service-url: defaultZone: http://localhost:8700/eurekaServer/eurekaspring: a...原创 2020-03-18 00:05:53 · 514 阅读 · 0 评论 -
springcloud之Feign初识篇—根路径导致404问题
我们的服务提供者很对时候会配置server.servlet.context-path此时我们按照之前的feign配置去请求服务提供者的话会报404,无法找到请求路径。我们在@FeignClient的请求路径上添加根路径信息(有时会报错):@FeignClient(name = "test1",configuration = FeignClientsConfiguration.cla...原创 2020-03-17 23:51:32 · 969 阅读 · 0 评论 -
springcloud之Feign初识篇—yml实现服务认证
上一篇我们通过注解实现服务调用认证,该认证也可以配置在yml中。1、配置拦截器:feign会在实际请求前先走这个拦截器,这样可以把需要认证的信息在执行拦截器的时候加载进request请求中。import feign.RequestInterceptor;import feign.RequestTemplate;public class MyBaseAuthRequestInter...原创 2020-03-17 23:13:57 · 1618 阅读 · 0 评论 -
springcloud之Feign初识篇—注解实现服务认证
我们知道feign是HTTP请求的所以有的时候需要添加些头部参数什么的,这些参数通常是通过feign的配置信息来添加的。例:我们的服务提供者设置了安全校验,需要配置账号、密码才能正式请求。服务提供者:1、pom添加依赖<dependency> <groupId>org.springframework.boot</groupId> ...原创 2020-03-17 22:59:12 · 196 阅读 · 0 评论 -
springcloud之Feign初识篇—实例
1、pom添加依赖【服务消费者】<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>2、启动类添加启用注...原创 2020-03-17 19:57:21 · 178 阅读 · 0 评论 -
springcloud之Feign初识篇—概述
springcloud为服务之间的通讯提供了两种方式,一种是restTemplate另一种就是feign。两种通讯方式本质上都是restful风格的HTTP请求。feign:编写一个接口,指定该接口调用其他服务。用feign对应注解修饰接口类,服务启动的时候会扫描该注解实现相关的动态加载和实例化。在正式调用的时候会生成一个restTemplate对象并将接口方法的相关参数信息设置到该对象中...原创 2020-03-17 17:35:32 · 194 阅读 · 0 评论 -
springcloud之ribbon初识篇—饥饿加载
在正常长使用ribbon的时候服务获取其他服务实例列表(ribbon从eureka处获取)一般是在第一次调用其他服务的时候去获取,这就导致第一次调用的时候可能会请求时间过长,链接超时等情况,但是总的来说不会影响项目整体(正常项目部署后我们会先经过生产测试,所以一般不会因此影响客户使用的体验感)。如果我们不想第一次调用的时候出现这些可能存在的问题可以选择使用ribbon的饥饿加载。饥饿加载:服务...原创 2020-03-15 16:42:42 · 780 阅读 · 0 评论 -
springcloud之服务调用
在微服务项目中很多服务系统都是独立进程运行的,通过各个进程之间的相互协作来完成微服务的相关功能。这些进程之间的信息交互方式有很多如RPC、HTTP通讯等,springcloud使用的是restful风格的HTTP通讯模式。restful风格的通讯是最为常见的通讯模式之一。RESTFUL:RESTful网络请求是指RESTful风格的网络请求,其中REST是Resource Represen...原创 2020-03-15 15:34:35 · 217 阅读 · 0 评论 -
springcloud之ribbon初识篇—负载规则
负载规则可以自定义也可用使用Ribbon默认实现的负载规则。自定义规则:上一篇 java配置实现负载均衡中有,想了解可以查看上一篇文章【自定义的负载均衡在配置文件中也可使用】。默认实现的负载规则:ZoneAvoidanceRule(区域权衡策略):根据Server所在区域的性能和Server的可用性进行复合判断,轮询选择服务器。不指定负载规则的话默认使用这个。 BestAvailab...原创 2020-03-15 00:14:32 · 195 阅读 · 0 评论 -
springcloud之ribbon初识篇-通过代码实现负载均衡
我们在代码中可以使用两种注解实现负载均衡:@RibbonClients:配置所有服务的负载均衡 @RibbonClient:配置单个服务的负载均衡@RibbonClients@SpringBootApplication//给每个服务指定不同的负载规则【PS:“name”指的是要调用的服务名称】@RibbonClients(value = { @RibbonClie...原创 2020-03-15 00:01:53 · 252 阅读 · 0 评论 -
springcloud之ribbon初识篇-通过yml配置实现负载均衡
如果注册中心是eureka那么使用ribbon我们不需要额外添加pom配置信息,eurekaClient默认加载了ribbon的信息。我们以restTemplate为例使用ribbonyml配置:#指定为某个服务配置负载规则TEST1: ribbon: #配置轮训策略 NFLoadBalancerClassName: com.netflix.loadbala...原创 2020-03-13 22:07:24 · 3252 阅读 · 0 评论 -
springcloud之ribbon初识篇-概述
在springcloud中Ribbon的作用是实现各个微服务之间的负载均衡。在分布式系统下为保证系统的性能每个服务往往都是以集群的方式出现的,当同样的的服务存在多个实例时我们不方便去指定使用该服务的哪一个具体应该(我们只知道使用该服务的功能,但是不确定使用该服务的哪一个实例),此时ribbon来帮助我们指定一个服务的实例去完成调用。软件的负载均衡大致分为两种:服务端负载均衡——Ngin...原创 2020-03-13 17:51:54 · 889 阅读 · 0 评论