-
Kafka 源码分析2 : Network相关
原文出处:刘正阳背景我们直接跑到最底层,看看kafka的网络层处理是怎么处理的。因为Java的NIO还是偏底层,不能直接用来做应用开发,所以一般都使用像netty的框架或者按照自己的需要封装一些nio,让上层业务不用关心网络处理的细节,只需要创建服务监听端口、接受请求、处理请求、写返回就可以了。我在看netty、thrift等涉及到网络的Java框架时比较喜欢去看他们的nio是怎么封装的,这里也是......1,396 0 2018-06-04 15:43
-
kafka 源码分析3: Producer
原文出处:刘正阳ProducerProducer是生产者的接口定义常用的方法有publicFuture<RecordMetadata>send(ProducerRecord<K,V>record);publicFuture<RecordMetadata>send(ProducerRecord<K,V>record,Callbackcallback);......1,032 0 2018-06-04 15:43
-
深入探索并发编程系列1 : 锁不慢;锁竞争慢
原文出处:Yebangyu译者按Preshing 的博客是学习并发编程的不可多得的资料,讲解比较详细。身边的很多朋友从中受益良多。我们在和作者沟通后,获得了授权,着手翻译了他的博客,刊登在这里,以飨朋友诸君。和一般的翻译不同,我们加上了独家的注释。注释要么是纠正错误,要么是辅助理解,要么是补充扩展;相信对大家会大有裨益。正文翻译:@Diting0x审校&&注释:@睡眼惺忪的小叶先森......1,172 0 2018-06-04 15:43
-
kafka源码分析3 : Producer
原文出处:刘正阳ProducerProducer是生产者的接口定义常用的方法有publicFuture<RecordMetadata>send(ProducerRecord<K,V>record);publicFuture<RecordMetadata>send(ProducerRecord<K,V>record,Callbackcallback);......858 0 2018-06-04 15:43
-
记一次内存溢出的分析经历 — thrift带给我的痛
原文出处:Janti说在前面的话朋友,你经历过部署好的服务突然内存溢出吗?你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗?你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗?我知道,你有过!但是我还是要来说说我的故事………………背景:有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个),服务端用Java写......1,010 0 2018-06-04 15:32
-
kafka 源码分析4: broker 处理生产请求
原文出处:刘正阳Kafkabroker上对于produce生产者生产消息的处理KafkaServer处理生成者请求入口在KafkaApis.scala,通过request.header.apikey判断消息类型defhandle(request:RequestChannel.Request){try{trace("Handlingrequest:%sfromconnection%s;securit......1,106 0 2018-06-04 15:31
-
Kafka 源码分析 5 :KafkaConsumer 消费处理
原文出处:刘正阳Kafka消费者客户端从Kafkacluster中读取消息并处理。Kafka消费者可以手动绑定自己到某个topic的某些partition上或者通过subscribe方法监听某个topic自动绑定。Kafka消费者绑定到某个parition后就和这个partition的leader连接,然后发出fetchrequest,获取消息后进行处理。offset管理kafka的消费模型是一个......988 0 2018-06-04 15:31
-
通过 jstack 与 jmap 分析一次线上故障
原文出处:kingszelda一、发现问题下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。二、排查思路简单分析下可能出问题的地方,分为5个方向:系统本身代码问题内部下游系统的问题导致的雪崩效应上游系统调用量突增http请求第三方的问题机器本身的问题三、开始排查查看日志,没有发现集中的错误日志,初步......1,050 0 2018-06-04 15:29
-
RocketMQ 源码学习 1 : 整体结构
原文出处:谢晞鸣1.为什么是RocketMQ为什么是RocketMQ,而不是ActiveMQ/RabbitMQ/Kafka呢?这不是技术选型,我只是想找一个业界比较好的、开源的MQ系统,学习一下MQ的工作原理。所以首选Java的(虽然语言对我来说不是问题,然还是有点学习成本的),这就只剩下RocketMQ和ActiveMQ了,这两个那就肯定选RocketMQ了,毕竟人家是这么吹牛逼的:“万亿级数据......1,356 0 2018-06-04 15:29
-
JVM堆内存使用率持续上升的一种排查思路
原文出处:木杉的博客最近新版本发布后,在运行一段时间后程序突然无响应了,观察监控,发现JVM堆内存占用在某个时间点突然飙升,最终导致应用无响应:重启Tomcat后,应用恢复正常,并且后续时间没有发生内存上涨问题。分析这个JVM内存曲线,他是直线上升的,以前遇到过类似的场景,会导致这种直线(匀速)上升的,一般是一个死循环导致的,如果是普通请求资源泄露的话,上升曲线不会这么平稳,会和请求量有一定的关系......930 0 2018-06-04 14:38
-
RocketMQ 源码学习 2 : Namesrv
原文出处:谢晞鸣1.Namesrv简介Namesrv可以理解为一个注册中心,整个Namesrv的代码非常简单,主要包含两块功能:管理一些KV的配置管理一些Topic、Broker的注册信息2.Namesrv启动过程启动过程主要涉及NamesrvStartup/NamesrvController两个类,NamesrvStartup负责解析命令行的一些参数到各种Config对象中(NamesrvCon......1,063 0 2018-06-04 14:38
-
RocketMQ 源码学习 3 :Remoting 模块
原文出处:谢晞鸣rocketmq-remoting模块是RocketMQ中负责网络通信的模块,被其他所有需要网络通信的模块依赖。它是基于Netty实现的,避免了网络编程很多tricky的问题。首先来看下RocketMQNettyServer的Reactor线程模型,一个Reactor主线程负责监听TCP连接请求,建立好连接后丢给Reactor线程池,它负责将建立好连接的socket注册到selec......1,177 0 2018-06-04 14:38
-
记一次内存溢出的分析经历 — thrift带给我的痛
原文出处:Janti说在前面的话朋友,你经历过部署好的服务突然内存溢出吗?你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗?你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗?我知道,你有过!但是我还是要来说说我的故事………………背景:有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个),服务端用Java写......1,153 0 2018-05-21 17:10
-
Spring 中获取 request 的几种方法,及其线程安全性分析
原文出处:编程迷思前言本文将介绍在SpringMVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。概述在使用SpringMVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在SpringMVC中,处理请求的Controller、Service等......1,039 0 2018-04-16 11:27
-
使用 Java 注解自动化处理对应关系实现注释代码化
原文出处:琴水玉概述假设我们要从一个ES索引(相当于一张DB表)查询数据,ES表有order_no,order_type,state等字段,而应用对象则有属性orderNo,orderType,state等。这样,就会面临“将应用对象的属性与ES字段对应起来”的问题。固然可以通过注释来说明,不过这样显得比较生硬。因为注释并不起实际作用,代码里还得写一套映射关系,就会存在注释与代码不一致的情况。那么......1,055 0 2018-04-16 11:24