`
文章列表
RPC 功能目标    RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调 ...
Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http://weixiaolu.iteye.com/blog/1477774 )和java NIO。为了能够正确地分析hadoop的RPC源码,我觉得很有必要先研究一下jav ...
[size=medium]NIO学习 一.NIO中的几个基础概念 在NIO中有几个比较关键的概念:Channel(通道),Buffer(缓冲区),Selector(选择器)。   首先从Channel说起吧,通道,顾名思义,就是通向什么的道路,为某个提供了渠道。在传统IO中,我们要读取一个文件中的内容,通常是像下面这样读取的: public class Test {     public static void main(String[] args) throws IOException  {         File file = new File("data.txt" ...
Java  IO浅谈 [size=large]一.什么是同步?什么是异步? 同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解:   同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐 ...
                           Java线程池使用说明 一简介    线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。 二:线程池 线程池的作用: 线程池作用就是限制系统中执行线程的数量。      根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤 ...
线程池 在上一篇博客中,我们有提及阻塞IO的为每个连接请求建立一个线程或者放进线程池,如果我们还在每次都new一个线程的话,在庞大的连接数目下我们系统的性能将大大降低,更何况这些线程没有统一的管理,极有可能会产生大量的阻塞。 new Thread的弊端如下: a. 每次new Thread新建对象性能差。 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。 相比new Thread,Java提供的四种线程池的好处在于: a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。 b. 可有效控 ...
Java通信的几种IO设计 [size=large]阻塞IO 同步阻塞最常用的一种用法,使用也是最简单的,但是 I/O 性能一般很差,CPU 大部分在空闲状态。下面是一个简单的基于TCP的同步阻塞的Socket服务端例子: @Test     public void testBlockIoSocket() throws Exception     {         ServerSocket serverSocket = new ServerSocket(10002);         Socket socket = null;         try         {            ...
阻塞(blocking)与非阻塞(non-blocking)IO   IO的阻塞、非阻塞主要表现在一个IO操作过程中,如果有些操作很慢,很耗时间,比如读操作时需要准备数据,那么当前IO进程是否等待操作完成,还是得知暂时不能操作后先去做别的事情?一直等待下去,什么事也不做直到完成,这就是阻塞。抽空做些别的事情,这是非阻塞。   非阻塞IO会在发出IO请求后立即得到回应,即使数据包没有准备好,也会返回一个错误标识,使得操作进程不会阻塞在那里。操作进程会通过多次请求的方式直到数据准备好,返回成功的标识。   想象一下下面两种场景:   A 小明和小刚两个人都很耿直内向,一天小明来找小刚借书:“小刚啊, ...
Cassandra是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google's BigTable 的数据结构和功能特点,采用 Memtable 和 SSTable 的方式进行存储。在 Cassandra 写入数据之前,需要先记录日志 ( CommitLog ),然后数据开始 ...
Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google's BigTable 的数据结构和功能特点,采用 Memtable 和 SSTable 的方式进行存储。在 Cassandra 写入数据之前,需要先记录日志 ( CommitLog ),然后数据开始写入到 Column Family 对应的 Memtable 中,Memtable 是一种按照 key 排序数据的内存结构,在满足一定条件时,再把 Memtable 的数据批量的刷新到磁盘上,存储为 SSTable 。 ...
云计算(二) 这一篇主要来概括的介绍一下HDFS读取文件的具体过程。 一:预备知识: 在HDFS中namenode存储元数据,他的数据量并不是很大,但是在逻辑上却比Datanode的压迫复杂的多,一个具体的文件被拆分成了多个文件数据,存储在多个Datanode上,每个数据块文件在Datanode上都表现为一对文件,一个是真正的数据的文件,一个是附加的信息的元数据文件。因为是分布式的嘛,更何况还是把文件切成块了,所以必须得保存一些重要的信息,否则这些零散的文件块就没办法组织起来了嘛,这个似乎好理解。 二:服务器之间的通信。 必然的是,他们肯定是基于TCP/IP协议进行的通信啊,只是作为一个大的分 ...
:D 自从要好好的来学习云计算以来,就一直尽量在空余大量内阅读相关各种书籍与技术博客,看了久了,也该自己来写写一些了。云计算这种新事物总是很神奇,感觉上就觉得很高大上。现在是到自己来学习了,总是克服了一些思想上的困难总算是入了一点点门了吧。 HDFS框架 一、前提和设计目标 1、硬件错误是常态,而非异常情况,这种设计和我们之前写代码一直假设程序环境都是完美无缺的情况下的是完全不一样的。HDFS 可能是有成百上千的 server 组成,任何 一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是 HDFS 的核心架构目标。 2、跑在 HDFS 上的应用与一般的应用不同,它们主要是以流式 ...
[size=large][/size]一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得 ...
Global site tag (gtag.js) - Google Analytics