springcloud
文章平均质量分 83
springcloud相关
zhangyingchengqi
学无止境。
展开
-
spring cloud中部分组件变更情况
原创 2022-03-27 15:17:02 · 452 阅读 · 0 评论 -
利用ab测试阻塞与非阻塞式异步编程的性能
一。 待测试的代码 1. 非阻塞式异步编程代码:@RestController@RequestMapping("/test")public class TestController { @Autowired private PiclibFuture piclibFuture; // 异步方案 @Autowired private PiclibRestService piclibRestService; //同步方案 @RequestMapp.原创 2020-11-30 20:23:34 · 243 阅读 · 0 评论 -
IDEA中设置开发环境的热部署设置
在web应用开发中,对界面进行调整后,不想总是频繁地重启应用,所以要设置一下热部置. 这里我们用的是IDEA开发工具. 1. 在Web模块的POM.xml中增加热部署组件引用和构建工程的插件配置. <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId...原创 2020-11-28 16:04:35 · 701 阅读 · 0 评论 -
zuul概述及源码分析
一。 Zuul概述:Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器zuul在集群中的地位如下图所示:Zuul扮演着”智能网关“的角色Zuul是接入网关,起到反向代理的作用,是外部消费者请求内部服务的唯一入口 Zuul也具备过滤功能,通过在运行时注入过滤规则可实现用户鉴权、动态路由、灰度发布、A/B测试、负载限流等功能二. zuul的核心:zuul由一系列的filters...原创 2020-11-07 16:23:07 · 1247 阅读 · 0 评论 -
Feign详解4- Retryer 源码分析
Retryer是重试器,主要负责Feign请求失败后的重试请求的发起. 它也要装配到Feign的Builder中.public abstract class Feign { .... public static class Builder { private Retryer retryer = new Retryer.Default(); .... }} 它也是一个接口,里面也提供了一个默认实现。 下面分析源码架构:public inte.原创 2020-11-03 17:18:15 · 1089 阅读 · 0 评论 -
Feign详解4-Encoder,Decoder组件源码分析
在Feig.Builder类中装配的encoder与decoder分别用于编码与解码。public abstract class Feign { ... public static class Builder { private Encoder encoder = new Encoder.Default(); private Decoder decoder = new Decoder.Default(); ... }}En.原创 2020-11-03 16:49:34 · 3574 阅读 · 1 评论 -
Feign详解5-springcloud OpenFeign详解
前面我们分析 Feign 参数解析的整个流程,Feign 原生已经支持 Feign、JAX-RS 1/2 声明式规范, 而springCloud feign主要对netflix feign进行了增强和包装, 使之支持Spring MVC.1. Spring Cloud OpenFeign 最简使用1.1 引入 maven<dependency> <groupId>org.springframework.cloud</groupId> ...原创 2020-11-02 21:54:08 · 1388 阅读 · 1 评论 -
Feign详解4-Contract 源码
前面我们大致分析了一下Feign的工作原理,它利用jdk面向接口的动态代理机制完成了接口实现类的创建,那Feign到底是如何适配 Feign、JAX-RS 1/2 的 REST 声明式注解,将方法的参数解析为 Http 的请求行、请求头、请求体呢?这里就不得不提Contract这个接口。1. Feign 参数编码整体流程总结:前两步是Feign代理生成阶段,解析方法参数及注解元信息。后三步是调用阶段,将方法参数编码成 Http 请求的数据格式。public in...原创 2020-10-30 17:01:04 · 1071 阅读 · 0 评论 -
Feign详解3-工作原理
1. Feign 是如何设计的首先回顾一下Feign的基本用法:接口与调用类:@Produces("application/json")public interface GitHub2_javax { @GET @Path("/repos/{owner}/{repo}/contributors") List<Contributor> contributors(@PathParam("owner") String owner, @PathParam("r..原创 2020-10-30 16:33:39 · 852 阅读 · 0 评论 -
Feign详解2
Table of Contents1. REST 声明式规范1.1Feign(默认): 在客户端声明,注解用@RequestLine,参数用@Param1.2JAX-RS:客户端声明、服务端声明@Path, @PathParam1) Contributor类还是用原来的,不变。2) pom.xml中引入JAX-RS依赖3) 访问接口类4). 测试类5) 测试完成。1.3. Spring Web MVC的例子在spring cloud整合feign中,...原创 2020-10-30 16:00:41 · 1092 阅读 · 0 评论 -
Feign详解1
目录1. 什么是 Feign2. Feign 解决了什么问题1). 引入 maven 依赖2).定义查询请求中的参数的封装类3). 定义接口4). 测试类3.Feign 声明式注解1. 什么是 FeignFeign的英文表意为“假装,伪装,变形”, 是一个 Http 请求调用的轻量级框架,可以以 Java 接口注解的方式调用 Http 请求,而不用像 Java 中通过封装 HTTP 请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候...原创 2020-10-30 14:47:55 · 1133 阅读 · 0 评论 -
Ribbon(六) Ribbon源码分析 - IRULE负载均衡的实现
具体负载均衡服务还是由IRULE实现,在ribbon的使用案例中我们可以注意到切换具体的路由实现非常简单:@RibbonClient(name = "MICROSERVICE-PROVIDER-PRODUCT", configuration = RibbonConfig.class)通过 @RibbonClient指定负载均衡的实现类 RibbonConfig后,在这个类中创建具体实现算法即可.public class RibbonConfig { @Bean pu...原创 2020-10-21 12:13:11 · 521 阅读 · 0 评论 -
Ribbon(五) Ribbon源码分析- Ribbon客户端是如何加载的
1.@RibbonClient注解: 此注解可以实现Ribbon客户端,ribbon需要设置客户端的名称,以及相关的路由配置类. 以下是启用Ribbon客户端的代码:@SpringBootApplication//指定这个新的负载算法类给 MICROSERVICE-PROVIDER-PRODUCT 这个服务用//这里的name 是服务的名称,如果需要有多个服务提供方,这个时候可以使用@RibbonClients进行配置@RibbonClient(name = "MICROSERVI...原创 2020-10-21 11:14:48 · 1083 阅读 · 1 评论 -
Feign启用日志
需求: 想追踪Feign客户端发送的数据. Feign在构建被@FeignClient注解修饰的服务客户端时,会为每一个客户端都创建一个feign.Logger实例,这样就可以利用该日志对象的DEBUG模式来帮助分析Feign的请求细节。 实现步骤: 1.在application.yml中使用 logging.level.<Feign客户端对应的接口的全限定名> 的参数配置格式来开启指定客户端日志.logging: level: com:...原创 2020-10-16 15:21:25 · 1682 阅读 · 0 评论 -
feign启用网络压缩
Spring Cloud feign支持对请求与响应进行GZIP压缩,以减少通信中的性能损耗.在spring-cloud-openfeign-core.jar文件中.默认对请求和相应压缩是禁用的,从org.springframework.cloud.openfeign.encoding;.FeignContentGzipEncodingAutoConfiguration类中可以看到请求压缩是禁用的.@ConditionalOnProperty( value = {"feign...原创 2020-10-14 16:33:48 · 1935 阅读 · 1 评论 -
Ribbon(四) Ribbon源码分析- 在RestTemplate中发出请求时如何被LoadBalancerInterceptor拦截的逻辑
接上一篇.LoadBalancerInterceptor是实现了ClientHttpRequestInterceptor接口的。 它是拦截的起点。 @FunctionalInterfacepublic interface ClientHttpRequestInterceptor { /** *实现该方法,在该方法内完成拦截请求后的逻辑内容。 *对于ribbon而言,在该方法内完成了根据具体规则从服务集群中选取一个服务,并向该服务发起请求的操作。 */..原创 2020-10-13 15:02:48 · 649 阅读 · 0 评论 -
Ribbon(三) Ribbon源码分析-负载均衡是如何通过@LoadBalanced 自动配置上去的
Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们...原创 2020-10-13 14:31:29 · 745 阅读 · 0 评论 -
Ribbon(二) 负载均衡基础-什么是负载均衡
负载均衡是对系统的高可用、网络峰值压力的缓解和处理能力扩容的重要手段之一,是分布式系统基础架构.负载均衡的实现有两种:硬件实现负载均衡:通过在服务器节点之间安装专门用于负载均衡的设备,比如F5等 软件实现负载均衡:通过在服务器上安装一些用于负载均衡功能或模块等软件来完成请求分发工作,比如Nginx等负载均衡系统(不论软硬件实现)的核心:维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该...原创 2020-10-12 16:23:51 · 264 阅读 · 0 评论 -
Ribbon(一) 负载均衡基础-如何配置负载均衡并测试
在spring cloud的服务注册与发现中,我们在Eureka Client中当要使用服务消费者调用服务的时候,是通过负载均衡方式调用的。一般的用法如下:1.在配置类中,声明一个RestTemplate的bean,用@LoadBalanced注解修饰://一个配置类:由spring托管@SpringBootConfigurationpublic class AppConfig { @Bean //创建一个 restTemplate 的模板操作对象 @Load...原创 2020-10-12 16:06:55 · 1299 阅读 · 1 评论 -
Eureka(五) Eurka源码分析之 Eureka Server源码分析
EurekaServerAutoConfiguration是通过配置文件注册(@Bean)。EurekaServer 是服务的注册中心,负责Eureka Client的相关信息注册,主要职责服务注册 接受心跳服务 服务剔除: 由eurekaServer主动剔除 心跳超时的服务 服务下线: 由 eurekaClient主动发送下线通知后,由eurekaServer接收后,删除服务 集群同步首先找到 spring-cloud-netflix-eureka-server.xxx.jar下MET...原创 2020-10-11 16:18:28 · 1567 阅读 · 0 评论 -
Eureka(四) Eureka 源码分析之EurekaClient源码分析
一.EurekaClientEurekaClient 为了简化开发人员的工作量,将很多与EurekaServer交互的工作隐藏起来,自主完成。具体完成的工作分为三个阶段, 应用启动阶段,执行阶段, 销毁阶段. 各阶段的工作如下:应用启动阶段读取与 Eureka Server交互的配置信息,封装成 EurekaClientConfig 读取自身服务实例配置信息,封装成EurekalnstanceConfig 从Eureka server拉取注册表信息并缓存到本地 服务注册...原创 2020-10-11 14:30:23 · 793 阅读 · 1 评论 -
Eureka(三) Eurka工作流程
1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常4、当 Eureka Server 90s 内没有收到 Eureka Client..原创 2020-10-11 12:08:22 · 556 阅读 · 0 评论 -
Eureka(二) Eureka集群工作原理
我们假设有三台 Eureka Server 组成的集群,这样三台 Eureka Server 就组建成了一个跨区域的高可用集群,只要三个地方的任意一个机房不出现问题,都不会影响整个架构的稳定性。 Eureka Server 集群相互之间通过 Replicate 来同步数据,相互之间不区分主节点和从节点,所有的节点都是平等的。在这种架构中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。 如果某台 Eurek...原创 2020-10-11 12:03:17 · 1652 阅读 · 0 评论 -
Eureka(一) 基础组件与工作原理
一.Eureka 核心概念整体上可以分为两个主体:Eureka Server 和 Eureka Client. Service provider和Service consumer本质都是Eureka Client.Eureka Server:注册中心服务端, 功能如下:服务注册:服务提供者启动时,会通过 Eureka Client 向 Eureka Server 发送REST请求的方式向Eureka Server注册自己的服务信息数据,这些数据是服务自身的元数据,比如ip地址、端口...原创 2020-10-11 11:53:26 · 517 阅读 · 0 评论 -
服务注册中心Eureka与Zookeeper比较
1. 前言服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件,例如rocketmq的name server,hdfs中的namenode,dubbo中的zk注册中心,spring cloud中的服务注册中心eureka。 在spring cloud中,除了可以使用eureka作为注册中心外,还可以通过配置的方式使用zookeeper作为注册中心。...转载 2020-10-06 07:30:02 · 295 阅读 · 0 评论 -
服务注册中心解决方案Eureka与Zookeeper比较
服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件,例如rocketmq的name server,hdfs中的namenode,dubbo中的zk注册中心,spring cloud中的服务注册中心eureka。 在spring cloud中,除了可以使用eureka作为注册中心外,还可以通过配置的方式使用zookeeper作为注册中心。既然这样,我...转载 2020-10-06 07:25:58 · 502 阅读 · 0 评论 -
SpringBoot与SpringCloud的版本对应详细版
Spring Cloud是基于Spring Boot技术为基础的,在技术选型时,版本不是随便选择的,否则可能会造成很多意料之外的错误,比如eureka注册了结果找不到服务类啊,比如某些jar导入不进来啊,等等这些错误。 1. 首先可以查看目前maven官方仓库中SpringBoot与SpringCloud版本列表: spring-cloud-dependencies 版本列表可查看: https://mvnrepository.com/artifact/org.springf...原创 2020-10-05 20:29:33 · 10007 阅读 · 0 评论 -
微服务开发要考虑的问题及基于spring cloud的解决方案
编写并运行健壮的微服务要考虑的问题:核心微服务开发模式微服务路由模式微服务客户端弹性模式:因为微服务架构是高度分布式的,所以必须对如何防止单个服务(或服务实例)中的问题级联暴露给服务的消费者微服务安全模式:使用基于令牌的安全方案,可以实现服务验证和授权,而无需传递客户端凭证微服务日志记录和跟踪模式:微服务构建和布署模式 :spring cloud中实现以上模式的技术栈总览:轻量级微服务全局架构: ...原创 2020-10-04 15:20:52 · 417 阅读 · 0 评论 -
springcloud中使用zookeeper做服务注册发现异常
使用zookeeper 3.4服务器做为spring cloud的服务注册与发现时出现的异常如下:org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /services/application/c7d9940d-fbb5-474c-a782-52761fb9e682 at org.apache.zookeeper.KeeperException.create.原创 2020-10-02 22:03:34 · 1852 阅读 · 0 评论