开源公司黄页之Facebook开源软件推荐(一)

从Facebook的GitHub账户中可以看到,Facebook已经开源的开源项目有近300个,领域涉及移动、前端、Web、后端、大数据、数据库、工具和硬件等。

React Native——移动开发框架

 

React Native是Facebook在2015年开源的基于React.js的移动开发框架,它的设计理念是让移动应用既拥有Native的用户体验,同时又可以保留React的开发效率,提高代码的复用率。React Native的宗旨是,学习一次,高效编写跨平台原生应用。开发者可以使用JavaScript编写应用,并利用相同的核心代码就可以创建Web、iOS 和Android平台的原生应用,目前已经实现了对iOS和Android两大平台的支持。


>>>源码地址:https://github.com/facebook/react-native

GraphQL——数据查询语言

GraphQL是Facebook开源的数据查询语言。Facebook在构建移动应用程序时,需要用API获取足够强大的数据来描述所有的脸谱,同时简单易学易用,于是开发了GraphQL,并支持每天千亿级的调用。GraphQL不是像MySQL或Redis这样直接面向数据的接口,而是面向已经存在的应用代码的接口。你可以把GraphQL看作是为了调用应用服务器上的方法的一些内嵌的RPC。

>>>源码地址:https://github.com/facebook/graphql

Presto——大数据查询引擎

Presto是Facebook开发的一款分布式SQL引擎,主要用于针对各种大小的数据源(从GB到PB)来运行交互式分析查询。Facebook创建Presto的主要目的在于帮助他们更快地分析数据,因为Facebook的数据量一直在持续增长,产品周期的节奏也变得越来越快。自从2013年11月开源后,Presto的用户量呈现了爆发式增长。诸如Airbnb、京东、Dropbox以及Netflix等公司都将Presto作为自己的交互式查询引擎。

>>>源码地址:https://github.com/prestodb/presto

 

HHVM——执行PHP代码的虚拟机

 

HHVM(HipHop Virtual Machine)是Facebook于2013年开源的PHP执行引擎。它采用一种JIT(just-in-time)的编译机制实现了高性能,同时又保持对 PHP 语法的充分支持。HHVM常常用作独立的服务器,用于替代Apache与mod_php,旨在执行使用Hack与PHP所编写的程序。它使用了即时编译方法来实现超高的性能,同时又保持了PHP开发者所习惯的灵活性。

>>>源码地址:https://github.com/facebook/hhvm

 

React——JavaScript库

 

React是Facebook开发的用于构建用户界面的JavaScript库,现已为很多公司所用,因为它采用了一种不同的方式来构建应用:借助于React,开发者可以将应用分解为彼此解耦的独立组件,这样就可以独立维护并迭代各种组件了。2015年,React有两个主要的发布,同时还发布了React Native,并且发布了新的开发者工具。现在已经有越来越多的公司(包括Netflix与WordPress)开始使用React构建自己的产品了。

>>>源码地址:https://github.com/facebook/react

 

RocksDB——键值存储系统

 

RocksDB是Facebook开源的嵌入式、可持久化键值存储系统,它基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上,可以有效使用快速存储,支持IO绑定、内存和一次写负荷。过去一段时间,RocksDB在社区非常流行,Facebook分析其原因在于它能够对由于网络延迟等原因造成的慢查询响应时间起到消除的作用,RocksDB非常灵活,完全可以针对各种新兴的硬件发展趋势进行定制。LinkedIn与Yahoo都是RocksDB的重度使用者。

>>>源码地址:https://github.com/facebook/rocksdb

 

ATC——网络模拟测试工具

 

Augmented Traffic Control(ATC)能够利用Wi-Fi网络模拟2G、2.5G(Edge)、3G以及LTE 4G移动网络环境,测试工程师们可以快速在各种不同的模拟网络环境中切换,从而实现对智能手机和App在不同国家地区和应用环境下的性能表现进行测试。ATC是Facebook内部团队在2013年的一次Hackathon活动上开发出来的工具,其原理实际是利用了Linux流量控制系统,通过纯Python的网络库pyroute2调用netlink的API控制,而开发其的目的是为了确保更多的用户获得最好的应用体验。

