您的位置:首页 > 其它

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

2016-10-01 13:07 197 查看


      假期第一天下大雨没出门,顺便写下技术博客。

       上面的是google的技术栈,可以自行google搜索。已经比较老了,比如F1、TensorFlow还没有加进来。

       自底向上的分析吧

分布式锁和统一配置管理
开源社区的从最初的zk到etcd,已经有很多选择,有的分布式系统中还会自己造个轮子(例如ceph的ceph monitor)。zk有自己的zab协议,etcd比较新,是基于raft协议,raft与最初的paxos相比,利于编程者的理解和工程的实现

集群调度
hadoop有自己的yarn,支持多种集群环境的mesos,docker上的kubernes。跨数据中心调度,抢占式优先级调度(kill掉低优先级的任务迅速提升高优先级任务的实例数量),这些工程实现方面还有差距。至少还没听说有hadoop任务跟web service跑在同一个物理机集群的案例。

分布式文件系统
colossus的技术细节,谷歌并没有公布论文;开源社区hdfs的主要精力放在元数据服务器的sharding和高可用上面,对于小文件的性能,尚未关注。开源社区的明星ceph设计理念设应用场景跟GFS/Colossus有很大不同,可以比性不强

分布式跟踪系统
许多java的服务治理框架里面已经功能相当完善了,例如阿里的edas

分布式key-value存储
业界的解决方案很多,发展也很快,例如Hbase上面很多公司做了不少工作,例如二级索引,纠删码
Dynamo cassandra ciak等等其他的key-value持久化存储的方案,跟Bigtable的架构差别比较大

近线查询&&SOL on MR
开源社区的解决方案有很多,从原始的hive到impala,tez stinger等,这些跟dremel类似,采用列式存储+离散的parquet格式+有限自动机重构+全表扫描的方式
有些采用完全不同思想的解决方案,例如apache kylin的datacube+hbase的方案,以空间换时间
还有些引进了MPP数据库的cost based 查询优化器,例如presto、HAWQ、redshift等。presto还可以跨越多种key-value存储的数据源。

分布式OLTP数据库
开源的cockroachdb、TiDB等还在持续发展中,尚未成熟

开源的voltdb已经比较成熟了,但是场景跟互联网或者谷歌的思路有比较大的差别,voltdb是牺牲公平性,获取吞吐量和隔离性。
阿里的oceanbase是OLTP,但是事务相关的工作还是单点来做的,虽然并不是真正意义的分布式OLTP,但实用性还是比较强的,以现在的硬件发展条件,把update server硬件配置堆上来,并不是难事,上次听蚂蚁的兄弟说已经有几个集群的在大规模使用。

事务型增量索引
小米themis,雅虎的amid等,均有在base做跨分片的事务,原理跟percolator类似,基于base的单记录事务的原子性和2PC协议来实现

流数据处理
开源界的工具也很多,kafka、storm、spark streaming等,都可以做

图搜索和机器学习
hadoop hama、mahout,spark MLlib等也有很多
基于统计学的分类算法,例如贝叶斯、SVM、Kmeans等,有很多现成的lib库
基于DNN思想的机器学习算法,其计算特点跟传统的大数据分析有很多差别:传统的大数据分析主要是精确的排序和逻辑判断;而DNN会进行大量浮点运算和迭代运算,需要参数服务器、GPU运算引擎(cuda)等技术,比较另类也更为复杂
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: