![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringCloud
SpringCloud技术栈详解
四月丶丶
越努力越幸运
展开
-
Spring Cloud Sleuth日志打印logback配置文件模板
配置文件名称 logback-spring.xml<?xml version="1.0" encoding="UTF-8"?><configuration> <property name="PROJECT" value="xxx-service"/> <property name="LOG_PATH" value="/logs/${PROJECT}/"/> <property name="maxHistory" val.原创 2020-09-09 19:37:01 · 2439 阅读 · 0 评论 -
基于Spring Cloud OAuth2 实现 JWT
1. 前言在上一篇文章中我们介绍了Spring Cloud OAuth2的使用方式,详细请看文章链接 其中会有一些问题,如下思考:当我们第一次登陆之后,认证服务器颁发token并将其存储在认证服务器中,后期我们访问资源服务器时会携带token,资源服务器会请求认证服务器验证token有效性,如果资源 服务器有很多,那么认证服务器压力会很大…另外,资源服务器向认证服务器check_token,获取的也是用户信息UserInfo,能否把用户信 息存储到令牌中,让客户端一直持有这个令牌,令牌的验证也在资原创 2020-09-08 16:17:40 · 274 阅读 · 0 评论 -
Spring Cloud OAuth2 简介及使用
1. 微服务架构下统一认证思路基于Session的认证方式在分布式的环境下,基于session的认证会出现一个问题,每个应用服务都需要在session中存储用 户身份信息,通过负载均衡将本地的请求分配到另一个应用服务需要将session信息带过去,否则 会重新认证。我们可以使用Session共享、Session黏贴等方案。Session方案也有缺点,比如基于cookie,移动端不能有效使用等基于token的认证方式基于token的认证方式,服务端不用存储认证数据,易维护扩展性强, 客户端可原创 2020-09-08 14:09:12 · 7087 阅读 · 0 评论 -
Spring Cloud Sleuth整合Zipkin
1. 简介在使用Spring Cloud Sleuth的时候,日志在控制台展示,这样的日志首先不容易阅读观察,另外日志分散在各个微服务服务器上,所以我们一般使用zipkin统一聚合轨迹日志并进行存储展示。把 Sleuth 的数据信息发送给 Zipkin进行聚合,利用 Zipkin 存储并展示数据。2. 结合 Zipkin展示追踪数据Zipkin 包括Zipkin Server和 Zipkin Client两部分,Zipkin Server是一个单独的服务,Zipkin Client就是具体的微服务原创 2020-09-08 00:21:56 · 338 阅读 · 0 评论 -
分布式链路追踪Spring Cloud Sleuth简介及使用
1. 问题场景为了支撑日益增⻓的庞大业务量,我们会使用微服务架构设计我们的系统,使得我们的系统不仅能够通过集群部署抵挡流量的冲击,又能根据业务进行灵活的扩展。那么,在微服务架构下,一次请求少则经过三四次服务调用完成,多则跨越几十个甚至是上百个服 务节点。那么问题接踵而来:如何动态展示服务的调用链路?(比如A服务调用了哪些其他的服务—依赖关系)如何分析服务调用链路中的瓶颈节点并对其进行调优?(比如A—>B—>C,C服务处理时间特别⻓)如何快速进行服务链路的故障发现?解决以上问题就是原创 2020-09-07 23:57:31 · 434 阅读 · 0 评论 -
SpringCloud常⻅问题及解决方案
1. Eureka 服务发现慢问题如果你刚刚接触Eureka,对Eureka的设计和实现都不是很了解,可能就会遇到一些无法快速解决的问 题,这些问题包括:新服务上线后,服务消费者不能访问到刚上线的新服务,需要过一段时间后才能访 问?或是将服务下线后,服务还是会被调用到,一段时候后才彻底停止服务,访问前期会导致频繁报 错?这些问题还会让你对 Spring Cloud 产生严重的怀疑,这难道不是一个 Bug?问题场景: 上线一个新的服务实例,但是服务消费者无感知,过了一段时间才知道 某一个服务实例下线了,服原创 2020-08-27 21:19:06 · 458 阅读 · 0 评论 -
Spring Cloud Stream 消息驱动组件简介及使用
1. 简介Spring Cloud Stream 消息驱动组件帮助我们更快速,更方便,更友好的去构建消息驱动微服务的。MQ消息中间件广泛应用在应用解耦合、异步消息处理、流量削峰等场景中。不同的MQ消息中间件内部机制包括使用方式都会有所不同,比如RabbitMQ中有Exchange(交换机/交 换器)这一概念,kafka有Topic、Partition分区这些概念,MQ消息中间件的差异性不利于我们上层的 开发应用,当我们的系统希望从原有的RabbitMQ切换到Kafka时,我们会发现比较困难,很多要操作原创 2020-08-27 19:02:07 · 246 阅读 · 0 评论 -
Spring Cloud Config 分布式配置中心简介及使用
1. 分布式配置中心应用场景往往,我们使用配置文件管理一些配置信息,比如application.yml单体应用架构,配置信息的管理、维护并不会显得特别麻烦,手动操作就可以,因为就一个工程;微服务架构,因为我们的分布式集群环境中可能有很多个微服务,我们不可能一个一个去修改配置然后 重启生效,在一定场景下我们还需要在运行期间动态调整配置信息,比如:根据各个微服务的负载情 况,动态调整数据源连接池大小,我们希望配置内容发生变化的时候,微服务可以自动更新。场景总结如下:集中配置管理,一个微服务架构中原创 2020-08-27 15:05:18 · 231 阅读 · 0 评论 -
GateWay简介及使用
1. 简介Spring Cloud GateWay是Spring Cloud的一个全新项目,目标是取代Netflix Zuul,它基于 Spring5.0+SpringBoot2.0+WebFlux(基于高性能的Reactor模式响应式通信框架Netty,异步非阻塞模 型)等技术开发,性能高于Zuul,官方测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供一种简 单有效的统一的API路由管理方式。Spring Cloud GateWay不仅提供统一的路由方式(反向代理)并且基于 Filter转载 2020-08-27 00:04:42 · 4864 阅读 · 1 评论 -
Feign简介及使用
1. Feign简介Feign是Netflix开发的一个轻量级RESTful的HTTP服务客户端(用它来发起请求,远程调用的),是以 Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用,Feign被 广泛应用在Spring Cloud 的解决方案中。类似于Dubbo,服务消费者拿到服务提供者的接口,然后像调用本地接口方法一样去调用,实际发出的是远程的请求。Feign可帮助我们更加便捷,优雅的调用HTTP API:不需要我们去拼接url然后呢调用 res转载 2020-08-26 16:12:33 · 582 阅读 · 0 评论 -
Hystrix Turbine聚合监控简介及使用
简介在上一篇文章中我们介绍了Hystrix Dashboard,我们针对的是一个微服务实例的Hystrix数据查询分析,在微服务架构下,一个微服务的实例往往 是多个(集群化)比如实例1(hystrix) ip1:port1/actuator/hystrix.stream实例2(hystrix) ip2:port2/actuator/hystrix.stream实例3(hystrix) ip3:port3/actuator/hystrix.stream按照已有的方法,我们就可以结合dashboar原创 2020-08-25 23:39:52 · 561 阅读 · 0 评论 -
Hystrix Dashboard断路监控仪表盘使用
简介在上一篇文章中介绍了Hystrix的使用,如果我们想看到Hystrix相关数据,比如有多少请求、多少成功、多少失败、多少降级等,那么引入 SpringBoot健康监控之后,访问/actuator/hystrix.stream接口可以获取到监控的文字信息,但是不直观,所以Hystrix官方还提供了基于图形化的DashBoard(仪表板)监控平 台。Hystrix仪表板可以显示每个断路器(被@HystrixCommand注解的方法)的状态。搭建过程首先创建一个SpringBoot工程,引入依赖原创 2020-08-24 01:10:33 · 143 阅读 · 0 评论 -
Hystrix简介及使用
Hystrix简介Hystrix是由Netflix开源的一个延迟和容错库,用 于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主 要通过以下几点实现延迟和容错。包裹请求:使用HystrixCommand包裹对依赖的调用逻辑。 服务消费者方法 使用@HystrixCommand 添加Hystrix控制跳闸机制:当某服务的错误率超过一定的阈值时,Hystrix可以跳闸,停止请求该服务一段时间。资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(舱原创 2020-08-25 22:16:08 · 239 阅读 · 0 评论 -
Ribbon核心源码剖析
1. Ribbon处理流程2. Ribbon细节结构图(涉及到底层的一些组件/类的描述)图中核心是负载均衡管理器LoadBalancer(总的协调者,相当于大脑,为了做事情,协调四肢),围 绕它周围的多有IRule、IPing等IRule:是在选择实例的时候的负载均衡策略对象IPing:是用来向服务发起心跳检测的,通过心跳检测来判断该服务是否可用ServerListFilter:根据一些规则过滤传入的服务实例列表ServerListUpdater:定义了一系列的对服务列表的更新操作3.原创 2020-08-24 19:59:01 · 171 阅读 · 0 评论 -
Ribbon负载均衡简介及使用
1. 关于负载均衡负载均衡一般分为服务器端负载均衡和客户端负载均衡服务器端负载均衡:比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法 将请求路由到目标服务器处理。客户端负载均衡:比如我们要说的Ribbon,服务消费者客户端会有一个服务器地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负载均衡算法的执行是在请求客户端进行。Ribbon是Netflix发布的负载均衡器。Eureka一般配合Ribbon进行使用,Ribbon利用从Eureka中读转载 2020-08-24 17:12:47 · 214 阅读 · 0 评论 -
Eureka Client源码分析(1)-注册服务
前面的文章分析了Eureka Server,是基于SpringBoot自动装配实现的,Eureka Client同样如此,查看spring-cloud-netflix-eureka-client- 2.1.0.RELEASE.jar下的文件结构,如下点开spring.factories,内容如下org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.netflix.eureka原创 2020-08-24 01:01:13 · 133 阅读 · 0 评论 -
Eureka Server源码分析(4)-服务续约接口(接受客户端续约)
入口:InstanceResource的renewLease方法中完成客户端的心跳(续约)处理,关键代码: registry.renew(app.getName(), id, isFromReplicaNode);@PUTpublic Response renewLease( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication, @QueryParam("overriddenstatu原创 2020-08-23 23:48:57 · 123 阅读 · 0 评论 -
Eureka Server源码分析(3)-服务注册接口(接受客户端注册服务)
服务注册入口在ApplicationResource类的addInstance()方法中代码:registry.register(info,“true”.equals(isReplication))@POST@Consumes({"application/json", "application/xml"})public Response addInstance(InstanceInfo info, @HeaderParam(PeerEurekaN原创 2020-08-23 23:40:01 · 209 阅读 · 0 评论 -
Eureka Server源码分析(2)-服务接口暴露
在上一篇文章中分了启动过程会注册一个Jersey过滤器,Jersey是一个rest框架帮我们发布restful服务接,类似于springmvc,它的功能就是暴露服务接口。如下/** * 注册Jersey过滤器 * Jersey是一个rest框架帮我们发布restful服务接,类似于springmvc */ @Bean public FilterRegistrationBean<?> jerseyFilterRegistration( javax.ws.rs.core.Applic原创 2020-08-23 23:17:09 · 335 阅读 · 0 评论 -
Eureka Server源码分析(1)-启动过程
标识一个服务为EurekaServer,只需要在启动类加上注解@EnableEurekaServer即可,所以先观察下EnableEurekaServer@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented//导入Marker对象,自动装配EurekaServerAutoConfiguration的前提@Import(EurekaServerMarkerConfiguration.class)public原创 2020-08-23 22:47:39 · 163 阅读 · 0 评论 -
Eureka数据详解
1. Eureka元数据详解Eureka的元数据有两种:标准元数据和自定义元数据。标准元数据:主机名、IP地址、端口号等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。自定义元数据:可以使用eureka.instance.metadata-map配置,符合KEY/VALUE的存储格式。这些元数据可以在远程客户端中访问。构建一个服务提供者微服务,配置自定义元数据信息,如下eureka: instance: # hostname: EurekaServerA p原创 2020-08-21 14:29:32 · 890 阅读 · 0 评论 -
搭建Eureka Server 高可用集群
2. 简介在互联网应用中,服务实例很少有单个的。即使微服务消费者会缓存服务列表,但是如果EurekaServer只有一个实例,该实例挂掉,正好微服务消 费者本地缓存列表中的服务实例也不可用,那么这个时候整个系统都受影响。在生产环境中,我们会配置Eureka Server集群实现高可用。Eureka Server集群之中的节点通过点对点 (P2P)通信的方式共享服务注册表。这里我们示例开启两台 Eureka Server 以搭建集群。2. 工程搭建步骤Spring Cloud 利用Spring B原创 2020-08-21 12:43:25 · 855 阅读 · 0 评论 -
Eureka配置参数详细说明
1. Eureka Client 配置项(eureka.client.*)org.springframework.cloud.netflix.eureka.EurekaClientConfigBean参数名称说明默认值eureka.client.enabled用于指示Eureka客户端已启用的标志trueeureka.client.registry-fetch-interval-seconds指示从eureka服务器获取注册表信息的频率(s)30eureka.c原创 2020-08-20 21:05:29 · 777 阅读 · 0 评论 -
搭建单实例Eureka Server服务注册中心
Spring Cloud 利用Spring Boot 可以快速的实现微服务组件开发,所以Spring Boot是我们快速把Spring Cloud微服务技术应用起 来的一种方式。这里我们可以借助IDEA快速创建一个SpringBoot工程,创建的过程中可以选择各种所需要的组件,过程如下File->new Project点击Next,下面的选项自己按需填写点击Next,因为我们搭建的是Eureka Server服务注册中心,所以只需要勾选Eureka Server就可以了点击Next-&g原创 2020-08-20 19:33:27 · 150 阅读 · 0 评论 -
Eureka简介
1. 简介Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。2. Eureka 基础架构3. Eureka 交互流程及原理下图是官网描述的一个架构图Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Clien原创 2020-08-20 17:39:23 · 383 阅读 · 0 评论 -
服务注册中心简介对比
1. 服务注册中心简介服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者(比如简历微服务部署多个实例),这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法 预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理 微服务提供者的注册与发现,而这个组件就是服务注册中心。2. 服务注册中心一般原理分布式微服务架构中,服务注册中心用于存储服务转载 2020-08-20 17:11:11 · 195 阅读 · 0 评论