SpringCloud
九八年的尾巴
一个愿意分享和倾听的年轻人
展开
-
SpringCloud:消息总线整合配置中心架构流程图及使用实战(十八)
所有操作看不懂的,看之前的实战篇章 感谢一:启动RibbatMQ目的实现服务不重启也能获取到修改后配置中心的配置,配置修改触发回调函数,消息队列单独或广播二:添加依赖<需要的服务进行添加>配置中心结合消息队列 <!--RabbitMQ--> <!--开启监控 refresh--> <dependency> <groupId>org.springframework.bo原创 2020-11-15 20:34:12 · 283 阅读 · 0 评论 -
SpringCloud:分布式配置中心客户端使用实战(十七)
在上一章实战十六实战了config连接git服务器拉取相关配置,这一章讲解客户端如何获取Config服务器配置1.加入依赖(需要拉取配置的服务加) <!--配置中心客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client原创 2020-11-12 00:23:15 · 106 阅读 · 0 评论 -
SpringCloud:使用git服务器结合配置中心组件Config-server分布式配置中心实战(十六)
新建项目,创建config-server和之前的创建项目步骤一样,不懂得看之前实战,因为搭建的是服务器不是客户端,需要选择ConfigServer1.注意依赖,这两个一定要有 <!--配置中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-c原创 2020-11-11 22:15:59 · 338 阅读 · 0 评论 -
SpringCloud:微服务下的链路追踪讲解重要性及组件Sleuth实战以及常见问题(十五)
什么是分布式链路追踪系统,及使用好处?微服务调用链路特别长,比如用户请求订单服务,订单服务可能会掉商品服务-用户服务-积分服务等等等有一天发现这个订单服务返回的特别慢,但不知道具体是调用哪一个服务时间过长一开始的解决方法可能会在代码里加begin起始时间和end结束时间,最后相减得到服务调用时间,但服务越来越多,不能在每个地方都加啊,不仅增加代码量也属于一个无用代码此时链路追踪ZipKin就出现了,根据服务的流水号id,流水号id贯穿整个调用链路Sleuth主要和ZipKin结合**1.官方文档原创 2020-11-11 17:41:53 · 358 阅读 · 0 评论 -
Zuul微服务网关集群搭建详解
1.Nginx层限流2.网关层限流如果网关一挂后面的服务就访问不到了,所以网关也需要集群部署,所以网关前面还有一个nginx。就会说了,那Nginx也会挂啊,所以nginx会和LVS结合,这一般是由运维去做,根据LVSip映射去做的。这样图的整体流程就保证了整体服务的使用,不会因为某个节点服务或者节点网关挂掉导致程序不可用虽然通过那么多节点转发,性能有所下降,但对代码量可用性都有很大的提高,有得必有失,就比如不用网关或者nginx,用户请求直接怼过去,暴露很多的危险,比如鉴权需要在每个服务里加,也不能原创 2020-11-11 16:54:19 · 1538 阅读 · 0 评论 -
SpringCloud:高并发情况下接口限流特技实战(十四)
谷歌guave框架介绍,网关限流详解及使用比如上班地铁使用,比如地铁容纳100人,上班高峰期来了200人,此时这200人需要一个个排队进去,不能一下子全挤进去对接口qps评估。mysql数据库最大连接数三四千,一个电商系统你分了好多节点,认为加多节点就能顶住用户访问,但没有加缓存,所有节点都是直连数据库,突然两万请求过来数据库岂不宕机了。此时限流就出现了比如每秒去桶里放100个令牌,一个请求过来拿走一个令牌继续往下走,当令牌没有请求数大于令牌持有量时,就不继续往下走了实战编程1.创建RateLi原创 2020-11-11 16:38:29 · 299 阅读 · 0 评论 -
SpringCloud:自定义Zuul过滤器实现用户登陆鉴权实战(十三)
1.新建一个filter包2.新建LoginFilter类,实现ZuulFilter,重写里面的方法3.在类顶部加注解,@Component,让Spring去扫描加入到容器@Componentpublic class LoginFilter extends ZuulFilter { @Override public String filterType() { return null; } @Override public int filte原创 2020-11-11 16:12:22 · 362 阅读 · 0 评论 -
高级篇幅:Zuul路由映射重复问题,http请求cookie过滤问题,过滤器执行顺序流程分析和网关过滤器原理分析
接上一章的网关实战,会发现一些问题1.路由名称自定义问题路由映射重复覆盖问题zuul: routes: product-service: /apigateway/** order-service: /apigateway/** ignored-patterns: /*-service/**发现product服务调用404,可order服务可用。因为里面是以Map的形式,会覆盖,所以名称不能重复zuul: routes: #建议大家起名称这样,访问时也清除访问的是哪原创 2020-11-11 15:12:25 · 598 阅读 · 0 评论 -
SpringCloud:网关Zuul组件的基本使用,配置统一路径访问实战(十二)
1.创建项目单独和其它应用分隔开来的,需要新建网关项目接之前的项目操作,把之前商品服务线程睡眠关掉依然是new>Project>Spring Initializr 不懂得看第一章实战创建项目。依赖选择服务发现注册和Zuul相关依赖 <!--服务的注册发现--> <dependency> <groupId>org.springframework.cloud</groupId>原创 2020-11-11 14:20:42 · 726 阅读 · 0 评论 -
断路器监控仪表参数详解和模拟熔断仪表盘状态
断路器监控仪表盘参数和模拟熔断仪表盘:web监控当前请求,正确率错误率,断路器状态监视对之前的订单服务做一些小改动对实现类调用订单服务上面做模拟一个正常的调用返回以返回空的方式表示服务正常调用。下面的调订单服务设置线程睡眠两秒 超时设置1秒 模拟服务宕机仪表盘参数详解官方讲解图,现在找不到了测试100个请求,1个成功两个失败为一组请求。如果速率达到2 断路器状态打开这里使用Postman中的集合循环发送请求速率为2 可以看到Open红色字体,表示断路器打开整体流程:1.正常断路原创 2020-11-11 00:17:44 · 245 阅读 · 0 评论 -
SpringCloud:断路器Dashboard监控仪表盘实战(实战十一)
讲解断路器Dashboard基础使用和查看作用:查看什么时候触发断路器,请求频率、流量情况等。生产环境中使用,项目上线基本用不到1.加入依赖 <!--仪表板监控依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix原创 2020-11-10 22:38:24 · 201 阅读 · 0 评论 -
SpringCloud:刨析Hystrix降级策略和调整,服务连接超时配置(实战十)
源码分析Hystrix降级策略和调整Ribbo设置超时时间大于服务调用时间还是发回退异常问题:先看一下服务调用图,订单服务下单调用商品服务,但可能还会调用用户服务,此时商品服务那边可能需要查看商品信息各种复杂操作,用户服务还需要判断此用户是不是作弊用户。这些操作加起来可能有两秒钟,此时就出现问题了,订单服务设置了连接超时,就会返回回退语句,并且发送短信等操作前一章的熔断实战,模拟了线程睡眠超时2秒,但尽管修改了Fegin里的ribbon超时时间为4秒还是会返回回退。所以光靠ribbo里的超时是不行的原创 2020-11-10 22:36:46 · 332 阅读 · 0 评论 -
SpringCloud:熔断降级服务异常报警通知实战(九)
!!任何不懂的步骤看之前的实战篇章在上一章写了熔断机制,但这样是不完善的,当服务发生熔断时没有任何通知,肯定是不行的,所以有报警机制可以在控制层写 也可以在异常类写。可以通过发短信的方式,最好在两个方式都加,粒度更细整体流程用户发送请求到订单接口,订单接口调用商品服务,如果失败发送短信告知给负责商品服务接口的程序人员,(一个功能可能一秒有肯多人发送请求,不能一直去发短信)此时采用redis数据库存储 是否已发送过短信(时间5分钟),短信功能连接短信服务商实战讲解1.在订单服务加入redis依赖原创 2020-11-10 22:35:06 · 470 阅读 · 0 评论 -
SpringCloude核心组件-Eureka注册中心
什么是微服务的注册中心 理解注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护 心跳机制:商品服务A、B、C三个节点,每隔60s就会向注册中心发一个心跳包 比如某一天C机器挂掉,就开始维护,保证每一个服务都可用。 服务提供这provider:启动的时候向注册中心上报自己的网络信息 服务消费者consumer:启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息为什么要用注册中心? 微服务应用和机器越来越多,调用方需要知道接口的网原创 2020-11-10 09:11:20 · 163 阅读 · 0 评论 -
SpringCloud:Fegin结合Hystrix熔断器实战(八)
SpringCloud整合断路器的使用,用户服务异常等情况!!所有不明白的看之前代码看前几章实战部分一一:加入依赖网上新旧版本问题,所以要以官网为主,不然部分注解丢失 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</a原创 2020-11-10 08:40:39 · 183 阅读 · 0 评论 -
Netflix开源组件熔断器Hystrix介绍
Netflix开源组件熔断器Hystrix介绍文档地址:https://github.com/Netflix/Hysrtixhttps://github.com/Netflix/Hystrix/wiki什么是Hystrix?Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统中,许多依赖不可避免的会调用失败,超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,提高分布式系统的弹性分布式项目中,有数十个依赖关系,每个依赖关系在某些时原创 2020-11-09 20:29:59 · 681 阅读 · 0 评论 -
SpringCloud:Fegin服务调用超时以及服务调用方式Ribbon和Fegin的选择(七)
fegin请求流程:LoadbalancerFeignClient实现了Client接口,里有有一个核心的execute方法,拿路径请求Feign里面包装了ribbon模拟线程超时可能某个节点出现问题,导致数据库访问时间过长,导致服务调取时间过长,在Fegin里有默认访问1秒为超时,这里做一下演示在商品服务里加一个线程睡眠时间重新启动订单服务调取商品服务,出现connect timed out错误 连接超时解决设置调取服务超时间修改调取服务配置文件。也可以指定特定服务,具体上官方文档查看原创 2020-11-09 19:23:00 · 273 阅读 · 0 评论 -
SpringCloud:服务调用之Feign实战(六)
Fegin:伪RPC客户端(本质还是用http)使用fegin,和ribbon一样,也是发送请求一:添加fegin依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </depen原创 2020-11-09 19:15:37 · 145 阅读 · 0 评论 -
SpringCloud:Ribbon自定义负载均衡实战(五)
再过一遍负载均衡流程负载均衡服务调用流程:订单服务调用商品服务,根据服务名称,先从注册中心获取所有商品服务节点。LoadBalancerClient里的choose方法,choose里的getServer方法拿到所有服务列表,拿到之后,根据本地负载均衡策略rule,默认是轮询策略,再供给restTemplate使用自定义负载均衡策略Irule可根据官方文档查看负载均衡策略负载均衡策略默认是轮询,通过配置文件的方式修改为随机需要定义哪个服务就写哪个服务名称,比如需要调商品服务,就写商品服务的名称如原创 2020-11-09 19:14:42 · 127 阅读 · 0 评论 -
SpringCloud:Ribbon负载均衡源码实战(四)
先完善上一章的订单接口新的负载均衡写法 使用LoadBalancerClient@Servicepublic class ProdctOrderServiceImpl implements ProductOrderService {// @Autowired// private RestTemplate restTemplate; @Autowired private LoadBalancerClient loabBalancerClient; @Over原创 2020-11-09 19:13:41 · 114 阅读 · 0 评论 -
SpringCloud:服务调用之Ribbon实战(三)
概述:实战电商项目 订单服务 调用商品服务获取商品信息对实战二product进行改进,会有负载均衡策略,对商品服务分两个节点,进行轮询策略。可看上一章文章1.ProductController修改 //将配置文件里的值注入 @Value("${server.port}") private String port; @RequestMapping("find") public Object findById(@RequestParam("id") int原创 2020-11-09 19:11:29 · 164 阅读 · 0 评论 -
SpringCloud:服务注册发现-Eureka Client客户端搭建商品服务实战(二)
搭建商品服务,并将服务注册到注册中心一:创建SpringBoot应用,增加服务注册和发现依赖项目架构二:模拟商品信息实体类Productpublic class Product implements Serializable { public Product(int id,String name,int price,int store){ this.id=id; this.name=name; this.price=price;原创 2020-11-07 23:00:35 · 128 阅读 · 0 评论 -
SpringCloud:服务注册发现-Eureka Server注册中心搭建实战(一)
使用IDEA搭建Eureka服务中心Server端并启动,项目基本骨架介绍官方文档:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netfix.html#spring-cloud-eureka-server第一步:创建项目File>New>Project>选择Spring Initializer注意SpringBoot版本选择Cloud Discovery服务注册发现选择Eureka Serve原创 2020-11-07 22:54:00 · 137 阅读 · 0 评论