聊聊java9的classloader

2018-08-29
阅读 2 分钟
3.1k
序 本文主要研究一下java9的classloader java9之前的classloader bootstrap classloader加载rt.jar,jre/lib/endorsed ext classloader加载jre/lib/ext application classloader加载-cp指定的类 java9及之后的classloader bootstrap classloader加载lib/modules {代码...} ext classloader更名为platform classloader,...

聊聊token bucket算法的实现

2018-08-28
阅读 3 分钟
7.7k
序 本文主要研究一下token bucket算法的实现 限流算法概述 主要有如下几种: 基于信号量Semaphore 只有数量维度,没有时间维度 基于fixed window 带上了时间维度,不过在两个窗口的临界点容易出现超出限流的情况,比如限制每分钟10个请求,在00:59请求了10次,在01:01又请求了10次,而从00:30-01:30这个时间窗口来看,这...

聊聊sentinel的FlowSlot

2018-08-27
阅读 7 分钟
3.4k
序 本文主要研究一下sentinel的FlowSlot FlowSlot com/alibaba/csp/sentinel/slots/block/flow/FlowSlot.java {代码...} FlowRuleManager.checkFlow com/alibaba/csp/sentinel/slots/block/flow/FlowRuleManager.java {代码...} 这里调用FlowRule的passCheck方法 FlowRule com/alibaba/csp/sentinel/slots/block/flow/Fl...

[case34]jib打包docker镜像实战

2018-08-26
阅读 10 分钟
4.8k
序 本文主要研究一下如何使用google的jib打包docker镜像 maven {代码...} 配置 {代码...} 这里指定base image为java:8u172-jre-alpine 同时指定生成的image名称为jib-demo:${maven.build.timestamp} container标签可以指定相关参数,比如jvmFlags指定JVM参数,ports指定expose的端口号 extraDirectory用于指定要添加的目...

聊聊sentinel的DegradeSlot

2018-08-25
阅读 6 分钟
2.9k
序 本文主要研究一下sentinel的DegradeSlot DegradeSlot com/alibaba/csp/sentinel/slots/block/degrade/DegradeSlot.java {代码...} 调用DegradeRuleManager.checkDegrade进行降级规则检测 DegradeRuleManager com/alibaba/csp/sentinel/slots/block/degrade/DegradeRuleManager.java {代码...} checkDegrade根据资源名...

聊聊sentinel的AuthoritySlot

2018-08-24
阅读 8 分钟
2.2k
com/alibaba/csp/sentinel/slots/block/authority/AuthorityRuleManager.java

聊聊sentinel的StatisticSlot

2018-08-23
阅读 6 分钟
2.4k
entry是在成功通过的时候,调用node的increaseThreadNum以及addPassRequest;不通过的话,则调用increaseBlockedQps;异常的话,则调用increaseExceptionQps

聊聊sentinel的DefaultSlotsChainBuilder

2018-08-22
阅读 4 分钟
2.3k
序 本文主要研究一下sentinel的DefaultSlotsChainBuilder DefaultSlotsChainBuilder com/alibaba/csp/sentinel/slots/DefaultSlotsChainBuilder.java {代码...} 实现build方法,返回DefaultProcessorSlotChain,通过它addLast方法构造链式调用 DefaultProcessorSlotChain com/alibaba/csp/sentinel/slotchain/DefaultPro...

聊聊sentinel的ArrayMetric

