Archive for May, 2014

作者:AngryFox 分类: Uncategorized May 1st, 2014 暂无评论

无锁 并发跳表 32线程写入从11w提升到500w
减少内存拷贝
C++ 11的右值引用
Intel指令集优化(64位大小端转换 memcmp)

内存分配:
避免内存碎片 Arena
通过内存池的分配来减少内存分配消耗的时间
精确控制生命周期 slice
C++11的只能指针 shared_ptr unique_ptr
hbase优化 通过预分配取消自动触发split的机制

网络基础设施里面已经有部分的网络节点采用SDN的思想,比如说我们在公网流量的调度、转发上面采用了SDN的一些思想,但是在内网并没有采用SDN的思想。
无线网络的一大特点:秒级状态管理,秒级状态转换。这两个操作都在几百ms到几秒之间进行,对于维持连接来说时间太短,对于从无连接到有连接的转换来说时间又太长。
相比之下,有线网络的状态管理如ip分配、tcp连接释放,都是分钟级,而状态转换则是毫秒级。
remarkjs,用impress.js制作幻灯片
仿照Sinatra的路由设计,参考Express的中间件设计 koa, martini

机器人开源项目

http://cylonjs.com/

http://gobot.io/

http://www.ros.org/

锁分为两种:休眠式锁和自旋锁。休眠式锁的原理是当当前线程不能获取到指定的锁时,它就让出CPU,加入到一个等待队列中,直到被唤醒,它才会被重新调度执行。自旋锁的原理是若当前线程不能获取到指定的锁,它不会主动让出CPU,而是会在一个紧凑循环中重复的检测锁是否已经可用,即忙等待(busy wait)。
休眠锁(pthread_mutex_t) 和glibc 自旋锁(pthread_spinlock_t)

1.跨机房的HA。为了容灾或者加速,很多公司都采用在不同机房部署数据库的方式,所以就涉及到数据同步。为了保证每个机房产生的数据不冲突,一般来说我们采用的是auto_increment_increment,auto_increment_offset这两个参数,可以控制步进。例如双MAster,我们会配置主库是奇数序列的ID,备库是偶数序列的ID,这样切换时就算有少量binlog还未应用,也不会导致数据冲突。跨机房以后,例如两个机房都有双Master,两个机房之间数据又需要同步,以前需要借助第三方脚本或者程序,有了多Master,按如下方式搭建,设置步进为4,就可以保证每个机房有双MAster HA,机房之间数据又可以同步。

2.一备多的备份。因为我们采用的分库策略,使我们一个集群会有很多个实例,每个实例里面有几个Schema,但是肯定不会重复。例如第一个实例是1~3号Schema。第二个实例就是4~6号Schema,所以binlog应用到一起并不会冲突数据