自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 海量数据查询的一些关键技术

MPP架构,数据并行化处理 垂直切分,列式存储,列存储只需要将需要查询的数据列load到内存即可,且列式存储压缩比很高,例如bigtable/hbase等列族数据存储、dremel/impala的parquet数据格式水平切分,数据sharding,DRDS,mycat之类对mysql表进行简...

2016-09-27 00:31:19 3025 0

原创 解决关系数据库的性能问题的几个思路

对于传统的单机数据库rdbms,很难满足海量用户的并发需求,都有哪些技术手段解决 这个问题? 数据库前面加一层分布式缓存 放弃传统的rdbms,采用一个支持持久化存储的分布式的key-value分布式存储 考虑rdbms自身做scale-out,例如读写分离,分库分表 单机的硬件加速,db主机加内...

2016-04-06 11:36:23 1199 0

原创 分布式文件系统的副本分布策略

分布式存储系统中,副本在节点间的分布策略,对于快速定位数据的位置,以及整个系统的网络流量、节点间io负载均衡,非常重要。副本分布策略,大致分为三种: 1.基于统计和监控的副本分布策略; 2.基于一致性hash的副本分布策略; 3.基于伪随机算法的副本分布策略;

2016-04-01 15:34:27 3000 0

原创 概率图模型的一些总结

概率图模型是统计机器学习中比较重要的内容。在自然语言处理、时间序列分析、交通流量建模等领域有着比较广泛的应用。 概率图模型不像LR、SVM、GBDT等机器学习算法比较简单和直观,理解起来往往比较抽象和困难: 首先,从建模型上讲,概率图模型把训练数据抽象为相关的随机变量及其互相之间的依赖关系。L...

2019-03-17 17:47:35 114 0

原创 深度学习和计算机视觉的一些思考和总结

        做视觉和算法也有一年多了,是时候做一些必要的思考和总结。         最初接触深度学习是这样的,老大打算做一个深度学习框架在云环境下自动化部署的一个项目。之前对云这块还比较熟悉,误打误撞开始接触前段比较火的深度学习领域。这个任务还是比较简单的,只要把一个深度学习训练任务的各个...

2019-01-18 23:28:53 393 0

原创 关于C++的一些思考和总结

        最近一年半的时间,因为工作内容切换的缘故(从Infrastructure切换到DL和CV),开始大量使用C++作为开发工具。这一年多也花了不少时间在机器学习和算法的学习补充和积累上,也没有太多时间深入编程语言领域。年底了,忙里偷闲,这块的功课也可以做一个总结了。        开...

2019-01-18 22:15:03 137 0

原创 开源的OLAP引擎