>>>源码地址:https://github.com/facebook/augmented-traffic-control

 

WebScaleSQL——关系型数据库

 

WebScaleSQL是基于MySQL 5.6 社区版本改编的MySQL通用分支,基于GPL开源协议发布。WebScaleSQL目前已经做了很多性能改进工作,包括:客户端异步协调、逻辑预读、查询限流、服务端线程池优化、InnoDB大页支持等等。WebScaleSQL上的功能都是很“Web Scale”和接地气的。比如线程池优化,WebScaleSQL基于Mariadb的线程池实现进行重写并优化,对读写队列进行分离,重新设计队列优先级策略,避免了饿死现象。要知道线程饿死在有些场景下是很严重的。尤其是在并发连接数往往很大的互联网应用里面。

>>>源码地址:https://github.com/webscalesql/webscalesql-5.6

 

Phabricator——代码审查工具

 

代码审查方面,Facebook开源了可视化工具Phabricator。工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以推出该代码审查,等等。只有代码被明确接受之后才能被工程师提交到服务器端的代码库,这一点集成到提交工具中强制执行。

>>>源码地址:https://github.com/phacility/phabricator

 

libPhenom——C语言并发编程框架

 

libPhenom是Facebook发布的一个C语言事件框架,用于构建高性能和高可扩展的系统。支持多线程、提供内存管理和常用数据结构、JSON处理。特性如下:

  • 带有计数器的内存管理——记录应用程序正使用的内存类型的次数
  • 工作——分解你的应用程序并用调度管理来搞定它们
  • 带缓冲的I/O流
  • 常用的数据结构(哈希表、列表、队列)
  • 数据类型的变种来使能JSON的序列化和反序列化
  • 带有注册对象格式的printf的实现

>>>源码地址:https://github.com/facebook/libphenom

Proxygen——C++的HTTP库

Proxygen是一款Facebook开源的支持SPDY 3.1的HTTP框架。其目的不是替换Apache,而是有能力创建一个专用的高性能Web服务器,使其可以嵌入到Facebook提供Web服务的现有应用中。Facebook从2011年开始构建一款代理服务器(Proxygen这个名字也是由此而来),在该项目演进并在生产环境中测试了数年之后,Facebook将其代码开源了。 Facebook内部做的基准测试表明,在一个Proxygen echo服务器上,每秒可以支撑多达304 197次基于SPDY 3.1的内存GET请求。

>>>源码地址:https://github.com/facebook/proxygen

 

Pop ——iOS 和 OS X 动画框架

 

Pop是Facebook推出的一个可扩展的iOS 和OS X动画库,其新闻聚合阅读应用Paper背后的核心技术就是由Pop支持。除了增加基本的静态动画外,还支持Spring和衰变动态动画,可非常方便的构建现实的、基于物理的交互。Pop动画库的动画效果非常流畅,因为它使用了CADisplayLink来刷新画面(帧),一秒钟刷新帧数为60帧,接近于游戏开发引擎。Pop动画的自成体系,与系统的CoreAnimation有很大的区别,但使用上非常相似。

>>>源码地址:https://github.com/facebook/pop

Memcached协议路由器:Mcrouter

Mcrouter 是一个基于Memcached 协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求。Memcached服务的客户端都会使用标准ASCII编码的Memcached协议,所以对于客户端来说,Mcrouter就像一个Memcached服务器;而对于服务器端来说,Memcached却又像一个普通的Memcached客户端。Mcrouter主要使用C++开发,且使用C开发了功能库部分,使用Ragel开发了协议解析部分,使用开源库Folly和Fbthrift处理异步网络。

>>>源码地址:https://github.com/facebook/mcrouter

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