当前位置 : 主页 > 网页版传奇归来 > 正文
那些年,追37传奇游戏过的开源软件和技术
Solr:基于Lucene的XML接口的独立运行的搜索服务器。通过HTTP协议以XML格式将文档放入搜索服务器(索引),GET来查询搜索服务器得到结果。
Drill:先说Dremel,是Google 的“交互式”数据分析系统。可以组建成规模上千的集群,处理PB级别的数据。MapReduce处理一个数据,需要分钟级的时间。Dremel将处理时间缩短到秒级。Apache推出Dremel的开源实现Drill。
下面几个都是Linkedin开源的数据技术 Projects | LinkedIn Data Team
Hadoop生态系统
J2EE 三剑客:
Lucene:基于Java的全文检索引擎,很有名也非常强大,elasticsearch就是基于这个开源基础二次开发。
Web 服务器:
PHP:当时很多网站用Java写的,php提出就是为了简化网站开发,为web而写。Facebook早年也是PHP写的,是很灵活的脚本语言,Coursera之前也是用Php搭建的,但却是很难维护,主要问题是每个人都可以写一个小框架,编程风格随便,难统一。除了Facebook他们花了大量人力去完善,基本上重写了Php,底层加速成C++,也发明了新语言Hack。
Gradle:新一代的编译构建工具,结合ivy自动匹配和下载官方稳定版本
Docker:作为一种新兴的虚拟化方式,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多,运行时所需的资源比虚拟机少,而效率又比虚拟机高提供隔离的执行环境。算是2014年上升最快的一个工具了。
百度首发,转载请说明。
Java: 估计是目前用的最广的项目语言,容易上手,概念简单,无数的库,大量的代码。我就不多介绍了,我自己也是大半的项目用Java写的。缺点时配置比较烦,很多什么XML,Config,适合写服务端。
Druid:在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。
V8: Google 的一个开源项目,是一个高效的JavaScript 引擎,像Node.js基于Google V8提供了基于事件的I/O处理
Bootstrap:Twitter提出的HTML,CSS和JS框架,让你的web app容易适配到各种平台,比如手机上。
Git:强大的分布式代码版本管理,Linux那么多分支都没乱正是它的功劳。但还是挺复杂,一大堆命令比SVN要多多了。目前GitHub就是最大的源码管理平台,我们公司也用它的企业版。有个结合Git和代码审查的工具由Facebook开发,Phabricator
Cassandra:名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字。最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身,可扩展型和性能都不错,Coursera也是大量使用作为数据对象存储。
由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。
LAMP:
JQuery:Javascript的最流行的库,可以做一些Ajax调用。
Spark Streaming:建立在Spark上的应用框架,利用Spark的底层框架作为其执行基础,并在其上构建了DStream的行为抽象。利用DStream所提供的api,用户可以在数据流上实时进行count,join,aggregate等操作。
Ant:Java的传统打包工具,需要写个build.xml
C/C++: 可能很多人入门都是啃着谭浩强的C程序设计,这种语言很强大,既高性能,又灵活(指针,地址,二维指针,指针数组),名词特别多(多态,重载,重用,范型,模板类,元编程),坑也特别多,容易造成内存泄露,野指针,在大学里面吃了不少苦头,疯狂看各种C++经典,秘籍,后来去了创业公司和百度都是大量使用,里面也很多人玩的如火纯青,面试时候经常出个写个线程安全的C++单例模式,析构能否多态或者什么写个调用顺序,让面试者骚手挠腮,欲罢不能,想想自己也折磨过这些面试者,真是罪过啊。这几年视野广了,不接触C++了,回过头来看还是觉得当年有些走火入魔,没必要自己折磨自己。
Rest.li:RESTful是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。使用HTTP协议中的请求方法来对应后端操作数据时候的增删添改(CRUD)。LinkedIn提出Rest.Li编程框架,是一款REST+JSON框架,使用动态发现和简单的异步API即可构建健壮可伸缩的服务架构体系。
ProtoBuf:Google提出的跟上面很像,用来序列化结构化数据的技术,支持多种语言持久化数据或者序列化成网络传输。
Java出来之后,为了提高大规模网站的开发效率,提出了很多框架,最经典就是分层J2EE, 在企业级,如银行系统大量使用,什么servlet,java bean,EJB,RMI,JMS, JSP,JNDI,JDBC,容器,管道,数据库连接池,当时最火的就是什么Java架构师,年薪百万啊有木有。那当然一般人玩不会了,后来出现了轻量级的MVC解耦合分层结构,在本科时候经常做管理系统,就使用这种轻量级J2EE框架,搭系统。里面重要3个组件
Helix:通用的集群管理框架,Linkedin出品。
Python:跟Perl, PHP,合成3P语言,都是脚本:) 非常方便实用,初学编程就可以拿它练习,有很多方便的库,比如urlib, beautifulsoap。有句话说:人生苦短 我用Python。做数据分析的有个超好的工具叫iPython,它是结合在线notebook,可以交互式编程,非常爽。据说Python的创始人在Dropbox,当年他简历就一句话,说I wrote Python. 在面试Google时候还被一些人误会,想会python算个啥,但人家是作者。有一本书 集体智慧编程 (豆瓣) 用Python作为实践做机器学习,推荐给大家。
当时为了解决Scale的问题,伴随分布式系统发展,形成各个NoSQL软件,百花齐放。下面介绍常见的一些:
笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己接触到这么多优秀的开源软件给大家做个梳理。也许比较枯燥无聊,供大家以后查阅。
LevelDB:Google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与value,并且这种映射关系按key排序(ordered mapping)
Tomcat/Jetty: Java J2EE容器,经常用的,我记得当时最喜欢看到配置成功后,页面显示的小猫图案。在Linkedin,这两个都用。一个用来做前端服务器,一个用来做后端。
搜索
Smarty:PHP的一种模板语言,很容易上手。
Tez:Hortonworks主推的优化MapReduce执行引擎,与MapReduce相比较,Tez在性能方面更加出色。
Samza: 一个分布式流处理框架,专用于实时数据的处理,非常像Twitter的流处理系统Storm,LinkedIn开源了这项技术。跟上面的几个技术就可以比较一下了,https://tsicilian.wordpress.com/2015/02/16/streaming-big-data-storm-spark-and-samza/
先进大数据技术:流式,实时
Spark SQL: 之前Spark类似Hive的工具称为Shark,现在新替代就是Spark SQL, Big Data Benchmark 里面也跟Impala性能比较。
Scala:各种集大成,面向对象,函数式编程,面向过程。我目前也在学习,东西实在太多,Coursera上面有Scala作者的一门课,https://www.coursera.org/course/progfun 公司技术部也主推这种语言,这也是为啥我们墙上员工证书中最多就是Scala这门课的。另外著名的Spark,Kafka也是Scala写的,确实在高性能,高并发上面表现不错,又保持了优雅精炼的写法。值得玩味。
摘要 : 笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己接触到这么多优秀的开源软件给大家做个梳理。也许比较枯燥无聊,供大家以后查阅。
Webkit:自从苹果开源了这么好的内核引擎,Google就就直接用它开发了Chrome。当时做信息抽取,有一种办法是基于视觉的信息提取,VIPS算法,如果通过webkit,就可以拿到正文的一些具体坐标和字体颜色大小,然后再分块确定重点内容做提取。
Firefox:开源浏览器,当时靠丰富插件很强大,就靠Google的默认搜索来维持,但Google也开发了Chrome,给Firefox市场份额极大打击。所谓成也Google,败也Google。这个组织是Mozilla,就跟Coursera是邻居。我当时用过很多插件,比如proxy,去除广告,Firebug来调试,还有什么换皮肤,监控网络流量等。
Impala: Cloudera公司主导开发的新型查询系统,它提供SQL语义,能够查询存储在Hadoop的HDFS和HBase中的PB级大数据,号称比Hive快5-10倍,但最近被Spark的风头给罩住了,大家还是更倾向于后者。
Berkeley DB:文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数。之后被Oracle收购了。
下一篇:怀旧传奇:哥堵好玩的传奇的不是城门 堵的是“青春”