大数据的声音虽然被AI掩盖,hadoop生态圈的各种轮子已经没有停下来的脚步。最近几天有空,梳理一下各种OLAP的计算和存储框架。 纯计算框架(query engine) Impala C++ cloudera主导 Drill drill的主要特点是支持多种的存储引擎和存储(HDFS HBas...

2017-12-25 20:23:30 3700 0

原创 谈一谈索引技术

熟悉关系数据库的人应该对索引不陌生。单列索引,多列索引,B树索引,位图索引,事务索引,三星索引等等。读研时期导师就说,索引可以作为一个研究课题搞一辈子。撇开最新的理论创新,即使了解过一些的研究成功,坑需要从一些大部头的著作看起。每年VLDB,sigmod上的关于索引的文章也很多。 本文不打算过于...

2017-12-19 15:41:44 1049 0

原创 OLAP最新技术前瞻

最近一直忙机器学习,同时兼职一个开源的nosql项目,一直没更新博客。OLAP最近的发展也如火如荼,百度开源的palo,tidb退出的tispark,前段易观的olap比赛。 先列一下几个技术方向,有空后面具体探讨:        1. CBO designed for distributed s...

2017-12-15 11:18:47 539 0

原创 2pc vs 3pc && spanner

2PC的缺点,有很多约束条件,是一个blocking协议。 协调者coordinator,参与者cohort都必须是高可用的,不能永久性故障。 这点无可厚非,这会带来工程实现的复杂度,一般是通过数据复制实现高可用,通过paxos来保持副本一致性。 coordinator、cohort必须把自...

2016-12-07 22:16:57 599 0

原创 raft比较容易混淆的问题

对于写请求,raft是一段提交,只要大部分follower回复append entry success,那么leader就修改本地的commit log index,并回复client成功。从这个角度上看,raft是一段提交。 对于读请求,如果允许follower提供读服务,那么要leader下一...

2016-12-05 20:52:12 2179 0

原创 如何构建一个单机高性能服务器

如何在现代硬件架构下构建一个高性能的服务器软件 从方法论上,可以考虑自底向上(充分利用硬件的特性)和自顶向下(从应用本身的特点考虑)两个维度来思考 自底向上 硬件层 增加程序并行程度,充分利用多核效率减少RISC架构下分支预测失败的概率(intel cpu也是采用了指令流水线和分支预测...

2016-10-26 15:16:35 1118 0

原创 数据结构和算法的一些小结

索引      通过数据的冗余和预计算,以减少io次数和逻辑判断的消耗,最终提高查询的速度。 索引的副作用      索引的加载、修改,会带来额外的IO和锁的消耗。 协程      把cpu的调度和上下文切换的工作,交给程序员控制的应用代码,而不是OS内核或者虚拟机,主要应用于RPC调用比较多的...

2016-10-26 13:10:22 326 0

原创 Flash卡的技术入门

背景知识: Flash卡的硬件基础是闪存颗粒nand,nand跟RAM(main memory)比,其电器特性有很大不同。nand不能支持直接写入,必须先擦除之前的数据,然后再写入;nand对于擦除的次数是有限制的,超过多少次之后不保证写入的数据可以正确读出。 目前国内一线电商公司已经在带...

2016-10-20 19:41:40 916 0

原创 常见的join算法

大表的Join算法无论在传统的关系数据库、在OLAP数据仓库还是在离线批处理系统中都是至关重要的一个算法。大表Join利用的数据冗余特性(join列在两个表都做存储),为用户的数据统计需求,提供了一个单间的视图,不需关心底层数据的存储格式、join的处理过程等等。 关于Join算法的选择、多表Jo...

2016-10-17 12:41:41 4141 0

原创 小众技术书籍推荐

主要推荐一些不是太有名气但是比较专业非常值得一看的书籍,有些可能没有中文译本: 《大规模web开发技术》 主要讲了hatena如何从一个很小的网站发展成为一个大规模网站的技术历程,遇到了哪些问题,采用了哪些技术;对于致力于web网站架构方面具有很大意义。hetana主要是一个博客类网站,涉及技术跟...

2016-10-13 23:13:33 448 0

原创 DPDK关键技术点

DPDK是intel推出的高效的zero-copy的发包工具,许多同学对其中的关键技术并不太了解,这里罗列一些粗略的技术点,感兴趣的可以针对其中某些点深入研究。 补充一点,intel最近推的SPDK跟DPDK类似,SPDK是跨设备IO,SPDK更复杂,需要考虑读写冲突、IO调度和不同硬件特性的优...

2016-10-13 11:47:05 3068 0

原创 为什么redis中会采用skiplist

redis既然是单线程,采用skiplist作为索引,相对于传统的红黑树而言,查询速度相仿,优势在哪里 关键在于redis是一个经常需要做插入删除操作的kv容器。redis有超时剔除机制,需要对key维护一个时间维度的索引或者队列,剔除超时的记录。剔除同时就需要对索引进程插入删除操作 sk...

2016-10-13 11:01:32 734 0

原创 数据削重的利器--cuckoo filter

最近再看Bloom Filter的删除问题,偶然间看到cuckoo filter的数据结构。Bloom Filter的思想是通过多维hash的办法,降低hash冲突的概率.。Basic Bloom Filter仅存储位图信息,只能判断一个key是否在集群内,可能存在假阳性(false positi...

2016-10-13 10:48:19 3014 0

原创 网络硬件的一些认识

假期时间看了一本介绍网络硬件的书《图解网络硬件》,作者日本的,文笔比较朴实,干货不少,网络硬件设备的发展历史介绍的比较详细。之前对于网络设备的有些零散的认识,比如mac地址学习,vlan,路由协议之类,没有系统的学习过。最近搞docker相关的sdn研究,刚好凑这个机会对完了过做了一次系统的学习,...

2016-10-10 11:50:17 303 0

原创 RDBMS实现技术的难点--专业的DBA需要了解哪些

系统软件中,RDBMS技术实现和运用掌握,可以说是最为困难的一个,甚至不是之一。       操作系统内核,涉及底层技术和算法,不同操作系统的发展殊途同归,在关键的数据结构和算法上的选择基本是一致,不那么容易让人产生混淆。linux的迅速发展中就借鉴了很多Unix/Solaris的技术。     ...

2016-10-02 21:25:41 405 0

原创 关于快照隔离和幻影读的一些深入思考

大家知道mysql的隔离级别有四种:read uncommitted,read committed,read repeatable,serializable       对于前面三种的区别,比较容易理解,不在赘述。关键是第三种个第四种的区别,不太好理解。       这里举个前段时间微信公众号上看...

2016-10-01 14:05:58 1992 0

原创 谷歌技术栈(old)和业界的对比

假期第一天下大雨没出门,顺便写下技术博客。        上面的是google的技术栈,可以自行google搜索。已经比较老了,比如F1、TensorFlow还没有加进来。        自底向上的分析吧 分布式锁和统一配置管理 开源社区的从最初的zk到etcd,已经有很多选择,有的分布式系...

2016-10-01 13:07:14 1211 0

原创 关于redis的一些总结

redis是一个全内存的数据结构服务器: 支持多种常用数据结构,例如list set hash map 多种内存索引(hash索引,skip list,rtree索引、组合索引、二级索引等)可以灵活的配置数据的存储格式(是否进行压缩)支持多种计算功能,如简单的集合的交并补,排序等 redis对于...

2016-09-30 21:45:56 297 0

原创 关系数据库实现的一些基本技术

ACID的一些关键技术 redolog undologMVCC基于乐观锁的并发控制2PC基于悲观锁的并发控制cache buffer double write 索引技术 B+树索引事务索引聚簇索引多维索引LSM-tree索引COLA-B+tree索引fractal tree索引位图索引Blo...

2016-09-27 13:13:17 351 0

原创 容器技术当前的不足和发展方向

内核在有些关键的资源隔离还不支持,或者需要比较高的版本,例如slab 内存,文件描述符,inode等等,容器环境独立的root,这都有待于内核和操作系统进一步发展;国内尚未听说有人尝试用coreOS之类;k8s之类编排和调度引擎,暂时缺少优先级的概念,例如在业务高峰期kill掉一些低优先级的容器,...

2016-09-26 17:22:53 1290 0

原创 容器网络之方法论和技术选型

容器技术发展很快,网络逐渐成为瓶颈,遇到的需求和问题: 跨主机的容器互联:很多中间件(jboss/redis/kafka)部署,要求跨主机实现分布式和高可用 容器与外部互联:容器内访问外部的物理数据库;外部服务调用容器中的服务,需要非NAT的IP直通(例如服务治理平台,容器以私有IP注册服务,外...

2016-09-26 16:29:53 1622 0

原创 Web架构/技术的一些演进

最近跟一个前同事聊了下前东家的web技术的发展和最新的一些web开发技术。 前东家的一些发展 前台已经在瘦身了,目前倾向于采用nginx+lua+redis的方式,不再使用apache+jbosscassandra之类还没都用起来,有些需要持久化存储的key-value数据暂时就是redi...

2016-09-23 11:49:57 370 0

原创 skip-list vs red-black tree

红黑树是常见的数据结构,主要用来建内存索引,内核的VFS里面有很多。 skip-list的数据结构,大学里面接触的少,近些年比较流行; skip-list的优点: 1.适合高并发的场景,red-black tree在经常插入和删除时候可能会涉及整个树的旋转,这就需要对多个节点枷锁;导致并发效果不过...

2016-09-03 12:34:24 874 0

原创 openstack vs docker

openstack在硬件资源的管理方面已经比较成熟了; docker则在应用程序的部署和编排方面具有较大的优势; open tack的heat,要部署一套app,要执行yum install,有点ugly; 而docker启动一个一个容器就是一个应用,这个应用的启动参数,可以用环境便令、命令行参数...

2016-09-02 23:19:03 534 0

原创 raft算法的核心思想

raft算法跟paxos,zab(zookeeper atomic broadcast)算法类似,设计一个一致性算法,在一个分布式系统中实现一个分布式的、高可用的、一致性的存储系统。 raft的特点是设计简单,易于程序员的理解和实现,并不是那么抽象。 raft算法的核心思想和关键技术点: 1.保证...

2016-05-13 12:20:49 405 0

原创 大型电商网站两年之技术总结

转眼已经是在互联网第三个年头了。跟公司一起成长,从经历过2次双十一大促,还有数不清楚的小促销。跟公司一起遇到了不少坑,这里站在宏观的角度为公司总结下经验和教训。 web架构,两个问题比较突出, 一个是经常出问题的就是数据库开发和运维不规范。有次大促数据库挂死,时候分析原因是备份脚本有问题,把...

2016-04-10 16:45:24 620 0

原创 web项目上云的思考

对于传统的web项目来说,上云(公有云)部署,在技术成熟度是比较高的;目前公有云IaaS类业务可以支持数据库、分布式缓存、负载均衡等web相关的挂件组件。这里主要讨论下,应用上云之后,技术上的优劣势和管理上的问题。本文主要分析以本人在国内某大型电商网站的私有云/公有云建设的经验为背景。

2016-04-07 11:14:22 978 0

原创 Data Structure and Algorithm

index数据结构 内存池管理 NLP deep learning

2016-03-24 17:59:28 729 0

原创 系统设计的角度看GlusterFS&&ceph

GlusterFS和ceph是开源领域很火的两个分布式文件系统。技术文章也有不少。这里只谈下个人的一些看法,大家讨论比较多就不提了。 GlusterFS的几大特点: 1.所见即所得,一个文件究竟长什么样,完全取决于client对于posix文件api的解释。副本怎么写,文件从哪里读,等等,都是cl...

2016-03-23 15:07:46 4625 0

原创 redis集群实现分布式锁

好久没写博客了,突然想起来以前看老外博客上redis做分布式锁的想法。 实现一个DLM(distributed lock manager)主要需要考虑一下几个问题: 1. lock server本身需要是高可用的,如果是多个节点,需要保证2n+1个节点只要n+1个节点可用则服务可用 2.分布式系统...

2016-03-23 12:56:15 4967 0

原创 近期分布式存储技术实践的总结和思考

1.从硬件发展趋势看,server san,pcie ssd加速将带来革命性的

2014-09-18 15:59:57 764 0

原创 impala

Impala是什么        Impala是cloudera发布的基于hadoop平台的sql查询引擎,本质上一个MPP(massive parallel process)查询引擎。 目的 提供类似传统商用数据库的交互式查询功能 解决hive只支持批量处理不支持实时查询的问题 能够处理超大规...

2014-01-10 17:35:08 1353 0

原创 Lio target

Linux-IO Target是什么 Linux上对于scsitarget的是一个实现,主要包括了target_core.ko(从2.6.38的内核版本开始)和其他几个可选的驱动模块。 Lio的目的          提供scsi的target服务,scsi的initiator跟target之间可...

2014-01-10 17:13:40 2791 0

原创 ceph的CRUSH算法

Ceph中关于副本位置的选择,采用的算法是CRUSH。核心思想是根据(object的ID,deviceID or number,deviceweight,replica number,伪随机参数)计算出副本的位置。 Ceph采用的CRUSH算法的实现,跟openstack swift等采用一致性一...

2013-12-09 15:01:08 1389 1

提示
确定要删除当前文章?
取消 删除