2018-08-21
阅读 12 分钟
3.2k
序 本文主要研究一下sentinel的ArrayMetric ArrayMetric com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java {代码...} ArrayMetric底层使用WindowLeapArray作为数据存取 该类实现了指标的获取以及指标的新增 WindowLeapArray com/alibaba/csp/sentinel/slots/statistic/metric/WindowLeapArray.java {...

聊聊sentinel的NettyHttpCommandCenter

2018-08-20
阅读 10 分钟
2.3k
com/alibaba/csp/sentinel/transport/command/NettyHttpCommandCenter.java

[case33]sentinel自定义DataSource实战

2018-08-19
阅读 7 分钟
2.6k
这里在启动时通过FlowRuleManager.register2Property,注册了flowRule、degradeRule、systemRule三类规则的数据源

聊聊sentinel的SentinelResourceAspect

2018-08-18
阅读 4 分钟
3.6k
com/alibaba/csp/sentinel/annotation/aspectj/SentinelResourceAspect.java

聊聊sentinel的DataSource

2018-08-17
阅读 8 分钟
2.7k
sentinel-datasource-extension-0.1.1-sources.jar!/com/alibaba/csp/sentinel/datasource/DataSource.java

聊聊sentinel的ModifyRulesCommandHandler

2018-08-16
阅读 7 分钟
2.4k
sentinel-transport-common-0.1.1-sources.jar!/com/alibaba/csp/sentinel/command/handler/ModifyRulesCommandHandler.java

聊聊sentinel的SentinelWebAutoConfiguration

2018-08-15
阅读 12 分钟
4.7k
spring-cloud-alibaba-sentinel-autoconfigure-0.2.0.BUILD-SNAPSHOT-sources.jar!/org/springframework/cloud/alibaba/sentinel/SentinelWebAutoConfiguration.java

聊聊sentinel的SimpleHttpCommandCenter

2018-08-14
阅读 15 分钟
3.1k
sentinel-transport-simple-http-0.1.1-sources.jar!/com/alibaba/csp/sentinel/transport/command/SimpleHttpCommandCenter.java

聊聊rocketmq的AsyncAppender

2018-08-13
阅读 11 分钟
2.5k
序 本文主要研究一下rocketmq的AsyncAppender AsyncAppender org/apache/rocketmq/logging/inner/LoggingBuilder.java {代码...} 初始化Dispatcher,构造器调用Dispatcher的start,然后close方法调用dispatcher.join() append方法会判断buffer够不够,够的话往buffer添加事件,不够则丢弃同时进行DiscardSummary统计 dis...

[case32]alibaba限流组件Sentinel实战

2018-08-12
阅读 3 分钟
4.8k
这里指定应用的端口为8080,与sentinel server通信端口为7080,sentinel server的地址为localhost:9999

聊聊rocketmq的DailyRollingFileAppender

2018-08-11
阅读 6 分钟
2.3k
这里重写了subAppend方法,先检查当前时间是否大于nextCheck值,大于则更新nextCheck值,然后进行rollOver操作,最后在调用父类的subAppend方法

聊聊rocketmq的RollingFileAppender

2018-08-10
阅读 5 分钟
2.3k
序 本文主要研究一下rocketmq的RollingFileAppender RollingFileAppender org/apache/rocketmq/logging/inner/LoggingBuilder.java {代码...} 这里重写了subAppend方法,调用父类subAppend方法之后,判断是否需要rollOver 这里定义了maxFileSize,即单个文件的大小,然后还定义了nextRollover索引 这里使用的是CountingQ...

聊聊rocketmq的FileAppender

2018-08-09
阅读 9 分钟
2.4k
序 本文主要研究一下rocketmq的FileAppender WriterAppender org/apache/rocketmq/logging/inner/LoggingBuilder.java {代码...} 这个接口定义了writeHeader、writeFooter、append等方法 append方法这里参数是LoggingEvent,内部委托给subAppend subAppend方法调用layout进行格式化event,然后如果需要flush,则会直接对...

聊聊rocketmq的RemotingException

2018-08-08
阅读 3 分钟
4.9k
继承自checked exception,底下有RemotingCommandException、RemotingConnectException、RemotingSendRequestException、RemotingTimeoutException、RemotingTooMuchRequestException

聊聊rocketmq的NettyEncoder及NettyDecoder

2018-08-07
阅读 5 分钟
3k
序 本文主要研究一下rocketmq的NettyEncoder及NettyDecoder NettyEncoder org/apache/rocketmq/remoting/netty/NettyEncoder.java {代码...} 这里继承MessageToByteEncoder,类型是RemotingCommand,先写入header再写入body RemotingCommand.encodeHeader org/apache/rocketmq/remoting/protocol/RemotingCommand.java {...

聊聊rocketmq的RequestTask

2018-08-06
阅读 12 分钟
2.6k
序 本文主要研究一下rocketmq的RequestTask RequestTask org/apache/rocketmq/remoting/netty/RequestTask.java {代码...} 里头有一个runnable、channel以及remotingCommand NettyRemotingAbstract.processRequestCommand org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java {代码...} 这里根据上下文准备...

[case31]dubbo-spring-boot-starter小试牛刀

2018-08-05
阅读 3 分钟
2.9k
dubbo-spring-boot-starter的官方文档貌似比较粗糙,比较不符合spring boot开源项目的风格,也没有看到example工程,实践起来,稍稍费劲一点。

聊聊rocketmq的NettyClientConfig

2018-08-04
阅读 9 分钟
2.7k
序 本文主要研究一下rocketmq的NettyClientConfig NettyClientConfig org/apache/rocketmq/remoting/netty/NettyClientConfig.java {代码...} 这里主要有几个参数: clientWorkerThreads,默认为4 clientCallbackExecutorThreads,默认为cpu核数 clientOnewaySemaphoreValue,默认为NettySystemConfig.CLIENT_ONEWAY_SEM...

聊聊rocketmq的BrokerHousekeepingService

2018-08-03
阅读 8 分钟
2.4k
实现了ChannelEventListener接口,除了onChannelConnect外,其余各个方法均委托给namesrvController的routeInfoManager的onChannelDestroy方法

聊聊rocketmq的KVConfigManager

2018-08-02
阅读 9 分钟
3.3k
这里使用HashMap,然后通过ReentrantReadWriteLock进行并发控制,map的key是namespace,而value是一个HashMap

聊聊rocketmq的PushConsumerImpl

2018-08-01
阅读 15 分钟
4.8k
序 本文主要研究一下rocketmq的PushConsumerImpl PushConsumerImpl io/openmessaging/rocketmq/consumer/PushConsumerImpl.java {代码...} 这里创建的是DefaultMQPushConsumer,同时设置的messageListener为MessageListenerImpl attachQueue的时候,使用的是rocketmqPushConsumer.subscribe 启动时调用rocketmqPushConsu...

聊聊rocketmq的PullConsumerImpl

2018-07-31
阅读 12 分钟
2.4k
LocalMessageCache是从consumeRequestCache这个LinkedBlockingQueue中poll出来ConsumeRequest,该request携带了MessageExt