并发读写问题

2 views
Skip to first unread message

叶露

unread,
Aug 8, 2012, 11:59:42 PM8/8/12
to Yunt...@googlegroups.com
能满足后端速度要求的、轻量级的大数据读写问题一直没来得及解决,没想到已经有开源的啦:)读了下代码,我有两个问题:
1.没有看到并发读写方面的处理(可能我没有读的太清楚...)。能说明一下大致是怎么处理的么?
2.如何定制化支持最高效利用资源。比如最大限度地利用内存,比如全局DataBlock cache,尽量使用内存,如果表较小就可以完全load在内存里面,不过全局cache的并发性方面的问题也得思考如何解决。

吴朱华

unread,
Aug 9, 2012, 5:17:47 AM8/9/12
to yunt...@googlegroups.com
叶露同学:

虽然现在在Google Code上代码已经过期很长时间,但让我在技术层面回答你下面两个问题:
1. 并发读写,依据我们的实践经验,并发主要挑战还是在数据的consistency方面,我们采用的是标准的MVCC方式;
2. 现在在内存等资源方面使用的思路,是参考我们管理员brooks xi的基于他之前在华为实践的经验,就是尽可能地使用Linux自带内存管理机制,比如Page Cache,而不是在这上面Reinvent the wheel,并且这个思路已经得到我们内部非常好的验证;

希望能帮到你^_^
--
Cheers!
人云科技 PeopleYun.com
只有掌握和控制最核心的云计算技术,才能在这场巨大的浪潮中处于主导!!!

叶露

unread,
Aug 9, 2012, 5:54:44 AM8/9/12
to yunt...@googlegroups.com
非常感谢,这个回答又让我在其它方面有了思考。我想比较细致地了解具体的实现,所以我还有些比较具体的疑问:)
1.你的意思应该是如何解决并发导致的数据一致性的方法问题。我想了解一个比较底层的并发代码问题,从代码上看读操作是会有写行为的,比如hotness cache,这个是如何保证的并发安全性。或者是说单个节点读操作也是单线程的?就像redis那样?
2.0.9版本的代码我看有个deamon线程负责回收数据块(DataBlock),除此之外的数据都全部load在内存里,也就是说如果表非常大以至于索引等就会超过物理内存,程序本身并不做处理,而是利用系统的换页机制,以此来使用比物理内存多的内存?是我理解的这个思路么

2012/8/9 吴朱华 <ike...@gmail.com>



--
叶露 | yel...@gmail.com | (0086)186-1108-8237



er robit

unread,
Aug 18, 2012, 1:38:12 PM8/18/12
to yunt...@googlegroups.com
能满足后端速度要求的、轻量级的大数据读写问题一直没来得及解决,没想到已经有开源的啦:)读了下代码,我有两个问题:
1.没有看到并发读写方面的处理(可能我没有读的太清楚...)。能说明一下大致是怎么处理的么?
2.如何定制化支持最高效利用资源。比如最大限度地利用内存,比如全局DataBlock cache,尽量使用内存,如果表较小就可以完全load在内存里面,不过全局cache的并发性方面的问题也得思考如何解决。

表较小,就无所谓在不在内存了,内核会妥善处理的, load  内存的一般是索引,hist 。原来已经开源了,过去学习一下。
Reply all
Reply to author
Forward
0 new messages