• 等级
  • 217086 访问
  • 81 原创
  • 18 转发
  • 28156 排名
  • 64 评论
  • 62 获赞

ThreadLocalRandom随机数源码分析

ThreadLocalRandom介绍ThreadLocalRandom是JDK1.7以后提供出来的一个随机数生成工具类,性能比传统的Math.random()更高。性能比较ThreadLocalRandom和Math.random()的性能比较,测试步骤如下:publicclassTest{publicstaticvoidmain(String[]args)t...

2019-05-08 18:47:22

一起了解一下微服务

版权声明:尊重博主原创文章,转载请注明出处 https://blog.csdn.net/eson_15/article/details/83651732 通常而言,微服务架构是一种架构模式或者说一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务之间互相协调、互相配合,为用户提供最终的价值。服务之间采用轻量级的通信机...

2018-11-04 15:07:48

dubbo系列之内核SPI-Protocol扩展类生成(九)

前文回顾上一篇文章我们讲到,扩展实现类的类上如果写上了@Adaptive注解,则可以直接取得扩展实现类对象,其他的需要通过字节码生成技术来生成对象,接着上文的代码讲解,调用createAdaptiveExtensionClass方法生成扩展实现类对象createAdaptiveExtensionClassprivateClass<?>createAdaptiveExtensi...

2018-11-01 11:12:28

dubbo系列之内核SPI-资源解析&依赖注入(八)

前文回顾上文中,我们了解了dubbo的SPI机制,针对Protocol的SPI实现讲解了一半,讲到了Protocol生成好了ExtensionLoader以及其内部的ExtensionFactory,本文继续讲解接下来的代码,建议没看过上一篇文章的朋友可以先去看下一,直接看本文会比较懵逼。dubbo系列之内核SPI拓展机制初识(七)###源码入口com.alibaba.dubbo.c...

2018-10-26 10:12:35

dubbo系列之内核SPI拓展机制初识(七)

前言dubbo为了适应不同的注册中心,底层通讯协议等功能的扩展,采用SPI的思想,即ServiceProviderInterface,也就是我们定义了服务接口标砖,让服务商去实现。jdk通过ServiceLoader类实现了SPI机制的服务查找功能,有兴趣的可以去网上搜一下jdk的SPI思想,,接下来我们会讲解一下dubbo是如何实现SPI机制,SPI机制一般来说,会提供一个接...

2018-10-24 10:22:32

dubbo系列之ServiceBean介绍(六)

前言前面几篇文章中,我们了解了spring是如何解析@Service,@Reference注解的,今天主要讲的是服务暴露者的一个非常重要的类,ServiceBean,每个暴露出去的服务都会生成一个ServiceBean.ServiceBean该类的继承实现关系如下publicclassServiceBean<T>extendsServiceConfig<T&...

2018-10-22 10:11:51

dubbo系列之@Reference注解解析原理(五)

前言上文中我们讲解了@Service注解的解析原理,了解到Dubbo默认支持两种方式进行解析,一种是通过springboot自动配置来做的,另外一种是通过DubboComponentScan注解来解析的,本文继续也是以DubboComponentScan的方式来讲解的。源码入口com.alibaba.dubbo.config.spring.context.annotation.D...

2018-10-18 10:19:18

dubbo系列之@Service注解解析原理(四)

前言前面几篇文章,讲的是调试环境搭建,配置解析读取,本文讲的是dubbo如何解析@service注解的,了解这些东西对于真正使用dubbo来说,没有直接的东西,但是这个是我后面要写的dubbo核心功能源码解析的前提,前后连贯,这样才能了解的更加清晰一点。解析入口@service注解解析入口有两个地方,二者是二选一的第一种DubboAutoConfiguration这个自动配置类中@...

2018-10-16 10:23:01

dubbo系列之spring boot核心配置读取(三)

版本说明springbootstarter:0.1.1dubbo版本:2.6.2自动配置类@Configuration@ConditionalOnProperty(prefix=DUBBO_PREFIX,name="enabled",matchIfMissing=true,havingValue="true")@ConditionalOnClass(Abs...

2018-10-15 10:15:46

dubbo系列之xml解析原理NamespaceHandler(二)

前言上一节中我们基于springboot搭建了dubbo的基本用例,能够使用dubbo的基本功能,在dubbo重新开源之前,大部分人都是通过spring的xml文件进行配置的,基于这个背景,有必要讲一下dubbo是怎么解析xml文件,生成代理对象的。版本说明springbootstarter:0.1.1dubbo版本:2.6.2DubboNamespaceHandler这个是d...

2018-10-11 10:50:02

dubbo系列之springboot 调试环境搭建(一)

前言本文是dubbo系列的第一篇,在正式讲解dubbo的源码之前,需要搭建一套dubbo的样例,用于我们阅读源码以及理解dubbo的核心功能,本文是以springboot为基础的,其他的通过xml配置的太麻烦了。版本说明springbootstarter:0.1.1dubbo版本:2.6.2新建项目新建项目dubbo-provider,dubbo-service,dubbo-...

2018-10-10 10:19:47

zipkin+sleuth基于apollo配置中心动态刷新采样率(十四)

前言前文我们介绍过,自定义采样率,但是为了满足项目的灵活性,我们最好可以提供在程序运行过程中,可以动态的修改采样率等信息,如此才能应对项目运行当中碰到的各种问题。项目运行过程中,我们可能会遇到下面这些问题。1.某个接口的采样率现在比较高?我想调低一点怎么办?2.这个接口太频繁,并且没有追踪的意义,我想禁用掉怎么办?3.全局采样率的动态调整默认zipkin是不支持上面的这些功能的,但...

2018-09-29 10:13:23

sleuth+zipkin系列之异常处理(十三)

前言本文的异常处理分为两种,第一种讲的是zipkin原生的异常处理,第二种就是针对实际业务做异常处理的扩展,本文的重点讲的是如何根据自身的实际情况定制异常处理。zipkin通过对span打tag,打上error的tag表示这次调用出错了。zipkin异常处理zipkin的默认会捕获没有被应用程序catch的异常,这是什么意思?这句话的意思就是,加入你程序发生了错误,如果异常被你程序给捕获...

2018-09-28 10:01:54

zipkin+sleuth定时任务生成全局调用链(十二)

问题背景github提供的方式,是一个zipkin-dependencies-xxx.jar,通过启动这个jar包生成调用链,这个jar包启动后,执行一次线程就会自动结束了,这在生产环境是不可忍受的。准备在github上下载最新的release源码。https://github.com/openzipkin/zipkin-dependencies/releases/tag/releas...

2018-09-26 10:12:56

sleuth+zipkin请求URI路径动态参数-改造方案(十一)

前言上一节我们了解到,如果URI上面有动态参数,那么默认的sleuth拿到的不是真实的接口路径,这会导致后续我们做接口调用链的统计的时候会有问题,本文基于sleuth1.2.6版本,低于这个版本,这种方案无效。新建Filter新建traceLocalFilter,该类继承TraceFilter。这个类里面的源码从TraceFilter里面拷贝,比较原装的代码还是比较好的,我们...

2018-09-25 10:25:15

sleuth+zipkin请求URI路径参数问题(十)

问题背景应用系统中controller代码如下@RequestMapping("/test/{id}")publicStringtest(@PathVariable("id")Integerid)throwsException{ returnproviderClient.provider();}通过@PathVariable注解,在uri中携带参数,这种做法在业界也是...

2018-09-21 11:34:32

sleuth+zipkin自定义采样率(九)

问题背景zipkin原生提供的采样率设置,仅能针对全局进行设置,无法做到精细化设置,比如,有些接口我们觉得比较重要,所以想采样率高一点,有些接口很简单,我们希望不采集或者采集率设置低一点,原生是没办法做到的,需要完成这个功能,需要我们重写他的采样率计算器。配置重写下面的是他原生的配置,由于它是使用了@ConditionalOnMissingBean注解的,也就是容器中不存在这个Bean的时候...

2018-09-20 13:55:34

sleuth+zipkin系列之禁用URI调用链(八)

问题背景在实际生产中,我们有可能会碰到有些接口,有些URI我们不想追踪,不想产生追踪数据,这个时候可以使用sleuth的追踪跳过的机制,默认sleuth已经禁用了如下URI,下面的URI访问系统的时候是不会被追踪的。spring:sleuth:web:skip-pattern:"/api-docs.*|/autoconfig|/configprops|/dump...

2018-09-18 10:19:59

sleuth+zipkin核心配置源码解析(七)

源码入口直接查看sleuth的starter包,找到spring.factories文件,基于springboot的自动配置机制#AutoConfigurationorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.sleuth.autoconfig....

2018-09-17 11:21:54

sleuth+zipkin日志输出traceId(五)

日志配置在需要追踪的示例应用中,修改日志配置,这里使用springboot构建,logback作为日志输出工具<propertyname="FILE_LOG_PATTERN"value="%d{yyyy-MM-ddHH:mm:ss.SSS}[%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}][%thread]%-5level%logger{50...

2018-09-14 10:17:09

sharedCode

关注
  • 计算机软件/资深java开发
  • 中国 上海 青浦区
奖章
  • 专栏达人
  • 1024勋章
  • 勤写标兵Lv1