海锋博客

大量文档在有道笔记,有时间即会更新发帖

Feign集成Hystrix源码分析以及扩展

前言在《Hystrix源码浅析》中分析过request cache的相关源码实现,而在Feign中集成了Ribbon与Hystrix两个重要组件,但很遗憾其默认设计中并没有对hystrix request cache的实现。故而本章节将从源码出发,了解Feign是如何集成Hystrix组件的,以便...

2018-05-28 23:00:13

阅读数:377

评论数:0

Hystrix源码浅析

前言最近在项目中需要使用Hystrix的request cache来提升服务的稳定性与高性能,其对于单个request请求,能够对指定方法methodA的返回值进行缓存,在多次调用methodA方法时仅会执行方法体一次,从而降低本次请求的复杂度。如果在methodA中存在对下游服务的依赖,则同步能...

2018-05-17 00:42:26

阅读数:169

评论数:0

Hystrix实现ThreadLocal上下文的传递

前言Hystrix提供了基于信号量和线程两种隔离模式,通过在Hystrix基础章节中已经验证过,通过@HystrixCommand注解的方法体将在新的线程中执行,这样会带来些什么意想不到的意外呢,先来看一个示例:1、定义一个webapi,通过RequestContextHolder设定一个当前线程...

2018-05-17 00:23:58

阅读数:453

评论数:0

Consul小贴士-记一次Consul注册failing状态跟踪

前言最近抽了点时间基于最新的Consul1.0.2构建了集群,替换了原来的0.9.2服务。结果在启动基于SpringCloud D版的服务时所有节点的health状态均为DOWN,瞬间一切都不好了,本章记录如何进行坑点的排查并解决的过程,提供一个源码阅读的思路。本章概要1、场景描述;2、源码分析;...

2018-04-23 16:40:52

阅读数:486

评论数:0

Stream进阶篇-KafkaBinder与RabbitBinder共存应用

前言 在《Stream基础篇-Stream入门应用》中已经介绍过,Spring Cloud Stream预定义实现了Kafka、RabbitMQ两个消息中间件的绑定器Binnder,在大部分业务场景下,可能都只需要使用一个类型的Binder即可满足业务需求。但我们无法排除在多个业务系统复杂应用的...

2018-02-07 01:35:55

阅读数:389

评论数:0

Stream进阶篇-动态绑定消息通道

前言 在之前的章节中,所有消费者和生产者均通过@EnableBinding定义,此方式能够快速的构建生产消费关系,但仔细想想,如果我们需要根据一定的条件决策消息生产者将消息发往哪个通道,貌似当前简单粗暴的方式无法满足。如此常见的场景,springcloud必然会帮我们想到,通过BinderAwa...

2018-02-06 23:11:50

阅读数:1036

评论数:0

Stream进阶篇-消息分区实现验证&源码简析

前言 在《消费组实现验证》章节,已经介绍了如何通过消费组避免单个消息被多个实例重复消费。但还有一些场景需要满足,同一个特征的数据被同一个实例消费,比如同一个id的传感器监测数据必须被同一个实例统计计算分析,否则可能无法获取全部的数据。又比如部分异步任务,首次请求启动task,二次请求取消task...

2018-02-06 02:12:39

阅读数:261

评论数:1

Stream进阶篇-消费组实现验证

前言 通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。 默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生...

2018-02-05 21:39:27

阅读数:934

评论数:1

Stream进阶篇-StreamListener实现多个方法调度

前言在《Stream进阶篇-实体对象数据的生产消费与转换》章节,已经展示了如何获取header信息,本小节将更加具体的展示其特性,并结合@StreamListener注解的condition参数实现多个监听者方法的选择调度。场景描述:如上图,sender服务发送消息至user-channel通道,...

2018-02-05 21:24:07

阅读数:1858

评论数:3

Stream进阶篇-实体对象数据的生产消费与转换

前言 在各微服务通信中,主要以json字符串作为内容载体,在实际业务中,通常会自定义实体亦或是构造Map、List等数据作为生产消费对象,SpringBoot通过对MessageConvertor的实现,已经很好的协助我们完成了Json与对象的转换过程,在MVC的REST-API部分已经被充分应...

2018-02-05 21:11:43

阅读数:716

评论数:0

Stream基础篇-Stream入门应用

Spring Cloud Stream是什么? Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。它可以基于Spring Boot来创建独立的、可用于生产的Spring应用程序。它通过使用Spring Integration来连接消息代理中间件以实现消息事件...

2018-02-04 16:17:40

阅读数:1113

评论数:1

Zinkin进阶篇-Zipkin-dependencies的应用

前言 之前章节中已经实现了zipkin数据持久化至elasticsearch,但其带来了一个负面作用,无法正常显示dependencies。通过阅读zipkin在github说明,可以看到已经有了解决方案,本章将介绍如何实现并验证。 本章概要 1、寻找解决方案; 2、方案验证; ...

2018-01-30 13:51:38

阅读数:2722

评论数:6

Feign小贴士-MultipartFile与RequestBoby的共存BUG修复

前言  在Zuul章节介绍过如何通过Feign实现文件的上传,但当时留下一个大大的BUG,通过feign-form实现文件上传,会导致无法解码@Requestboby中传递的Map、User等等对象,会造成500错误,鉴于此在feign-form项目中提了一个Issue(https://gith...

2018-01-19 23:23:06

阅读数:1309

评论数:0

1、Eureka实现服务注册与发现

有道迁移样式不够友好,故提供链接如下; http://note.youdao.com/noteshare?id=6f6e31803027e075a8fa2446cd3df3f8&sub=DFB2B79124BE4898860660F0EADD44E9

2017-07-03 13:28:14

阅读数:302

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