那些年,追过的开源软件和技术(下)

标签: 软件下载 IT业界 Linux 开源程序 | 发表时间:2015-03-10 14:57 | 作者:氪星人
出处:http://defcon.cn

数据存储:(NoSQL)

当时为了解决Scale的问题,伴随分布式系统发展,形成各个NoSQL软件,百花齐放。下面介绍常见的一些:

Memcached:是高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。性能瓶颈第一个就要想到用这个。有点万金油的感觉。

Redis:一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多。

Cassandra:名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字。最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身,可扩展型和性能都不错,Coursera也是大量使用作为数据对象存储。

Berkeley DB:文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数。之后被Oracle收购了。

CouchBase:文档型数据库,由CouchOne与Membase合并,之后的公司叫做Couchbase,功能还是挺强大的,自动备份,自动分片,在Linkedin广告组和运维部门都大力推荐。

RocksDB: 比LevelDB更彪悍的引擎,代码层面上是在LevelDB原有的代码上进行开发的,但却借鉴了Apache HBase的一些好的idea。

LevelDB:Google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与value,并且这种映射关系按key排序(ordered mapping)

MongoDB:一个基于分布式文件存储的数据库。为WEB应用提供可扩展的高性能数据存储解决方案。 介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

有一些基于各种NoSQL 特性和性能的比较: Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison

Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB

下面几个都是Linkedin开源的数据技术  Projects | LinkedIn Data Team

Voldemort:NoSQL 键/值存储引擎,完全是分布式且去中心化的,支持分区与容错。

Espresso:文档型NoSQL数据存储系统,MySQL作为底层数据存储,具有高性能、高扩展性、支持事务、容错能力等重要特征。

Databus:实时低延迟数据抓取系统

AMP Lab三剑客

AMP Lab 是Berkeley的一个王牌实验室,汇集系统,数据库,机器学习,各个领域的教授和丰富工业经验的学生,它们做出了很多有意思得到工业界认可的技术。

Mesos:一个分布式环境的资源管理平台,它使得Hadoop、MPI、Spark作业在统一资源管理环境下执行。它对Hadoop2.0支持很好。Twitter,Coursera都在使用。

Spark:已经成为Apache的顶级项目了,2014年的当红炸子鸡,我在这个帖子里面也介绍的比较全面了, 有什么关于 Spark 的书推荐? - Spark,它们也成立公司Databricks对cloud管理进行产品化。

Tachyon:是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,就像Spark和MapReduce那样。有幸跟项目发起人 李浩源聊过几次,这个项目目前发展非常快,甚至比Spark当时还要惊人。目前到0.6版本,参与开源的规模和版本迭代速度都很快。

先进大数据技术:流式,实时

由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。

Storm: 所谓流处理框架,就是一种分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易。经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Twitter是他们的主推。

Kafka: 是Linkedin开源的一种分布式发布-订阅消息系统,它主要用于处理活跃的流式数据。我面试过很多硅谷创业公司都在使用,比如最重要的用户Tracking数据。LinkedIn的开发者也出来成立公司 Confluent,最新发布 platform

Samza: 一个分布式流处理框架,专用于实时数据的处理,非常像Twitter的流处理系统Storm,LinkedIn开源了这项技术。跟上面的几个技术就可以比较一下了, https://tsicilian.wordpress.com/2015/02/16/streaming-big-data-storm-spark-and-samza/

SummingBird:将批处理和流处理无缝连接,通过整合批处理与流处理来减少它们之间的转换开销。把上面的Storm跟Scalding结合起来,所谓 Lambda Architecture。跟这个相关组件是 Algebird: 利用一些概率算法HyperLogLog来提高计算速度。

Drill:先说Dremel,是Google 的“交互式”数据分析系统。可以组建成规模上千的集群,处理PB级别的数据。MapReduce处理一个数据,需要分钟级的时间。Dremel将处理时间缩短到秒级。Apache推出Dremel的开源实现Drill。

Druid:在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。

Impala: Cloudera公司主导开发的新型查询系统,它提供SQL语义,能够查询存储在Hadoop的HDFS和HBase中的PB级大数据,号称比Hive快5-10倍,但最近被Spark的风头给罩住了,大家还是更倾向于后者。

Spark Streaming:建立在Spark上的应用框架,利用Spark的底层框架作为其执行基础,并在其上构建了DStream的行为抽象。利用DStream所提供的api,用户可以在数据流上实时进行count,join,aggregate等操作。

Spark SQL: 之前Spark类似Hive的工具称为Shark,现在新替代就是Spark SQL,  Big Data Benchmark 里面也跟Impala性能比较。

工具类:

Make:很多同学在学校时候,认为编程就是在编辑器里面运行,当离开了IDE,他们就不知道该怎么办。C语言的打包工具,比如解析依赖,生成二进制和可执行程序。

Ant:Java的传统打包工具,需要写个build.xml

Gradle:新一代的编译构建工具,结合ivy自动匹配和下载官方稳定版本

Maven:同上,有个比较 Java构建工具:Ant vs Maven vs Gradle

Homebrew: 最近几年都用Mac平台,那么包的管理可以用这个

Eclipse:使用最广泛的IDE,著名的日蚀标识。它的出现就是吃掉SUN(Java诞生地),我大多时间用这个,后来也用过Intellij 不过是商业版本的。跟Eclipse相比,管理大型代码库时候速度快。

Docker:作为一种新兴的虚拟化方式,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多,运行时所需的资源比虚拟机少,而效率又比虚拟机高提供隔离的执行环境。算是2014年上升最快的一个工具了。

JUnit:java的单元测试,属于测试驱动的利器。

Git:强大的分布式代码版本管理,Linux那么多分支都没乱正是它的功劳。但还是挺复杂,一大堆命令比SVN要多多了。目前 GitHub 就是最大的源码管理平台,我们公司也用它的企业版。有个结合Git和代码审查的工具由Facebook开发, Phabricator

SVN: 简化的代码管理,还有 perforce Amazon和Google也用。最老的是CVS估计现在没人用了呃。

浏览器:

Firefox:开源浏览器,当时靠丰富插件很强大,就靠Google的默认搜索来维持,但Google也开发了Chrome,给Firefox市场份额极大打击。所谓成也Google,败也Google。这个组织是Mozilla,就跟Coursera是邻居。我当时用过很多插件,比如proxy,去除广告,Firebug来调试,还有什么换皮肤,监控网络流量等。

Webkit:自从苹果开源了这么好的内核引擎,Google就就直接用它开发了Chrome。当时做信息抽取,有一种办法是基于视觉的信息提取, VIPS算法,如果通过webkit,就可以拿到正文的一些具体坐标和字体颜色大小,然后再分块确定重点内容做提取。

Spidermonkey:就是Mozilla旗下的一个JS解析引擎,我用这个是因为当时为了抓取网页,一些很变态的网站比如水木社区:( 把内容写在javascript里面,都是用字符串拼接起来,我为了获取完整的源码就要涉及到JS的解析。

V8: Google 的一个开源项目,是一个高效的JavaScript 引擎,像 Node.js基于Google V8提供了基于事件的I/O处理

文章来源: 那些年,追过的开源软件和技术

相关 [那些年 开源软件 技术] 推荐:

那些年,追过的开源软件和技术(下)

- - 氪星人
当时为了解决Scale的问题,伴随分布式系统发展,形成各个NoSQL软件,百花齐放. Memcached:是高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度. Memcached基于一个存储键/值对的hashmap.

那些年,追过的开源软件和技术(上)

- - 氪星人
笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己接触到这么多优秀的开源软件给大家做个梳理. 也许比较枯燥无聊,供大家以后查阅. Linux: 不用说,大多数公司都用这个,随着虚拟机越来越成熟,大家喜欢创建虚拟的Image,来提供某个Linux版本,我接触过一些常用的,Ubuntu,Redhat,Debian, Gentoo, CentOS, Federo,OpenSuse.

年度技术回顾之数据库、NoSQL、开源软件

- kezhuw - DBA Notes
本文已经首发于InfoQ中文站,版权所有,原文为年度技术回顾之数据库、NoSQL、开源软件,如需转载,请务必附带本声明,谢谢. InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、 Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等.

盛大开源软件

- - kernelchina
盛大研究院在其网站 http://www.sndacode.com/projects开源了不少应用. 很多都是上层应用相关,我感兴趣的有如下几个:. 在手机上看code的人估计是个傻帽,但是在PAD上面还可能是一件爽快的事情. 作为google reader的中毒使用者,这个功能还是很有价值的,是盛大电子书的亮点.

【创业说】纯技术团队创业,那些年我们一起走过的弯路

- - 36氪 | 关注互联网创业
编者按:本文作者是 Pragmatic.ly 创始人叶玎玎. Pragmatic.ly 是一个纯技术背景出身的团队,在两年的创业中走了不少技术型团队很很容易会走入的弯路,本文作者分享了其中的一些经验和教训. 原文最先发布在他的 个人博客,你可以通过微博联系他. 准确说,Pragmatic.ly 从有这个想法到现在已经有 2 年了.

狗日的开源软件许可证

- Michael - 酷壳 - CoolShell.cn
你知道这个世上有多少种开源软件的许可证吗. GNU上有个网页,上面记录了几乎所有的开源软件的许可证,真TMD的多,有开源的,有商用的,有软件的,有文档的,多得你都不想看了,天杀的,程序员们还真能鼓捣啊. 不过,主流的也就几种——GPL、BSD、MIT、Mozilla、Apache等等. 这里有一张比较复杂的图,在调侃这些纷繁的许可证(我不翻译了,这个图属于是发泄不满).

开源软件中的彩蛋们

- 加州旅客 - Wow! Ubuntu
嘿嘿,卖个关子.用DEB系的Linux同学自己看下吧. 还有aptitude help的超级牛力(Super Power),参考最后一行. 来看看apt-get能搞出来什马东西. Gentoo党:emerge moo. 来自:The Hitchhiker's Guide to the Galaxy.

2010年最佳开源软件

- 钊炜 - Solidot
InfoWorld公布了2010年的最佳开源软件名单,名单分为几大类别: 最佳企业开源应用程序:企业资源管理软件Openbravo ERP,SugarCRM,Pentaho BI Suite,Alfresco,Drupal,WordPress,LogicalDoc,Tiki Wiki CMS Groupware,Apache Solr.

开源软件发展史【信息图】

- bingo - 36氪
互联网倡导开放、平等、协作和分享的精神. 开源软件(英语:Open source software,英文缩写:OSS)是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量. 开放源代码的定义由Bruce Perens(Debian的创始人之一)于1997年提出.

Android UI 组件开源软件

- - 移动开发 - ITeye博客
其实也算不上合集,只是将我经常用到的部分整理一下,如果您有好东西,也可以留言补充,. 可以参照应用Libraries for developers,ios的参照Libraries for developers Pro. https://github.com/JakeWharton/ActionBarSherlock (推荐).