自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 JAVA性能分析之使用火焰图

随着业务的发展,使用接口提供的服务的业务越来越多,不同的业务对调用耗时的要求不同,当然,耗时越少越好。而近来已经有三四个调用方反映接口调用耗时太不稳定,代码上的优化已经做了很多,有效果,但还不够。同时,压力测试显示,复杂业务在调用量单机3000次/分时CPU就已经100%了,与预期差距太远。为了改善接口性能,找到性能瓶颈,不得已祭出了大杀器————火焰图。 网上的关于java火焰图的讲解大部分来自

2017-02-15 22:29:37 14121

原创 Kafka源码阅读 —— KafkaController(5)

重新分配 replica当新增机器到集群中时,可能需要调整topic下partition的replica分配。kafka不会根据负载自动调整replica assignment,这时候就需要集群管理员手动调整。 下面的例子是将foo1和foo2两个topic的所有replica重新分配到broker 5和broker 6上。 首先,需要提供文件指明需要迁移哪些topic:>cat topics-

2016-11-14 22:20:52 546

原创 Kafka源码阅读 —— KafkaController(4)

在kafka 0.8以后开始提供High Availability机制,即一个broker宕机后可以不影响服务。在集群规模越来越大的今天,HA对于消息中间件至关重要。broker startup“Kafka源码阅读 —— KafkaController(1)”中提到,在broker启动时会调用KafkaServer.startup,该函数中会创建一个KafkaHealthcheck类对象,并调用Ka

2016-11-14 22:19:21 470

原创 Kafka源码阅读 —— KafkaController(3)

执行 kafka-topics.sh –createKafka官网给出的创建Topic的命令如下: bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 这条命令中的信息包括:zookeeper地址、分区副本数、分区数和topic名。

2016-11-14 22:18:33 599

原创 KAFKA源码阅读——ReplicaFetcherManager,同步log

在ReplicaManager.makeFollowers函数中,对于成为Follower的broker,需要执行这么一段代码:val partitionsToMakeFollowerWithLeaderAndOffset = partitionsToMakeFollower.map(partition => new TopicAndPartition(partition) ->

2016-11-14 20:37:06 1371

原创 KAFKA源码阅读———处理ProduceRequest,FetchRequest

KafkaApis类中有个handle函数,这里是消息分发中心,根据request中的requestId采用不同的处理方式。当requestId == RequestKeys.produceKey时,通过函数handleProducerOrOffsetCommitRequest处理request。 这个函数中把ProducerRequest和OffsetCommitRequest请求都作为生产消息

2016-11-14 20:36:10 1988

原创 KAFKA源码阅读——FetchRequestPurgatory, ProducerRequestPurgatory

RequestPurgatorypurgatory,炼狱的意思。第一次看RequestPurgatory类的代码时,一头雾水,不明白是干什么的。要理解这个,需要先理解kafka处理FetchRequest和ProduceRequest的思路: 1. 请求到达,先判断该请求执行完成的条件是否满足(例如ProduceRequest,需要判断是否有足够多的Follower都已经同步了指定的offset

2016-11-14 20:32:55 1062

原创 Kafka源码阅读 —— KafkaController(2)

Controller与broker之间的消息通道当Controller做出动作时,需要向集群中的broker发送控制消息。发送的消息三种:LeaderAndIsrRequest、UpdateMetadataRequest和StopReplicaRequest, broker收到消息后,通过KafkaApis.handle进行处理————事实上,KafkaApis.handle是broker上的业务线

2016-09-25 23:40:41 753

原创 Kafka源码阅读 —— KafkaController(1)

KafkaController 启动在KafkaServer.startup()中,KafkaController对象被构建,在启动KafkaApis、replicaManager后,KafkaController.startup()被调用。Kafka集群中每个Broker都会调用startup()函数,但是一个集群只有一个Broker能够成为Controller。那么,谁将成为这个被选中的人呢?

2016-09-25 23:19:36 634

原创 数据从kafka到hive(1)

数据从kafka到hive(1)背景公司的系统是一个对外提供服务的接口,每一次调用日志都需要保存到hive中,以便后期做数据分析。每天的调用量在亿级,日志数据量100G以上,在量级还没有这么大的时候,采取的办法比较原始:直接通过log4j打印到日志文件,然后通过抽数工具同步到hive中,每天凌晨同步前一天的数据。随着量级增大,日志文件越来越大,每天抽数就要抽好几个小时,而且偶尔还由于网络问题等原因失

2016-09-07 12:33:56 16251 2

原创 数据从kafka到hive(2)

数据从kafka到hive(2)标签(空格分隔): kafka hive ETL 源码前面一篇讲到了将数据从kafka读到hdfs使用了开源工具camus,既然用到了开源的代码,免不了研究一下实现过程。所以这里分享一下阅读camus代码了解到的一些细节。前置知识在讲camus之前,需要提一下hadoop的一些知识。关于inputFormatinputFormat类的原型如下:public inter

2016-09-07 12:33:01 5189

原创 zookeeper学习

zookeeper学习在去年准备面试的时候,有一个问题被问到过两次:如何实现一个跨进程、跨主机的分布式锁。这个问题我当时有查过,一种是通过Redis,另一种是通过zookeeper,因为当时还没有学习java,所以没有研究过zookeeper。但是上周因为项目需要,开始学习kafka——一种消息中间件,里面有用到zookeeper,所以开始了解这个。 从解决上面的问题开始:如何通过zookeep

2015-09-06 00:02:42 431

原创 MQ消息处理感悟

MQ消息处理感悟项目需要获取MQ消息,之后用xml工具进行解析,再把解析后的数据插入数据库。本来几天做完的项目,期间遇到了各种坑,拖了一个多星期才预发布。遇到的第一个坑就是收不到MQ消息,后来又只能能收到队列中积压的消息,之后的消息都收不到,这两个都是MQ配置的原因,这里不再详解。收到消息后需要做的第一件事就是处理xml格式的消息流,最开始用的是jdom来做,由于消息中解析出来的元素较多,最终的

2015-08-02 10:40:58 599

原创 关于jdbc事务自动提交

实现jdbc事务流程:建立数据库连接;将autoCommit设置为false;执行sql语句;提交;处理异常,如果sql语句执行失败则执行rollBack; 其中,如果执行sql语句过程中抛出异常,rollBack自动进行,或者不调用commit,提交也不会发生。 典型示例如下:import java.sql.*;public class TestTranslation {

2015-07-10 22:39:36 1138

转载 java读取文件的几种方式

java读取文件的几种方式直接上代码public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName);

2015-04-22 11:19:18 367

魔兽改键源码

MFC写的魔兽改键源代码,使用了全局钩子。

2013-07-13

vc俄罗斯方块

使用visual C++编写的俄罗斯方块,界面美观

2013-04-03

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

TA关注的人

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