自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闲来无事

闲来无事,知识共享

  • 博客(46)
  • 资源 (13)
  • 收藏
  • 关注

原创 Disruptor源码分析(五)WaitStrategy

针对不同的应用场景,为了尽量提高处理性能,Disruptor提供了多种生产者和消费者之间的同步策略。在此只对常用的四种同步策略的实现进行说明,其它实现不在详述。BlockingWaitStrategyBlockingWaitStrategy源码如下:public final class BlockingWaitStrategy implements WaitStrategy{...

2019-12-06 18:10:28 1859

原创 Disruptor源码分析(四)Sequencer

针对不同的应用场景,为了尽量提高处理性能,Disruptor提供了SingleProducerSequencer和MultiProducerSequencer两种sequencer,分别对应单生产者模式和多生产者模式。SingleProducerSequencer在单生产者模式中,由于只有一个生产者,所以在获取下一个可用序列号时,不会存在多线程竞争的情况,所以直接用一个long类型变量nex...

2019-12-06 18:07:58 877

原创 Disruptor源码分析(三)Sequence

Sequence是RingBuffer中一个很重要的类,它就是指我们用来发布事件的递增序列号,只不过为了更好的使用Disruptor对其做了进一步的封装。public class Sequence extends RhsPadding{ static final long INITIAL_VALUE = -1L; private static final Unsafe UN...

2019-12-06 18:06:02 553

原创 Disruptor源码分析(二)RingBuffer

RingBuffer,从字面上看,它是一个环形缓冲队列。实际上,它不是一个队列,因为它不具备队列的特性,比如FIFO等。RingBuffer本身是一个数组,之所以说它是环形队列,因为它通过算法维持了一个类似环形队列的数据结构。上图是对RingBuffer的一个抽象描述。假定一个8个槽的RingBuffer,则本质上是一个长度为8的数组,那如何模拟一个环形队列呢?通过序列号(se...

2019-12-06 18:04:45 927

原创 Disruptor源码分析(一)概述

此系列关于Disruptor源码分析,主要是自己在使用Disruptor过程中,对于一些自认为比较关键的设计的总结,供自己以后使用。所以,没有花费太大的篇幅进行详细的说明。在此发布出来,供大家参考。由于时间紧迫,所以可能存在错误的地方,欢迎指出。Disruptor主要类图如下:...

2019-12-06 18:00:05 506

转载 剖析Disruptor:为什么会这么快?(四)揭秘内存屏障

作者:Martin Thompson 译者:丁一最近我博客文章更新有点慢,因为我在忙着写一篇介绍内存屏障(Memory Barries)以及如何将其应用于Disruptor的文章。问题是,无论我翻阅了多少资料,向耐心的Martin和Mike请教了多少遍,以试图理清一些知识点,可我总是不能直观地抓到重点。大概是因为我不具备深厚的背景知识来帮助我透彻理解。所以,与其像个傻瓜一样试图去解释一些...

2019-12-04 14:29:15 171

转载 剖析Disruptor:为什么会这么快?(三)伪共享

作者:Martin Thompson 译者:丁一缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性...

2019-12-04 14:22:52 205

转载 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充

作者:Martin Thompson 译者:丁一我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问...

2019-12-04 14:16:56 117

转载 剖析Disruptor:为什么会这么快?(一)锁的缺点

作者:Trisha’s 译者:张文灼,潘曦整理和校对:方腾飞,丁一Martin Fowler写了一篇非常好的文章,里面不仅提到了Disruptor,而且还解释了Disruptor如何应用在LMAX的架构里。里面有提及了一些目前没有涉及的概念,但最经常问到的问题是“Disruptor究竟是什么?"。目前我正准备在回答这个问题,但首先回答"为什么它会这么快?"这些问题持续出现,但是...

2019-12-04 14:09:37 212

原创 RocketMQ之Broker线程模型

1.概述RocketMQ是阿里开源的一款高性能、高吞吐量的分布式消息中间件,具有以下特点:1、能够保证严格的消息顺序;2、提供丰富的消息拉取模式;3、高效的订阅者水平扩展能力;4、实时的消息订阅机制;5、亿级消息堆积能力。网上关于RocketMQ各方面(如RPC通信、消息存储、消费发送、消息消费等)的介绍非常多,也比较详细,本文在此就不重复了,感兴趣的同学可以百度一下。...

2019-03-26 09:51:01 4353 3

原创 基于SpringCloud 2开发的微服务基础框架SCB(Spring Cloud Base)

0 序言 本文简述了SCB,一个基于SpringCloud 2开发的微服务基础框架SCB(Spring Cloud Base)。 SCB主要组件版本: 1、Spring Boot:2.0.3.RELEASE 2、SpringCloud:Finchley.RELEASE 3、Spring Cloud Gateway:2.0.1 ...

2018-10-19 18:09:00 1741

原创 SOFA RPC源码解析之RPC服务发布、引用、调用和响应流程

1. SOFA RPC源码解析1.1 SOFA RPC服务发布、引用、调用和响应流程1.1.1 服务发布流程   对于不同类型的SOFABoot服务,如Jvm服务、Rest服务、Bolt服务或Dubbo服务,服务发布的主流程如下:   1. 定义SOFABoot服务:在SpringXML文件中使用标签sofa-service定义服务; 在Java类中使用注解@SofaSe...

2018-07-16 22:57:24 9058 1

原创 SOFA BOLT源码解析之概述

1  概述        关于SOFA Bolt的文档来自于Alipay开源社区,链接地址为:        https://github.com/alipay/sofa-bolt        https://github.com/alipay/sofa-bolt/wiki/SOFA-Bolt-Handbook        此处直接引用该文档内容,主要是便于大家理解源码解析部分。1.1  介绍...

2018-07-13 10:32:27 2129 2

原创 SOFA BOLT源码解析之设计要点-网络IO

1  设计要点解析        SOFA Bolt作为基础通信层,其功能在设计和实现的过程中,主要从以下几个方面考虑:        1.   网络IO;        2.   线程模型;        3.   通信模型;        4.   连接管理;        5.   批量解包和批量提交;        6.   事件触发和监听机制;        7.   全双工通信;   ...

2018-07-13 10:31:57 668

原创 SOFA BOLT源码解析之设计要点-线程模型

1.设计要点解析1.1  线程模型        此部分内容主要介绍蚂蚁为什么选择Netty4作为基础网络编程框架,来源于蚂蚁技术团队发布的一篇文章:        文章名称为:蚂蚁通信框架实践;        链接地址为:https://mp.weixin.qq.com/s/JRsbK1Un2av9GKmJ8DK7IQ?        此处引用该文章的内容,主要是想让大家更好的理解SOFA Bo...

2018-07-13 10:30:28 1181

原创 SOFA BOLT源码解析之设计要点-通信模型

1. 设计要点解析1.1  通信模型        SOFA Bolt当前支持四种通信模型:        ●  oneway:单向调用。单向调用不会阻塞请求线程,不关心响应。但是,使用时需要注意控制调用频率和节奏,防止压垮接收方;        ●  sync:同步调用。同步调用会阻塞请求线程,待响应返回后才能进行下一个请求。这是最常用的一种通信模型;        ●  future:futu...

2018-07-13 10:29:25 1669 2

原创 SOFA BOLT源码解析之设计要点-连接管理

1. 设计要点解析1.1  连接管理        为了提高通信效率,我们需要考虑复用连接,减少TCP三次握手的次数,因此需要完善的连接管理的机制。        另外,在业务通信场景中,还需要识别一些不得不走硬负载(比如 LVS VIP)的场景,此时如果只建立单链接,可能会出现负载不均衡的问题,因此需要建立多个连接,来缓解负载不均的问题。        为此,SOFA Bolt设计了一个针对某个...

2018-07-13 10:28:22 1724

原创 SOFA BOLT源码解析之设计要点-通信协议

1. 设计要点解析1.1  通信协议        SOFA Bolt定义了两个版本的私有通信协议,即V1版和V2版。        此处以V2版为例,详细描述一下私有通信协议的设计。        一、  RpcProctocolV2请求协议格式如下:        RpcProctocolV2请求协议字段:        1.   proto:协议码ProtocolCode。如果一个端口,需要...

2018-07-13 10:27:39 3008

原创 SOFA RPC源码解析之Rest服务(4)-服务端响应

1 SOFA RPC源码解析1.1 Rest服务1.1.1  服务端响应        在前文介绍SOFA RPC Rest服务发布过程的文章中,我们知道对于rest类型绑定,SOFA采用com.alipay.sofa.rpc.server.rest.SofaNettyJaxrsServer作为服务器。SofaNettyJaxrsServer采用Netty4作为网络通讯层。        看一下S...

2018-06-29 23:28:57 1063

原创 SOFA RPC源码解析之Rest服务(3)-客户端调用

1.SOFA RPC源码解析1.1Rest服务1.1.1 客户端调用        当我们在SpringXML文件中使用sofa:reference引用服务以后,我们就可以在其它类中引用创建的指定接口的代理对象,并像调用本地Java类那样,调用接口的某个方法。        以下通过在Spring应用上下文中按照名字personReferenceRest查找com.alipay.sofa.boot...

2018-06-29 23:17:58 1970

原创 SOFA RPC源码解析之Rest服务(2)-服务引用

1.SOFA RPC源码解析1.1Rest服务1.1.1 服务引用        以SOFABoot自带的RPC案例sofaboot-sample-with-rpc为例,详细描述SOFABoot服务发布原理。        在此提前说明,源码分析主要分析主流程,以及本人认为比较重要的一些内容,对于其它部分,大家可以基于本文档,自行研读。        RPC案例的SpringXML配置文件内容如下...

2018-06-29 22:59:38 1166

原创 SOFA RPC源码解析之Rest服务(1)-服务发布

1.SOFA RPC源码解析1.1  Rest服务1.1.1 服务发布        以SOFABoot自带的RPC案例sofaboot-sample-with-rpc为例,详细描述SOFABoot Rest服务发布原理。        在此提前说明,源码分析主要分析主流程,以及本人认为比较重要的一些内容,对于其它部分,大家可以基于本文档,自行研读。        RPC案例的SpringXML配...

2018-06-29 22:28:30 3299

原创 SOFABoot源码解析之JVM服务代理机制

1.SOFABoot源码解析1.1  JVM服务代理机制        在SOFABoot中,采用AOP代理方式为JVM服务引用创建本地代理对象。对于AOP代理,主要有两种实现方式:        1.   针对实现接口的类,采用JDK动态代理机制;        2.   针对没有实现接口的类,采用CGLIB动态代理机制;        在SOFABoot中,对于JVM服务类型的服务引用,即可以...

2018-06-29 22:08:53 755

原创 SOFA RPC源码解析之RPC代理机制

1.SOFA RPC源码解析1.1  RPC代理机制        在SOFA RPC中,服务引用采用代理模式把本地方法调用转换为远程服务调用,从而使开发者像使用本地Java方法一样,使用远程服务,屏蔽了底层的网络通讯细节,使开发人员把精力集中在业务开发中。        简单回顾一下代理模式,以便大家理解SOFA RPC中代理机制的实现方式。        代理模式是常用的设计模...

2018-06-29 21:58:49 1555

原创 SOFA RPC源码解析之FilterChain

1.SOFA RPC源码解析1.1  FilterChain        在SOFA RPC设计中,FilterChain是比较有新意的。它没有采用常用的List列表模式,即在List列表中存储Filter实现,然后按照Filter在列表中的顺序依次调用各Filter接口的filter方法,完成过滤器功能。        FilterChain简化类图如下:        首先,FilterCh...

2018-06-29 21:48:47 1204

原创 SOFA RPC源码解析之扩展机制ExtensionLoader

1.SOFA RPC源码解析1.1  扩展机制1.1.1  简述        SOFA RPC的扩展点加载机制是从JDK标准的SPI扩展点发现机制加强而来。        SPI,全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。        SPI是上游产商给服务供应商提供的接口,供应商遵循接口契约提供自己的实现。供应商提供了服务接口的一...

2018-06-29 21:42:21 1076

原创 SOFA RPC源码解析之RPC配置

1.SOFA RPC源码解析1.1  RPC配置1.1.1  源码解析        在使用SOFA RPC的过程中,RPC相关的配置通过RpcConfigs实现。        RpcConfigs存在两个属性: 1.      /**2.       * 全部配置3.       */4.      private final staticConcurrentHashMap<String...

2018-06-29 21:28:50 3485 1

原创 SOFABoot源码解析之JVM服务

1.SOFABoot源码解析1.1  JVM服务1.1.1 服务发布        以SOFABoot自带的RPC案例sofaboot-sample-with-rpc为例,详细描述SOFABoot JVM服务发布过程。        在此提前说明,源码分析主要分析主流程,以及本人认为比较重要的一些内容,对于其它部分,大家可以基于本文档,自行研读。        RPC案例的SpringXML配置文...

2018-06-28 21:51:37 3508 1

原创 SOFABoot源码解析之模块化开发

1.SOFABoot源码解析1.1  模块化开发1.1.1 简述        关于SOFABoot模块化开发的文档来自于Alipay开源社区Wiki,链接地址为:        https://github.com/alipay/sofa-boot/wiki/Modular-Development        此处直接引用该文档内容,主要是便于大家理解源码解析部分。1.1.1.1  模块化开发...

2018-06-28 18:29:55 3108 1

原创 SOFABoot源码解析之Readiness检查

        SOFABoot在SpringBoot的Liveness检查能力的基础上,增加了Readiness检查能力。如果你需要使用SOFA中间件,那么建议使用SOFABoot的Readiness检查能力,来更优雅的上线应用实例。一、SpringBoot健康检查        SpringBootActuator帮助我们监控我们的SpringBoot项目。        SpringBoot...

2018-06-28 17:49:18 4883

原创 SOFABoot源码解析之日志空间隔离

一、简述        SOFABoot提供了日志空间隔离能力。        SOFABoot中间件能自动发现SOFABoot应用的日志实现依赖,并独立打印日志,解耦SOFABoot中间件日志和SOFABoot应用日志。        SOFABoot通过其sofa-common-tools包提供日志空间隔离功能。        首先看一下sofa-common-tools包中与日志空间隔离功能...

2018-06-28 17:02:12 3256

原创 SOFABoot源码解析之启动原理(2)-源码解析

        以SOFABoot自带的RPC案例sofaboot-sample-with-rpc作为SOFABoot应用(其实也是SpringBoot应用)启动源码分析的案例。        在此提前说明,源码分析主要分析主流程,以及本人认为比较重要的一些内容,对于其它部分,大家可以基于本文档,自行研读。        在该案例中,采用WEB环境下使用的Spring应用上下文环境org.spri...

2018-06-27 22:05:07 1307

原创 SOFABoot源码解析之启动原理(1)-注解分析

        SOFABoot是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 SpringBoot中非常方便地使用 SOFA 中间件的能力。        为了基于SOFABoot框架进行研发,建...

2018-06-27 22:04:40 3123

原创 微服务全链路解析

1、序言:        一提到微服务,大家马上想到微服务定义、微服务架构风格、各种微服务框架,如SpringCloud、Dubbo,ServiceMesh等。        本文从另一个角度,即服务全链路访问路径的角度,详细描述微服务架构中,从客户端发起请求到服务端接收、处理请求,并返回处理结果给客户端的整个访问路径,及相关应用服务器内部的线程处理模型、服务的线程处理模型等。了解服务的完整处理过...

2018-05-06 12:07:46 4685

原创 微服务架构设计实践系列之十:技术架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4.4  技术架构4.4.4.1  技术架构定义        技术架构定义了实现整个系统所需的各种技术,包...

2018-04-07 23:03:05 36159 4

原创 微服务架构设计实践系列之十一:物理架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4.5  物理架构4.4.5.1  物理架构定义        物理架构定义了“程序”如何映射(安装、部署或...

2018-04-07 22:58:49 13769 5

原创 微服务架构设计实践系列之十二:开发架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4.6  开发架构4.4.6.1  开发架构定义        开发架构定义了软件开发环境中,软件模块的实际...

2018-04-07 22:56:50 9957 4

原创 微服务架构设计实践系列之九:应用架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4.3  应用架构4.4.3.1  应用架构定义        应用架构定义了系统由哪些应用组成,以及应用之...

2018-04-07 22:56:37 14276 2

原创 微服务架构设计实践系列之八:数据架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4.2  数据架构4.4.2.1  数据架构定义        数据架构定义了用来支持业务的各种数据,以及他...

2018-04-07 22:56:21 15933 4

原创 微服务架构设计实践之七:业务架构

微服务架构设计实践 目    次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 物理架构4.4.6 开发架构4.4  细化架构阶段4.4.1  业务架构4.4.1.1  业务架构定义        业务架构定义了软件的业...

2018-04-07 22:54:50 18551 1

JavaScript高级教程

该文档详细描述了如何使用JavaScript进行开发,包括详细的语法描述,供大家学习使用。

2011-08-16

Active_MQ教程配置

该文档详细描述了如何配置Active MQ,并提供了使用案例,供大家学习使用。

2011-08-16

WebService_CXF学习

该文档详细描述了如何使用CXF框架简化Webservice服务的开发,供大家学习使用。

2011-08-16

基于JAAS的验证机制

该文档详细描述了JAAS的验证机制,供广大爱好者学习参考使用;

2011-08-12

SOA思想、技术与系统集成、应用详解

该文档详细描述了SOA思想、技术与系统集成、应用详解,供大家学习使用。

2011-08-12

largescale_servicemix4

该文档详细介绍了使用servicemix进行大规模系统开发的方法,供大家学习使用。

2011-08-12

ESB原理、构架、实现及应用

该文档详细介绍了ESB原理、构架、实现及应用,供大家学习、参考使用。

2011-08-12

Servicemix做代理服务器发布WebService

该文档详细描述了使用Servicemix做代理服务器发布WebService的方法。

2011-08-12

JBI规范1.0.pdf

该文档详细描述了JBI规范,供学习爱好者学习、参考使用。

2011-08-12

Nutch全文搜索学习笔记

本文是我学习Nutch的笔记,包括安装、配置、修改分词和关键词的代码;还有Luke和Lius的简单配置;

2009-03-20

Lucene学习笔记

本文是我最近学习全文搜索方面的笔记,详细介绍了Lucene的安装、配置和基本语法;

2009-03-20

Pmp Exam Preparation Study Guide - Project Communication Management

如何准备PMP考试?这是每个准备考PMP的人都关心的问题。以下试题是Pmp考试中关于沟通管理方面的试题;

2009-02-02

AppFuse学习笔记

本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse 提供的“快速开发”的优越性。

2009-02-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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