![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springcloud
文章平均质量分 87
帅天下
这个作者很懒,什么都没留下…
展开
-
1、Eureka实现服务注册与发现
有道迁移样式不够友好,故提供链接如下;http://note.youdao.com/noteshare?id=6f6e31803027e075a8fa2446cd3df3f8&sub=DFB2B79124BE4898860660F0EADD44E9原创 2017-07-03 13:28:14 · 499 阅读 · 0 评论 -
Stream进阶篇-动态绑定消息通道
前言在之前的章节中,所有消费者和生产者均通过@EnableBinding定义,此方式能够快速的构建生产消费关系,但仔细想想,如果我们需要根据一定的条件决策消息生产者将消息发往哪个通道,貌似当前简单粗暴的方式无法满足。如此常见的场景,springcloud必然会帮我们想到,通过BinderAwareChannelResolver的bean实例即可实现动态通道的选择,其会伴随@EnableBind原创 2018-02-06 23:11:50 · 11044 阅读 · 0 评论 -
Stream进阶篇-KafkaBinder与RabbitBinder共存应用
前言在《Stream基础篇-Stream入门应用》中已经介绍过,Spring Cloud Stream预定义实现了Kafka、RabbitMQ两个消息中间件的绑定器Binnder,在大部分业务场景下,可能都只需要使用一个类型的Binder即可满足业务需求。但我们无法排除在多个业务系统复杂应用的场景下,可能需要同时连接Kafka和RabbitMQ,本章将介绍如何在单个应用内,实现KafkaBin原创 2018-02-07 01:35:55 · 3812 阅读 · 0 评论 -
Consul小贴士-记一次Consul注册failing状态跟踪
前言最近抽了点时间基于最新的Consul1.0.2构建了集群,替换了原来的0.9.2服务。结果在启动基于SpringCloud D版的服务时所有节点的health状态均为DOWN,瞬间一切都不好了,本章记录如何进行坑点的排查并解决的过程,提供一个源码阅读的思路。本章概要1、场景描述;2、源码分析;场景1、首先看到如下config-server服务处于failing状态:2、通过其health端点即...原创 2018-04-23 16:40:52 · 2860 阅读 · 0 评论 -
Hystrix实现ThreadLocal上下文的传递
前言Hystrix提供了基于信号量和线程两种隔离模式,通过在Hystrix基础章节中已经验证过,通过@HystrixCommand注解的方法体将在新的线程中执行,这样会带来些什么意想不到的意外呢,先来看一个示例:1、定义一个webapi,通过RequestContextHolder设定一个当前线程的上下文:@GetMapping(value = "/getServerInfo/{serviceNa...原创 2018-05-17 00:23:58 · 8950 阅读 · 5 评论 -
Hystrix源码浅析
前言最近在项目中需要使用Hystrix的request cache来提升服务的稳定性与高性能,其对于单个request请求,能够对指定方法methodA的返回值进行缓存,在多次调用methodA方法时仅会执行方法体一次,从而降低本次请求的复杂度。如果在methodA中存在对下游服务的依赖,则同步能够提高下游服务的稳定性,一定程度降低其并发性要求。Cache中的数据会存在更新,Hystrix同步提供...原创 2018-05-17 00:42:26 · 2507 阅读 · 0 评论 -
Feign集成Hystrix源码分析以及扩展
前言在《Hystrix源码浅析》中分析过request cache的相关源码实现,而在Feign中集成了Ribbon与Hystrix两个重要组件,但很遗憾其默认设计中并没有对hystrix request cache的实现。故而本章节将从源码出发,了解Feign是如何集成Hystrix组件的,以便后续我们扩展Hystrix在Feign中的应用。正文部分将分为4个阶段分析,为何是4个阶段呢,看了就明...原创 2018-05-28 23:00:13 · 3968 阅读 · 1 评论 -
Stream进阶篇-消费组实现验证
前言通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来实现这样的功能,实现的方式原创 2018-02-05 21:39:27 · 4060 阅读 · 5 评论 -
Stream进阶篇-消息分区实现验证&源码简析
前言在《消费组实现验证》章节,已经介绍了如何通过消费组避免单个消息被多个实例重复消费。但还有一些场景需要满足,同一个特征的数据被同一个实例消费,比如同一个id的传感器监测数据必须被同一个实例统计计算分析,否则可能无法获取全部的数据。又比如部分异步任务,首次请求启动task,二次请求取消task,此场景就必须保证两次请求至同一实例。本章将介绍如何通过消息分区实现上述场景应用。本章概要原创 2018-02-06 02:12:39 · 2377 阅读 · 5 评论 -
Zinkin进阶篇-Zipkin-dependencies的应用
前言之前章节中已经实现了zipkin数据持久化至elasticsearch,但其带来了一个负面作用,无法正常显示dependencies。通过阅读zipkin在github说明,可以看到已经有了解决方案,本章将介绍如何实现并验证。本章概要1、寻找解决方案;2、方案验证;寻找解决方案1、通过阅读Zipkin在Github(https://github.com/原创 2018-01-30 13:51:38 · 12946 阅读 · 11 评论 -
Feign小贴士-MultipartFile与RequestBoby的共存BUG修复
前言 在Zuul章节介绍过如何通过Feign实现文件的上传,但当时留下一个大大的BUG,通过feign-form实现文件上传,会导致无法解码@Requestboby中传递的Map、User等等对象,会造成500错误,鉴于此在feign-form项目中提了一个Issue(https://github.com/OpenFeign/feign-form/issues/19)很开心作者在3个多月后给出原创 2018-01-19 23:23:06 · 10486 阅读 · 0 评论 -
Stream基础篇-Stream入门应用
Spring Cloud Stream是什么?Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。它可以基于Spring Boot来创建独立的、可用于生产的Spring应用程序。它通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动的微服务应用。简单的说,Spring Cloud Stream本质上就是整合了Spring Boo原创 2018-02-04 16:17:40 · 10199 阅读 · 5 评论 -
Stream进阶篇-实体对象数据的生产消费与转换
前言在各微服务通信中,主要以json字符串作为内容载体,在实际业务中,通常会自定义实体亦或是构造Map、List等数据作为生产消费对象,SpringBoot通过对MessageConvertor的实现,已经很好的协助我们完成了Json与对象的转换过程,在MVC的REST-API部分已经被充分应用。那么在Stream中呢,是否还需要我们每次硬编码实现呢,答案是否定的。本章节将实现验证Stream原创 2018-02-05 21:11:43 · 6484 阅读 · 0 评论 -
Stream进阶篇-StreamListener实现多个方法调度
前言在《Stream进阶篇-实体对象数据的生产消费与转换》章节,已经展示了如何获取header信息,本小节将更加具体的展示其特性,并结合@StreamListener注解的condition参数实现多个监听者方法的选择调度。场景描述:如上图,sender服务发送消息至user-channel通道,如果头信息中flag值为aa则被StreamListener1接收;如果flag值为bb则被Strea...原创 2018-02-05 21:24:07 · 26514 阅读 · 3 评论 -
SpringCloudGateway中ratelimiter源码分析
本章概要前言正文Redis分布式限流的核心组件如何配置路由如何处理请求如何刷新路由配置总结前言在SpringCloudGateway中官方默认提供了基于Redis的分布式限流方案,对于大部分的场景开箱即用。但实际应用场景下,针对不同的业务场景可能需要进行定制化扩展,此时很有必要了解其工作原理,从而更加快速有效的实现自定义扩展。正文此部分将通过3个层面逐步展开:Redis分布式限流的核心...原创 2019-06-22 23:37:21 · 5269 阅读 · 1 评论