- 浏览: 195064 次
- 性别:
- 来自: 杭州
博客专栏
-
Percolator与分布...
浏览量:5674
最新评论
-
heglase:
好牛逼 竟然解决了我别的问题
使用jdk工具tools.jar引发的问题 -
wqcva:
在使用这个类的时候workerId应该怎么传
java时间有序id生成 -
沙漠绿树:
增加虚拟节点解决数据均衡的问题。我有个疑问:1.使用虚拟节点后 ...
一致性hash的实现 -
BucketLi:
wangjian95 写道tddl.....?不是
java唯一ID生成 -
wangjian95:
tddl.....?
java唯一ID生成
文章列表
一些基础命令
0:移到行首
$:移到行尾
):最后一行的最后
(:最前一行的最前面
G:文档最后一行
gg:文档第一行
h,j,k,l:左下上右4个方向移动,如果在按这些键之前加一个g,可以达到的效果是只移动一行
w:向右移动一个词
b:向左移动一个词
fx:移动到本行x字符上
Fx:和fx功能相同,不过往回找
tx:移动到本行x字符左边一个字符
/text:搜索,重复按n
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入新行
O:在当前行上面插入新行
dd:删除所在的 ...
Mysql InnoDB对于MVCC的实现摘要
- 博客分类:
- mysql
InnoDB的每一个读写操作都是事务,但是应对高吞吐量,比较多的读多写少场景,单单行锁是非常单薄的,所以其实现了MVCC,效果不错。下面简单tips下InnoDB的MVCC对于SELECT,INSERT,DELETE,UPDATE的相应行为。
SELECT
InnoDB必须检查涉及查询的行满足下面两个条件:
1.InnoDB必须找到一个版本小于或者等于本次事务版本的行数据。这保证了这行数据存在于
本次事务开始,创建或者修改这行之前。
2.这行数据的删除版本必须是为空的或者大于本次事务版本。这保证了在本次事务开始之前
该行数据是没有被删除 ...
Percolator与分布式事务思考(三)
- 博客分类:
- 分布式
Percolator的事务实现依赖一个全局的时间戳服务来生成严格递增的时间戳,因为每个事务需要连接时间戳服务2次,这个服务必需能够很好的扩展. 这个预报服务通过写一个最高可分配的时间戳到持久存储中周期性的分派一个范围的时间戳段;给一个已分配时间戳段,那么预报服务能够在内存中严格按增量给请求分配时间戳(译者:现在看来,这个时间戳服务是单机的。).如果预报服务重启,时间戳将会跳到最大的已分配时间戳(我们不会让时间戳往后退).为了减少RPC请求(在事务延迟时间不断增长下)每个Percolator worker在跨事务的场景下通过维持一个预先准备的预报服务的RPC请求批量提交时间戳请求.随着预报服务压力 ...
Percolator与分布式事务思考(二)
- 博客分类:
- 分布式
这一篇会更加细节的来了解以下Percolator分布式事务,首先看下事务协议。Figure 6 显示了Percolator事务的伪代码,事务构建器请求时间戳预报服务一个开始的时间戳(第6行),通过Get()操作决定可见的一致性快照。被暂时缓冲起来(buffered)(第7行)直到提交的时候调用Set()操作。基本的提交多个缓冲写的方法是2段提交,这个通过客户端协调。不同机器的事务交互通过BigTable tablet 服务器上的行事务进行。(译者:这个和XA对比比较类似,TM只做事务日志和协调,但是并不关心隔离性,由各个RM来进行各自的隔离性实现,无论是XA还是Percolator的实现都会产生 ...
Percolator与分布式事务思考(一)
- 博客分类:
- 分布式
Percolator严格说来是google一个处理增量网页索引的系统,可以认为其内部mapreduce系统的一个增量版本,同时提供了强一致更新不同机器中索引信息的机制。论文原文可以在http://research.google.com/pubs/pub36726.html 这个链接中找到。
这篇论文我做了下翻译,这里主要tips下我比较关注的如何保证更新不同机器上数据时的ACID。
Percolator被构建出来纯粹是为了增量数据的处理,它并不打算取代现有的对多数数据处理的方案.那些不能被分解为一些小的更新的计算(比如一个文件的排序)更适合用MapReduce来处理.同时,除非计算需要强一致 ...
Velocity 关键字的文本输出
- 博客分类:
- java基础
Velocity 最新版本 1.7支持
#[[
#foreach($hobby in $hobbys)
#end
]]#
以及
\#foreach(\$hobby in \$hobbys)
\#end
两种方式源码不解析显示
―――――――――――――――――――――――――――――――
1.7以下的版本只支持\转义的方式
\#foreach(\$hobby in \$hobbys)
\#end
使用JAVA执行命令行
- 博客分类:
- java基础
java直接调用shell执行,各个操作系统都支持,下面的示例是调用windows cmd下的ipconfig
public class CallShell {
/**
* @param args
*/
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("ipconfig");
InputStream is=process.getInputStream();
byte[] b=new byt ...
关于MYSQL在线扩容和缩容
- 博客分类:
- mysql
主要简单总结下,mysql在线扩容和缩容一般涉及到的内容,主要包括三个方面,1.在线也就意味着需要把增量的数据重新分布到新的拓扑结构中,我们一般称做增量复制,2.原有的数据需要一条不漏的扫出来重新分布到新的拓扑结构 ...
java虚拟机基础学习以及有用的tips
- 博客分类:
- java基础
看了一个ppt,感觉不错.linux部分已经总结在了<Linux的一些有用命令>这篇博文里了.这篇主要tips下jvm的一些基础知识点和实际设置点.
Java内存问题的两个主要发生区段:
1.Java内存--包括heap堆内存和permanent区
2.本地内存--包括JVM进程内存和java使用的第三方本地代码
Java内存不足:
1.Java堆内存heap不足,无法再分配新对象或内存块
2.permanent区内存不足,无法再加载类到内存中
本地内存不足:
1.物理内存不够,无法再得到内存
2.第三方本地代码有内存泄漏的Bug,例如oracle oci dr ...
java几个有用的Hash算法
- 博客分类:
- java基础
各位可以自己试验下哪种hash算法最快。这里收藏下,以后有用。
package net.rubyeye.xmemcached;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.zip.CRC32;
import net.rubyeye.xmemcached.exception.MemcachedClientException;
im ...
linux远程机器打通和文件系统权限
- 博客分类:
- linux
用了一早上来搭建环境,之前对于linux模糊的文件权限终于有了一个比较清晰了认识。这里tips下。
linux文件系统的权限包括文件(或者目录)拥有者用户,组用户和其他用户权限组成。
用ls -ag可以查看
drwxrwxrwx 777 目录权限
-rwxrwxrwx 777 文件权限
d代表目录,后面3组分别文件所有者,组用户和其他用户的权限。每一组3位按照二进制来算
比如
-rw-r--r-- 644
-rwxr-xr-x 755
-rwxrw-rw- 766
-rwxrwxrwx 777
r代表读权限
w代表写权限
x代表执行权限
一般文件权限赋予命令可以是
chmod u ...
之前遐想的中文语义分析
1.中文短句结构简述
主语:指明说的是什么人或什么事
谓语:指明主语”是什么”或”怎么样”
宾语:跟在动词后,表示动作,行为涉及到的人或事物.
定语:名词前面连带成分,用来修饰,名词表 ...
BytesKey以及其他一些代码细节
- 博客分类:
- java基础
byte数组如何作为key?下面是一个实现。
public class BytesKey implements Serializable {
/**
* serialVersionUID
*/
private static final long serialVersionUID = -6296965387124592707L;
private byte[] data;
public BytesKey(byte[] data) {
this.data = data;
}
/**
* @return the data
*/
...
之前一直没去搞明白程序启动参数和 System.getProperty所取得的参数的区别。现在tips下,
System.getProperty中取得的参数有些是默认的,不过也可以自行设置,方法是在java命令之后,启动类之前,添加 -Dkey=value 类似格式的参数。
程序启动参数(也就是main函数后面的String[] args)必须加在启动类后面,用空格隔开。
$JAVA_HOME/bin/java $JAVA_OPTS -Dreplicator.properties=$CONF_DIR/replicator.properties -classpath $CLASSPATH ...
一个java定时器实现
- 博客分类:
- java基础
之前有几个需要用到定时器超时的场景,比如线程池大小有限,如何让task不死等,但又不至于一旦队列满就直接reject或者让提交线程来做,但后来还是用让提交线程做事的方式来做,也就是并行暂时退化成了串行。
定时器有几个关键部分,1.定时扫描机制和设定,2.超时处理callback,3.超时前成功返回cancel.定时器的实现有很多种。下面的代码主要是团队使用的改造过的HashedWheelTimer,内部有很多细节,但不妨碍理解机制。
业务使用代码:
Timeout timeout = this.timer.newTimeout(new TimerTask() {
...