在做大数据的时候刚开始把所有数据都存入lhbase中,结果导致hbase每天都有很多数据 而且key设置的是ip虽然散列了,但是随着数据量的增加,用spark查询是越来越慢,因为新学习当时没有了解到Hbase的具体存储模式。在知道之后,就考虑写文件的方式。这个只是暂时想出来的方案。后来改成写Hadoop文件。
我们经常用的IO 大部分都是BIO但是在我们提高性能的方式上都是AIO,NIO.他们有什么区别呢?我们今天就来看看。
明白两个概念
BIO
在jdk1.4版本之前我们大部分都是采用的BIO,这是一种**同步阻塞的**的io方式,比我们经常用到的ServerSocket,就是处于等待的阻塞的。只要有请求过来才执行。该方式造成的就是性能上损耗很大。
NIO
NIO在操作上主要是用来解决我们上面说的并发问题,如果有多个访问过来在AIO只能是等待的上一个链接请求结束后才能操作。
NIO是基于Reactor的,在处理的时候NIO是使用单线程或者少量的多线程来操作的。这样就降低了系统的压力。
在NIO中主要有以下几个内容需要注意的 :
AIO
其实AIO是在NIO的基础上更近了一步,解决了NIO的同步情况。在这种情况下对IO的操作都是异步的。不需要进行等待。就能提高性能。通过调用回调函数来实现对异步操作结果的获取。
#总结
Java对BIO、NIO、AIO的支持:
BIO、NIO、AIO适用场景分析: