`
QING____
  • 浏览: 2253277 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

JVM垃圾回收

    博客分类:
  • JAVA
一.对象查找     在对对象回收之前,需要首先查找出亟待回收的对象,在JVM中,采取"根检索"算法来查找"死亡"的对象;这个算法的基本思想是通过一系列名为"GC Roots"的对象作为起始点,从这些节点开始向下搜 ...

GFS论文整理(四)

Data Integrity(数据完整性):     每个chunkserver使用checksumming(校验和)来检测存储数据的损坏.GFS分布式环境往往有数百台机器数千个硬盘,磁盘故障是一个很普通的事情,这往往会导致在读取或者写入时数据的存坏或者丢失.我们能够从其他chunk replicas中恢复这些损坏的数据.但是如果通过跨chunkserver的方式去检测这些损坏的数据,是不现实的.此外,副本数据有些出入或许是正常的:GFS mutation的语义,

GFS论文整理(三)

Snapshot:     snapshot(快照)操作瞬间为文件或者目录树(即source)做一个copy,最小化对正在进行的变更操作的打断。我们的用户使用快照功能来快速创建数据集庞大的分支副本(经常是副本的复制,递归地),或者在尝试应用数据修改之前对当前状态设置checkpoint,这样简单地提交或者回滚。     像AFS,我们使用标准的copy-on-write技术来实现snapshot。当master收到snapshot请求后,它首先撤销需要被snapshot的文件中所有chunks上的所有的outstanding leases(??未交付的lease,大概意思可能是未被 ...

GFS论文整理(二)

Operation Log:     operation log记录了比较重要的metadata数据修改,它是GFS的核心。它不仅记录metadata的修改记录,也充当了定义并发操作逻辑时间线的角色。Files和chunks,以及它们的versions,都是唯一的,并且是通过它们创建时的logic times来确定的。     因为operation log很重要,我们必须可靠的存储它,在metadata修改持久化之前对客户端是不可见的,否则我们可能丢失整个文件系统或者最近的client操作即使chunkserver正常。因此,我们在多个remote机器上(相对

GFS论文整理(一)

摘要:     我们设计并实现了GFS:一个高扩展性,适用于数据密集型应用的分布式文件系统。运行在廉价的商用服务器上,它提供了容错能力,它能够在大量客户端请求时提供较好的整体性能。     当享用众多具有同样上述目的的分布式文件系统时,我们的设计驱动力来对应用的工作量和技术环境,无论是当前还是预期,也折射出与早期的文件系统的背离。这些引导我们重新检测传统选择或者探索一个不同的设计方式。     这种文件系统比较成功的满足了我们的存储需要,它作为一个数据的存储和处理平台被广泛的应用在google,作为研究和开发大数据集合数据。最大的分布式数据能够提供成千上万TB的数据存储,存储在无数个硬盘 ...

GFS学习(三)

四、容错和诊断   4.1 高可靠性   4.1.1 快速恢复   不管如何终止服务,MASTER和数据块服务器都会在几秒钟内恢复状态和运行。实际上,我们不对正常终止和不正常终止进行区分, 服务器进程都会被切断而终止。客户机和其他的服务器会经历一个小小的中断,然后它们的特定请求超时,重新连接重启的服务器,重新请求。   4.1.2 数据块备份   如上文所讨论的,每个数据块都会被备份到放到不同机架上的不同服务器上。对不同的名字空间,用户可以设置不同的备份级别。在数据块服务器掉线或是数据被破坏时,MASTER会按照需要来复制数据块。   4

GFS学习(二)

二、系统交互   (1)租约(lease)和修改顺序:   (2)数据流   我们的目标是充分利用每个机器的网络带宽,避免网络瓶颈和延迟.   为了有效的利用网络,我们将数据流和控制流分离。数据是以流水线的方式在 ...

GFS学习(一)

Google文件系统GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。 一、设计概览    ...
一.bigtable是一个分布式存储系统,可以用来管理PB级别的结构化数据,且可以分布在大量的商业服务器上。 二.bigtable的目标是:广泛适用性,扩展性,高性能,高可用性。bigtable其类似一个数据库系统,和普通RDBMS数据库具有很多相同的策略,但是bigtable并不支持关联数据模型(bigtable是数据关系松散的),相反,它向客户端提供简单的/动态控制/模式自由的数据模型。可以通过row key和column name索引。客户端可以将任意字符串/字节数据存储与bigtable。Bigtable schema参数可以让客户端动态的控制数据是存储在memory中还是disk ...
单例设计类:   package com.test.singleton; import java.io.IOException; import java.io.ObjectStreamException; import java.io.Serializable; public class SingleTon implements Serializable{ /** * */ private static final long serialVersionUID = 768457893059530646L; priv ...
  总结自<高效mysql性能优化>: 第一章:5分钟DBA 一.鉴定性能问题: 1) 查找慢SQL语句:  >show full processlist  可以得到当前mysql所有连接中正在运行的操作,此指令将会输出当前运行的所有sql列表以及其耗时信息:  id:42  User:***  Host:****  Command:QUERY  Time:3  Info:select * from table    2) 查询计划(QEP):   可以通过Explain语句查看SELECT语句执行的情况.  提示:Alter操作,将会阻塞当 ...
Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"n",则它的值就是"n"而 ...
java api中Semaphore(信号量),用于控制有限资源的并发访问。API也非常好理解,不过有几个需要注意的地方: Semaphore是纯粹的应用级控制“锁”,使用简单的volitale变量作为信号量信息,通过acquire、release、reduce等显式的可以修改此信号量数字。 它并没有维护任何锁,也不是控制reentrant的,它不会维护信号和thread的关系。 Semaphore的初始值可以为0,甚至可以为负数。对于acquire调用(信号down),它只会比较现在信号值与0的大小关系,如果<=0那么将不能获得授权。 对于release(信号up),只是简 ...
前言:这是一次艰苦的旅行... 一.ExecutorService: 它也是一个接口,它扩展自Executor接口,Executor接口更像一个抽象的命令模式,仅有一个方法:execute(runnable);Executor接口简单,但是很重要,重要在这种设计的模式上。。   ExecutorService在Executor的基础上增加了“service”特性的方法: shutdown()、shutdownNow():都是关闭当前service服务,释放Executor的所有资源(参见实现类);它所触发的动作就是取消队列中任务的执行。shutdown是一种“友好”的关闭,它将不 ...
Executors是一个工具类,提供了大量的静态方法,方便我们在线程池中使用。  static Callable<Object> callable(Runnable task):将runnable接口实例转换成Callable接口实例. static ExecutorService newCacheThreadPool():创建一个“按需创建”的线程池,此前创建的线程可用时将重用它们。对于执行那些短期异步任务的程序而言,这些线程池通常可以提高程序的性能;在调用execute方法时(提交任务),如果此时没有线程可用,将会创建一个新的线程来执行此任务;终止并从缓存中移除那些已经 ...
Global site tag (gtag.js) - Google Analytics