- 博客(26)
- 资源 (7)
- 收藏
- 关注
原创 Java NIO——与传统IO文件复制的效率比较(channel.transferTo、Files.copy 、channel.write)
O与NIO操作效率对比(网上的说法千篇一律,99%都是错的,没经过自己的验证,正确的解释如下)复制文件的情况: 注意:Files.copy和传统IO代码基本一样,只是它开辟的缓冲区大小较大,为8192(基本是缓冲区开的越大越快,但是也吃内存)当缓冲区(效率上:传统IO > channel.transferTo > Files.copy > NIO::channel.
2017-12-27 15:56:43 1435
转载 Kafka Zero-Copy 使用分析
之前有听过Zero-Copy 技术,而Kafka是典型的使用者。网上找了找,竟然没有找到合适的介绍文章。正好这段时间正在阅读Kafka的相关代码,于是有了这篇内容。这篇文章会简要介绍Zero-Copy技术在Kafka的使用情况,希望能给大家一定借鉴和学习样例。前言Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个NIOZero Copy
2017-12-27 15:51:43 373
原创 kafka源码分析三
/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop
2017-12-23 15:59:21 1394
原创 kafka源码分析二
kafka Broker接收到数据响应的Handler处理方法/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for
2017-12-23 15:54:14 1141
原创 kafka源码分析一
package kafkaimport java.util.Propertiesimport joptsimple.OptionParserimport kafka.server.{KafkaServer, KafkaServerStartable}import kafka.utils.{CommandLineUtils, Logging}import org.apache.kafk
2017-12-23 14:33:59 2639
转载 Kafka消息文件存储
在对消息进行存储和缓存时,Kafka依赖于文件系统。(Page Cache) 线性读取和写入是所有使用模式中最具可预计性的一种方式,因而操作系统采用预读(read-ahead)和后写(write-behind)技术对磁盘读写进行探测并优化后效果也不错。预读就是提前将一个比较大的磁盘块中内容读入内存,后写是将一些较小的逻辑写入操作合并起来组成比较大的物理写入操作。 使
2017-12-21 21:01:36 543
转载 apache kafka系列之源码分析走读-kafkaApi详解
Kafka源码中数据交互流程图11.概述kafka启动时做很多初始化运行环境工作,具体请参考:apache kafka系列之源码分析走读-kafka内部模块分析其中SockeServer类启动时,首先初始化NIO网络环境、启动监听、创建主线程、工作线程池、设置参数等等。从上图1中可以看到整个交互过程中,kafka的所有逻辑处理和交互实际是交给
2017-12-21 19:55:31 479
原创 垃圾回收器CMS的配置
com.test.Test.java -Dapp.name=test -Xmx12g -Xms12g -Xmn8g -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
2017-12-21 16:14:15 922
转载 Kafka中的Selector网络接口详解
问题导读:1.Selector有哪些功能?2.Selector怎样保存内部状态信息?3.Selector为什么比直接使用NIO好?org.apache.kafka.common.client.Selector实现了Selectable接口,用于提供符合Kafka网络通讯特点的异步的、非阻塞的、面向多个连接的网络I/O.这些网络IO包括了连
2017-12-21 15:00:17 1701
转载 我学Kafka源码之Broker Server
本章,我们将进入到Kafka的核心类中进行代码走读,深入分析他的存储交互和消息分发原理。首先给大家展示一张服务端交互图,因为比较复杂我就没有再画,转发别人的一张图以供参考: 大家看完这个图以后相信有了一个整体认识,那么下面我们就重点从整体到细节的逐步分解。 一、KafkaServerStartable在Kafka的main入口中startup Kaf
2017-12-20 19:59:49 339
转载 在你的代码之外,服务时延过长的三个追查方向(上)
服务化体系里一般都有着严格的超时设定,为业务部门排查那些毛刺慢响应,也是基础架构部门的专家坐诊服务之一。有时候,即使你的代码写的很努力了,但还是会出现慢响应,因为这本就是艰难的世界。 本文从三个方向上各举一些例子:第一方面主要是热身,更加有趣的两方面见下集。 第一方面,操作系统篇准备知识: 《从Apache Kafka 重温文件高效读写》中Swap 和
2017-12-20 17:50:10 351
转载 在你的代码之外,服务时延过长的三个追查方向(下)
本文含一些比较有趣的地方,所以和上一篇截开,免得大家看着swap,page cache没劲就把文章关了。 第二方面 : JVM篇 — 高IO波动下的JVM停顿准备知识:JVM的Stop The World,安全点,黑暗的地底世界在压测中非常偶然的超时,但CPU正常,网络正常,只有IO在刷盘时偶然写个几秒。那,就继续怀疑IO吧。第一步,日志都异步写了吗?而且,
2017-12-20 17:41:14 297
转载 Kafka文件存储机制那些事
Kafka是什么Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。1.前言一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个
2017-12-20 17:03:43 180
转载 从Apache Kafka 重温文件高效读写
0. Overview卡夫卡说:不要害怕文件系统。它就那么简简单单地用顺序写的普通文件,借力于Linux内核的Page Cache,不(显式)用内存,胜用内存,完全没有别家那样要同时维护内存中数据、持久化数据的烦恼——只要内存足够,生产者与消费者的速度也没有差上太多,读写便都发生在Page Cache中,完全没有同步的磁盘访问。整个IO过程,从上到下分成文件系统层(VFS+
2017-12-20 17:01:25 587
转载 Linux 内核之页高速缓存与页回写
1. 什么是页高速缓存,作用是什么概念:Linux内核实现磁盘缓存的技术就叫页高速缓存。即把磁盘中的数据缓存到物理内存中,把对磁盘的访问转换为对物理内存的访问。(物理内存的最小单位为页,页高速缓存缓存的是内存页面,所以叫页高速缓存) 作用:减少对磁盘I/O的操作,提高系统性能2. 为什么页高速缓存会带来性能的提高访问物理内存的速度远远快于访问磁盘的速度(ns与ms的数量级差距)。所以
2017-12-20 10:44:58 532
转载 某互联网大厂kafka最佳实践
前言:上手kafka已有2年的时间,我们的数据处理量也从最初的300g/day发展到今天的T量级在这个过程中也踩了不少坑,在这里分享出来和大家共勉。一、硬件考量1.1、内存不建议为kafka分配超过5g的heap,因为会消耗28-30g的文件系统缓存,而是考虑为kafka的读写预留充足的buffer。Buffer大小的快速计算方法是平均磁盘写入数量的30倍。推荐使用64GB及以上内存的服务器,低于
2017-12-19 09:47:11 337
原创 记一次Kafka消费者拉取数据不均匀问题
记一次Kafka消费者拉取多个节点的数据,其中有1-2个节点出现拉取流量比较大问题,其原因是我把consumer拉取的数据的自动提交配置设置成了false,而并没调用commit(offset)提交接口,推送导致是其原因由于没确认又重复的拉取数据了,之后修改成自动确认的问题解决了。配置如下,enable.auto.commit:默认值为 true。auto.commit.inte
2017-12-18 11:43:06 8849
转载 Kafka Consumer API样例
Kafka Consumer API样例1. 自动确认Offset说明参照:http://blog.csdn.net/xianzhen376/article/details/51167333Properties props = new Properties();/* 定义kakfa 服务的地址,不需要将所有broker指定上 */props.put("bootstrap.s
2017-12-18 11:30:26 296
转载 kafka中处理超大消息的一些处理
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试)。但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如何处理?针对这个问题,有以下几个建议:最好的方法是不直接传送这些大的数据。如果有共享存储,如NAS, HDFS, S3等,可以把这些大的文件存
2017-12-15 09:17:24 2485
转载 Kafka日志清理过程
总所周知,kafka将topic分成不同的partitions,每个partition的日志分成不同的segments,最后以segment为单位将陈旧的日志从文件系统删除,本文由javacoder.cn整理,转载请注明出处。假设kafka的日志目录为tmp/kafka-logs,对于名为test_perf的topic。假设两个partitions,那么我们可以在tmp/kafka-logs目
2017-12-11 09:30:24 6990
转载 《kafka中文手册》- 构架设计
4. DESIGN 设计4.1 Motivation 目的4.2 Persistence 存储Don’t fear the filesystem! 不要对文件系统感到恐惧Constant Time Suffices 常量耗时需求4.3 Efficiency 效率End-to-end Batch Compression 端到端的数据压缩4.4 The Produc
2017-12-08 17:35:35 1697
原创 linux 安装sysstat使用iostat、mpstat、sar、sa
sysstat 使用yum安装 #yum install sysstat sysstat的安装包是:sysstat-5.0.5-1.i386.rpm,装完了sysstat-5.0.5-1.i386.rpm后 就会有iostat、mpstat、sar、sa的功能,sysstat-5.0.5-1.i386.rpm 启动sysstat /etc/init.d/syss
2017-12-07 17:45:38 223
转载 Java性能优化之JVM GC(垃圾回收机制)
Java的性能优化,整理出一篇文章,供以后温故知新。JVM GC(垃圾回收机制)在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成。G
2017-12-04 20:20:27 212
转载 JVM调优之jstack找出最耗cpu的线程并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器上的Java应用名称为mrf-center:root@ubuntu:/# ps -ef | grep
2017-12-04 17:41:19 233
转载 JVM垃圾回收机制
每个Java程序员迟早都会碰到下面这个错误:java.lang.OutOfMemoryError这个时候一般会建议采用如下方式解决这个错误:增加MaxPermSize值增加最大堆内存到512M(-xmx参数)这篇文章会具体介绍Java堆空间和参数MaxPermSize的含义。这篇文章涉及下列主题,并采用Hotspot JVM:垃圾回收器(Garbage Co
2017-12-04 17:23:05 122
epel-release-6-8.noarch
2016-04-01
centos安装telnet插件与说明
2016-02-01
centos安装telnet使用
2015-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人