10 帅天下

尚未进行身份认证

暂无相关描述

等级
博文 63
排名 1w+

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

前言在《Hystrix源码浅析》中分析过requestcache的相关源码实现,而在Feign中集成了Ribbon与Hystrix两个重要组件,但很遗憾其默认设计中并没有对hystrixrequestcache的实现。故而本章节将从源码出发,了解Feign是如何集成Hystrix组件的,以便后续我们扩展Hystrix在Feign中的应用。正文部分将分为4个阶段分析,为何是4个阶段呢,看了就明...

2018-05-28 23:00:13

Hystrix源码浅析

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

2018-05-17 00:42:26

Hystrix实现ThreadLocal上下文的传递

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

2018-05-17 00:23:58

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

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

2018-04-23 16:40:52

基于IDEA构建Spark应用并部署

前言本章将介绍如何通过IDEA构建Spark应用,并最终部署。构建应用Java应用1、新建一个maven项目,并在POM中添加如下依赖:<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8&lt...

2018-03-15 23:03:47

Win10安装使用Hadoop3.0.0

本章将一步一步在win10下安装Hadoop3.0.0,并启动服务进行简单的hdfs操作。准备工作1、Hadoop官方下载地址:http://hadoop.apache.org/releases.html选择最新的3.0.0版本后跳转至下面的页面选择红色框部分链接即可下载,建议采用专业的下载工具下载,速度更快2、将tar.gz包解压至D盘根目录:Note:必须用管理员权限解压3、配置环境变量:添加...

2018-03-15 22:45:48

Stable与PreSale版本同时在线的一些思考

最近部门在讨论代码流程管理,无论是采用标准的gitflow还是github的分支模型都无法规避一个话题,如何同步实现Stable和PreSale兼容的事宜,目前将采用fork项目、双主分支同步开发的双模式方案尝试,但仔细思考,以上两种方式在研发过程有一个共性,均需要我们类似的维护多项目,但又需要指定里程碑的MR操作。先不去想是否是最合适的,但有一种可能大家都不是那么在意的傻瓜方式,通过版本(开关)...

2018-03-11 22:04:15

Spark在Win10下的环境搭建

前言本章将介绍如何在WIN10下实现spark环境搭建。本章概要1、版本说明2、环境准备:jdk配置;scala安装与配置;spark安装与配置;hadoop安装与配置;版本说明jdk:1.8scala:2.11.8spark:2.3.0hadoop:2.8.3环境准备jdk配置1、配置JAVA_HOME与Path:Path2、验证配置:scala安装与配置1、scala下载:访问官方地址http...

2018-03-08 10:15:06

Spring-Retry应用

前言springretry是从springbatch独立出来的一个能功能,主要实现了重试和熔断。对于重试是有场景限制的,不是什么场景都适合重试,比如参数校验不合法、写操作等(要考虑写是否幂等)都不适合重试。远程调用超时、网络突然中断可以重试。在微服务治理框架中,通常都有自己的重试与超时配置,比如dubbo可以设置retries=1,timeout=500调用失败只重试1次,超过500ms调用仍...

2018-03-05 01:22:04

Guava-Retry实践

前言在实际业务中,有非常多场景需要我们进行重试操作,编码中通过采用各种回调的方式来抽象重试的实现,但都不是那么理想。通过简单的调研,目前主要有Guava-Retry和Spring-Retry作为三方库比较流行,本章节将介绍Guava-Retry的实际应用。Guave在github地址(https://github.com/rholder/guava-retrying),可以看到其已经有很长一段时间...

2018-03-04 22:09:49

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

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

2018-02-07 01:35:55

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

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

2018-02-06 23:11:50

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

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

2018-02-06 02:12:39

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

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

2018-02-05 21:39:27

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

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

2018-02-05 21:24:07

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

前言在各微服务通信中,主要以json字符串作为内容载体,在实际业务中,通常会自定义实体亦或是构造Map、List等数据作为生产消费对象,SpringBoot通过对MessageConvertor的实现,已经很好的协助我们完成了Json与对象的转换过程,在MVC的REST-API部分已经被充分应用。那么在Stream中呢,是否还需要我们每次硬编码实现呢,答案是否定的。本章节将实现验证Stream

2018-02-05 21:11:43

Stream基础篇-Stream入门应用

SpringCloudStream是什么?SpringCloudStream是一个用来为微服务应用构建消息驱动能力的框架。它可以基于SpringBoot来创建独立的、可用于生产的Spring应用程序。它通过使用SpringIntegration来连接消息代理中间件以实现消息事件驱动的微服务应用。简单的说,SpringCloudStream本质上就是整合了SpringBoo

2018-02-04 16:17:40

Mono入门应用

前言Flux和Mono是Reactor中的两个基本概念。Flux表示的是包含0到N个元素的异步序列。在该序列中可以包含三种不同类型的消息通知:正常的包含元素的消息、序列结束的消息和序列出错的消息。当消息通知产生时,订阅者中对应的方法onNext(),onComplete()和onError()会被调用。Mono表示的是包含0或者1个元素的异步序列。该序列中

2018-02-03 17:35:38

Consul常用端点介绍

前言Consul提供的RESTAPI可以通过访问官方网站(https://www.consul.io/api/agent.html)查看最新最详细的说明,可以用来增删查改nodes、services、checks、configguration。本章节仅仅介绍最常用的一些端点。本章概要1、端点分类;2、分类说明;端点分类所有的endpoints主要分为以

2018-02-02 22:26:27

Zinkin进阶篇-Zipkin-dependencies的应用

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

2018-01-30 13:51:38
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!