对付为什么要发布开源项目,Facebook开源项目卖力人曾经阐明过:一是开源能够帮助他人更快地开拓软件,促进天下创新,紧张是社会代价层面的考虑。二是开源能够倒逼Facebook的工程师写出更好的代码。三是开源能够更有效利用社区的力量,帮助Facebook一起办理难题。开源,让天下更美好,不是吗?
Facebook开源软件列表
从Facebook的GitHub账户中可以看到,Facebook已经开源的开源项目有近300个,领域涉及移动、前端、Web、后端、大数据、数据库、工具和硬件等。Facebook开源项目卖力人James Pearce曾在OSCON阐明过Facebook究竟为何要利用、支持和发布开源项目。详细如下:

共享Facebook的代码(常日是软件“栈”,偶尔也包括硬件设计)促进了这个天下的创新。这些代码帮助他人更快地开拓软件。由于Facebook不是一家软件公司,以是它在开源过程中没有面临竞争对手的威胁,相反,开源带来的代价在逐渐显现。用户利用Facebook的开源代码可以更快地构建运用,而他们也乐于回馈代码,使Facebook从中受益。
拥抱开源,意味着Facebook必须一开始就写出更精良的软件。如果他们知道某个软件从出身起就要公开,那就必须要好好做,提高可用性和可靠性,由于将来表面的人都会用它。这种压力也会给公司内部带来更多的代价。
开源带来了共享寻衅的机会。开源项目面临的难题会吸引一些外部的精良职员,而结果是,他们也带动了公司内部职员的能力提升。每天Facebook都承载了超过一亿人的沟通互联,何以能做到?唯有开源的力量。
下面是InfoQ编辑整理的Facebook现有的比较生动的开源项目列表,欢迎互换谈论。
移动开拓框架:React Native
React Native是Facebook在2015年开源的基于React.js的移动开拓框架,它的设计理念是让移动运用既拥有Native的用户体验,同时又可以保留React的开拓效率,提高代码的复用率。React Native的宗旨是,学习一次,高效编写跨平台原生运用。开拓者可以利用JavaScript编写运用,并利用相同的核心代码就可以创建Web、iOS 和Android平台的原生运用,目前已经实现了对iOS和Android两大平台的支持。
数据查询措辞:GraphQL
GraphQL是Facebook开源的数据查询措辞。Facebook在构建移动运用程序时,须要用API获取足够强大的数据来描述所有的脸谱,同时大略易学易用,于是开拓了GraphQL,并支持每天千亿级的调用。GraphQL不是像MySQL或Redis这样直接面向数据的接口,而是面向已经存在的运用代码的接口。你可以把GraphQL看作是为了调用运用做事器上的方法的一些内嵌的RPC。
大数据查询引擎:Presto
Presto是Facebook开拓的一款分布式SQL引擎,紧张用于针对各种大小的数据源(从GB到PB)来运行交互式剖析查询。Facebook创建Presto的紧张目的在于帮助他们更快地剖析数据,由于Facebook的数据量一贯在持续增长,产品周期的节奏也变得越来越快。自从2013年11月开源后,Presto的用户量呈现了爆发式增长。诸如Airbnb、京东、Dropbox以及Netflix等公司都将Presto作为自己的交互式查询引擎。
PHP实行引擎:HHVM
HHVM(HipHop Virtual Machine)是Facebook于2013年开源的PHP实行引擎。它采取一种JIT(just-in-time)的编译机制实现了高性能,同时又保持对 PHP 语法的充分支持。HHVM常常用作独立的做事器,用于替代Apache与mod_php,旨在实行利用Hack与PHP所编写的程序。它利用了即时编译方法来实现超高的性能,同时又保持了PHP开拓者所习气的灵巧性。
GitHub主页:https://github.com/facebook/hhvm
Star数量:13652
JavaScript库:React
React是Facebook开拓的用于构建用户界面的JavaScript库,现已为很多公司所用,由于它采取了一种不同的办法来构建运用:借助于React,开拓者可以将运用分解为彼此解耦的独立组件,这样就可以独立掩护并迭代各种组件了。2015年,React有两个紧张的发布,同时还发布了React Native,并且发布了新的开拓者工具。现在已经有越来越多的公司(包括Netflix与WordPress)开始利用React构建自己的产品了。
GitHub主页:https://github.com/facebook/react
Star数量:43146
键值存储系统:RocksDB
RocksDB是Facebook开源的嵌入式、可持久化键值存储系统,它基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上,可以有效利用快速存储,支持IO绑定、内存和一次写负荷。过去一段韶光,RocksDB在社区非常盛行,Facebook剖析其缘故原由在于它能够对由于网络延迟等缘故原由造成的慢查询相应韶光起到肃清的浸染,RocksDB非常灵巧,完备可以针对各种新兴的硬件发展趋势进行定制。LinkedIn与Yahoo都是RocksDB的重度利用者。
人工智能硬件平台:Big Sur
近些年,人工智能和机器学习方向取得了长足的发展。据Kevin Lee透露,Facebook的AI软件已经能够阅读故事、回答干系场景的问题、玩游戏以及通过一些例子来学习非指定的内容。作为打算密集型的运用,AI软件的性能与数据集规模/硬件性能密切干系。尤其是硬件方面,高性能微处理器、存储器以及图形处理器(Graphics Processing Unit,GPU)的发展为AI算法的快速运行供应了坚实根本。为了进一步更好地做事大规模AI打算,Facebook推出了基于GPU的、用于演习神经网络的“Big Sur”硬件系统。
网络仿照测试工具:ATC
Augmented Traffic Control(ATC)能够利用Wi-Fi网络仿照2G、2.5G(Edge)、3G以及LTE 4G移动网络环境,测试工程师们可以快速在各种不同的仿照网络环境中切换,从而实现对智好手机和App在不同国家地区和运用环境下的性能表现进行测试。ATC是Facebook内部团队在2013年的一次Hackathon活动上开拓出来的工具,其事理实际是利用了Linux流量掌握系统,通过纯Python的网络库pyroute2调用netlink的API掌握,而开拓其的目的是为了确保更多的用户得到最好的运用体验。
开源数据库:HydraBase
HydraBase是HBase数据库的升级版。Facebook是HBase的重度用户,Facebook的HBase数据库系统存储着Facebook的很多关键业务数据,包括内部监控系统、搜索索 引、流数据剖析以及数据抓取等。HydraBase比较HBase稳定性和可用性更高,可以减少做事器宕机韶光。HydraBase能够让一个数据域分布在多个域做事器中,域做事器之间能相互备份,因此能够大大减少数据规复所用的韶光。Facebook声称HydraBase能将Facebook整年的宕机韶光缩减到不到5分钟。
Facebook已经将HydraBase捐赠给Apache,目前很多代码都已经被合并到HBase中。
关系型数据库:WebScaleSQL
WebScaleSQL是基于MySQL 5.6 社区版本改编的MySQL通用分支,基于GPL开源协议发布。WebScaleSQL目前已经做了很多性能改进事情,包括:客户端异步骤和、逻辑预读、查询限流、做事端线程池优化、InnoDB大页支持等等。WebScaleSQL上的功能都是很“Web Scale”和接地气的。比如线程池优化,WebScaleSQL基于Mariadb的线程池实现进行重写并优化,对读写行列步队进行分离,重新设计行列步队优先级策略,避免了饿去世征象。要知道线程饿去世在有些场景下是很严重的。尤其是在并发连接数每每很大的互联网运用里面。
代码审核对象Phabricator
代码审查方面,Facebook开源了可视化工具Phabricator。工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互谈论;卖力审查的工程师可以接管代码改变,可以提出疑问哀求原作者连续修正,可以提出自己不适宜以推出该代码审查,等等。只有代码被明确接管之后才能被工程师提交到做事器真个代码库,这一点集成到提交工具中逼迫实行。
C++HTTP框架:Proxygen
Proxygen是一款Facebook开源的支持SPDY 3.1的HTTP框架。其目的不是更换Apache,而是有能力创建一个专用的高性能Web做事器,使其可以嵌入到Facebook供应Web做事的现有运用中。Facebook从2011年开始构建一款代理做事器(Proxygen这个名字也是由此而来),在该项目演进并在生产环境中测试了数年之后,Facebook将其代码开源了。 Facebook内部做的基准测试表明,在一个Proxygen echo做事器上,每秒可以支撑多达304 197次基于SPDY 3.1的内存GET要求。
开源动画库:Pop
Pop是Facebook推出的一个可扩展的iOS 和OS X动画库,其新闻聚合阅读运用Paper背后的核心技能便是由Pop支持。除了增加基本的静态动画外,还支持Spring和衰变动态动画,可非常方便的构建现实的、基于物理的交互。Pop动画库的动画效果非常流畅,由于它利用了CADisplayLink来刷新画面(帧),一秒钟刷新帧数为60帧,靠近于游戏开拓引擎。Pop动画的自成体系,与系统的CoreAnimation有很大的差异,但利用上非常相似。
GitHub主页:https://github.com/facebook/pop
Star数量:15468
静态代码剖析工具:Infer
Infer是Facebook的开拓团队在代码提交内部评审时,用来实行增量剖析的一款静态剖析工具,在代码提交到代码库或者支配到用户的设备之前找出bug。由OCaml措辞编写的Infer目前能检测出空指针访问、资源透露以及内存透露,可对C、Java或Objective-C代码进行检测。Facebook利用Infer自动验证iOS和安卓上的移动运用的代码,bug报告的精确率达80%。Infer通过捕获编译命令,把要被编译的文件转换为可用于剖析潜在缺点的中间措辞格式。全体过程是增量进行的,意味着常日只有那些有修正过并提交编译的文件才会被Infer剖析。Infer还集成了大量的构建或编译工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。
操作系统监控工具:osquery
osquery是一款面向OSX和Linux的操作系统检测框架。它将操作系统暴露为一个高性能的关系型数据库,许可用户编写SQL查询查看操作系统数据。在osquery中,SQL表代表像下面这样的抽象观点:
正在运行的进程
已加载的内核模块
打开的网络连接
虽然osquery利用了非常底层的操作系统API,但它许可用户在Ubuntu、CentOS和Mac OS X上构建并利用它。osquery性能极高,内存占用小,支持用户在全体根本举动步伐上实行查询。
JavaScript静态类型检讨工具:Flow
Flow是Facebook出品的一个JavaScript代码的静态类型检讨工具,该工具采取开放源码的OCaml(Objective Caml)措辞开拓,。Flow能够帮助开拓职员查找出JavaScript代码中的类型缺点,从而提高开拓效率和代码质量。Flow已经能够捕获JavaScript代码中的常见问题,如静态类型转换不匹配、空指针引用等问题。同时,Flow还为JavaScript新增了类型语法,如类型别名。
GitHub主页:https://github.com/facebook/flow
Star数量:7510
Web运用架构:Flux
Facebook认为MVC无法知足他们的扩展需求,因此他们决定利用另一种模式:Flux。由于Facebook非常巨大的代码库和弘大的组织,以是MVC真的很快就变得非常繁芜,于是他们得出结论,认为MVC不适宜于大规模运用。
每次Facebook工程师努力增加一项新特性时,系统的繁芜性成级数增长,代码变得“薄弱和不可预测”。对付刚打仗某个代码库的开拓职员来说,这正成为一个严重的问题。Flux是一个Facebook开拓的、利用单向数据流实现的运用架构,用于 React。Flux运用有三个紧张的部分组成:调度程序、存储和视图(React 组件)。
GitHub主页:https://github.com/facebook/flux
Star数量:11616
Android调试工具:Stetho
Stetho是一个Android运用的调试工具。当Android运用集成Stetho时,开拓者可以通过访问Chrome,在Chrome Developer Tools中查看运用布局、网络要求、sqlite、preference等等,可视化统统运用操作(更主要的是不用root)。开拓者也可通过它的dumpapp工具供应的命令行接口来访问运用内部。
微信团队开源项目列表
从GitHub上可以看出,到目前为止,由腾讯微信团队发起的开源项目已经有6个,并且这个中大部分都是在2016年开源的,领域涉及移动、数据库、根本类库、框架。中国大公司的开源曾经给社区留下不好的印象,比如有人就这么说,大公司的开源,开源也就意味着结束。也有人说,大公司的开源大部分都是KPI项目,开源与业务不能相得益彰,以是根本无法持续投入。
开源不仅是一种态度,更是一种能力,微信希望通过开源打通内部团队和外部社区,一方面可以把微信的顶级技能输出给了社区,另一方面也可以把外部的精良的思想通报到内部团队。
C/C++协程库Libco
Libco是微信后台大规模利用的C/C++协程库,2013年至今稳定运行在微信后台的数万台机器上。Libco供应了完善的协程编程接口、常用的Socket族函数Hook等,使得业务可用同步编程模型快速迭代开拓。
早期微信后台由于业务需求繁芜多变、产品哀求快速迭代等需求,大部分模块都采取了半同步半异步模型。接入层为异步模型,业务逻辑层则是同步的多进程或多线程模型,业务逻辑的并发能力只有几十到几百。随着微信业务的增长,系统规模变得越来越弘大,每个模块很随意马虎受到后端做事/网络抖动的影响。基于这样的背景,微信开拓了Libco,实现了对业务逻辑非侵入的异步化改造。
GitHub地址:https://github.com/tencent/libco
Star数量:1043
生产级paxos类库PhxPaxos
PhxPaxos是微信后台团队自主研发的一套基于Paxos协议的多机状态拷贝类库。它以库函数的办法嵌入到开拓者的代码当中,使得一些单机状态做事可以扩展到多机器,从而得到强同等性的多副本以及自动容灾的特性。PhxPaxos在微信服务里面经由一系列的工程验证和大量的恶劣环境下的测试,在同等性的担保上极为健壮。
PhxPaxos的特性包括利用基于通报机制的纯异步工程架构、每次写盘利用fsync严格担保精确性、支持Checkpoint以及对PaxosLog的自动清理、利用点对点流式协议进行快速学习、支持跨机器的Checkpoint自动拉取、内置Master选举功能、自适应的过载保护等。
高可用、强同等的MySQL集群PhxSQL
PhxSQL是一个兼容MySQL、做事高可用、数据强同等的关系型数据库集群。PhxSQL以单Master多Slave办法支配,在集群内超过一半机器存活的情形下、即可供应做事,并且自身实现自动Master切换、担保数据同等性。PhxSQL不依赖于ZooKeeper等任何第三方做存活检测及选主。PhxSQL基于MySQL的一个分支Percona 5.6开拓,功能和实现与MySQL基本同等。
MySQL主备在主机上支持完全SQL、全局事务、以repeatable read和serializable级别的事务隔离,在金融、帐号等关键业务中有巨大的代价。但是MySQL传统主备方案也有其缺陷。最明显的便是主机故障后的自动换主和新旧主数据同等性,即所谓的同等性和可用性。为理解决这个问题,并同时完备兼容MySQL,微信在MySQL的根本上运用Paxos,设计和开拓了PhxSQL。
RPC框架PhxRPC
PhxRPC是微信后台团队推出的一个简洁小巧的RPC框架,编译天生的库只有450K(编译只依赖第三方库Protobuf)。PhxRPC的特性如下:
利用Protobuf作为IDL用于描述RPC接口以及通信数据构造。
基于Protobuf文件自动天生Client以及Server接口,用于Client的构建,以及Server的实现。
半同步半异步模式,采取独立多IO线程,通过Epoll管理要求的接入以及读写,事情线程采取固定线程池。IO线程与事情线程通过内存行列步队进行交互。
供应完善的过载保护,无需配置阈值,支持动态自适应谢绝要求。
供应大略单纯的Client/Server配置读入办法。
基于lambda函数实现并发访问Server,可以非常方便地实现Google提出的 Backup Requests 模式。
GitHub地址:https://github.com/tencent-wechat/phxrpc
Star数量:467
终端跨平台网络组件:Mars
Mars是微信官方的终端根本组件,是一个结合移动运用所设计的基于Socket层的办理方案,在网络调优方面有更好的可控性,采取C++开拓。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。
在微信中,任何网络实现的bug都可能导致重大事件。例如微信的容灾实现,如果由于版本的实现差异,导致某些版本上无法进行容灾规复,将会严重的影响用户体验。微信研发了统一的跨平台的网络根本库Mars来知足发展的须要,一方面,根本组件可以提高研发效率,其余一方面,也可以提高系统的稳健性。
在设计上,Mars以跨平台、跨业务为条件,屈服高可用,高性能,负载均衡的设计原则。以网络的可用性为例,移动互联网有着丢包率高、带宽受限、延迟颠簸、第三方影响等特点,使得网络的可用性,尤其是弱网络下的可用性变得尤为关键。Mars 的STN组件作为基于 socket 层的网络办理方案,在很多细节设计上会充分考虑弱网络下的可用性。
GitHub地址:https://github.com/Tencent/mars
Star数量:5895
热补丁技能Tinker
Tinker是微信官方的Android热补丁办理方案,它支持动态下发代码、So库以及资源,让运用能够在不须要重新安装的情形下实现更新。
当前市情的热补丁方案有很多,个中比较出名的有阿里的AndFix、美团的Robust以及QZone的超级补丁方案,但它们都存在无法办理的问题,以是微信研发了自己的办理方案。总的来说,AndFix作为native办理方案,首先面临的是稳定性与兼容性问题,更主要的是它无法实现类更换,它是须要大量额外的开拓本钱的。而Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案。Qzone方案可以做到发布产品功能,但是它紧张问题是插桩带来Dalvik的性能问题,以及为理解决Art下内存地址问题而导致补丁包连忙增大的。
Tinker的详细设计目标如下:
开拓透明:开拓者无需关心是否在补丁版本,他可以随意修正,不由框架限定。
性能无影响:补丁框架不能对运用带来性能损耗。
完全支持:支持代码,So 库以及资源的修复,可以发布功能。
补丁大小较小: 补丁大小该当只管即便的小,提高升级率。
稳定,兼容性好:担保微信的数亿用户的利用,只管即便减少反射。
GitHub地址:https://github.com/Tencent/tinker
Star数量:6707
Twitter开源软件项目列表
从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构、大数据、异步网络传输(客户端、做事端)、Web、工具等。Twitter可以称为构建于开源项目之上,该公司开源卖力人Chris Aniszczyk表示,如果没有开源软件,Twitter将不会存在,用户在移动端和PC端发送和吸收的每一条推文都会须要开源软件。
Twitter从开源社区中得到了大量的好处,而Twitter也在不断地回馈社区,开源了大量根本举动步伐和工具,使得其他企业和开拓者不必重新发明轮子,在这些开源项目的根本上更加快速地实现自己所需。可以看到,Twitter在开源社区的贡献是显著的,乃至其贡献的某些开源项目在一定程度上比Twitter本身带来的影响力更大。
下面是InfoQ编辑整理的Twitter现有的比较生动的开源项目列表,欢迎互换谈论。
jQuery插件,快速、全功能的自动完成库:Typeahead.js
Typeahead.js是Twitter的一个jQuery插件,支持远程和本地的数据集。比较有特色的地方在于,你可以将数据集利用本地存储(local storage)来保存在本地,有效的提高用户体验。同时也拥有很多远程数据集的处理选项,例如要求频率,最大的并发要求数,等等。它的紧张特性有:
支持数据本地保存,客户端加载,优化加载速率;
支持多措辞,并且支持阿拉伯文;
支持Hogan.js模板引擎整合;
支持多数据集拼装;
支持本地和远程的数据集。
GitHub主页:https://github.com/twitter/typeahead.js
Star数量:12700
JavaScript库:Twemoji
Twemoji是Twitter于2014年开源的完全的Emoji表情图片,Twemoji包含872个表情,兼容最新的Unicode 7.0。Emoji,来自日本的小巧符号,通过图像表达感情,已经征服了移动互联网的信息天下。现在,你可以在虚拟天下中随处利用它们。开拓者可以去GitHub下载完全的表情库,并把这些表情加入到自己的运用或网页中。
JavaScript模板引擎:Hogan.js
Hogan.js是Twitter团队所制作的一个针对mustache模板的语法解析器。Hogan.js不依赖其他任何库或框架,同时担保了高效率的模板解析,而其体积却仅有2.5K。用它作为你的一部分资产打包编译模板提前或将它包括在你的浏览器来处理动态模板。
RPC框架:Finagle
Finagle是一个许可开拓者利用Java、Scala或其他JVM措辞来构建异步RPC做事器和客户真个库,紧张用于Twitter的后端做事。Finagle是Twitter基于Netty开拓的支持容错的、协议无关的RPC框架,该框架支撑了Twitter的核心做事。
Twitter面向做事的架构是由一个弘大的Ruby on Rails运用转化而来的。为了适应这种架构的变革,须要有一个高性能的、支持容错的、协议无关且异步的RPC框架。在面向做事的架构之中,做事会将大多数的韶光花费在等待上游做事的相应上,因此利用异步的库能够让做事并发地处理要求,从而充分发挥硬件的潜能。Finagle构建在Netty之上,并不是直接在原生NIO之上构建的,这是由于Netty已经办理了许多Twitter所碰着的问题并供应了干净整洁的API。
自动化测试工具:Diffy
Diffy是一个开源的自动化测试工具,它能够自动检测基于Apache Thrift或者基于HTTP的做事。利用Diffy,只须要进行大略的配置,之后不须要再编写测试代码。
Diffy紧张基于稳定版本和它的副本的输出,对候选版本的输出进行比较,以检讨候选版本是否精确。因此,Diffy首先假设候选版本该当和稳定版本有“相似”的输出。即不论候选版本和稳定版本系统模块是否相同,他们的终极输出该当是“相似”的。这里一贯利用“相似”,而不是利用相同,是由于相同要求可能会有一些Diffy不须要关心的滋扰,比如:
相应中包含做事器天生的韶光戳;
代码中利用了随机数;
系统做事间有条件竞争。
GitHub主页:https://github.com/twitter/diffy
Star数量:2544
Scala库:Scalding
Scalding是一个Scala库,简化了Hadoop MapReduce作业开拓,基于Cascading构建。Scalding跟Pig类似,但供应更紧密的Scala集成。Scalding是用于Cascading的Scala API。Cascading是一个构建于Hadoop上的API,用来创建繁芜和容错数据处理事情流,它抽象了集群拓扑构造和配置,许可开拓者快速开拓繁芜分布式的运用,而不用考虑背后的MapReduce。
数据实时剖析平台:Heron
2016年5月25日,Twitter正式宣告Heron开源。Heron的基本事理和方法:实时流系统是在大规模数据剖析的根本上实现系统性的剖析。其余,它还须要:每分钟处理数十亿事宜的能力、有秒级延迟,和行为可预见;在故障时担保数据的准确性,在达到流量峰值时是弹性的,并且易于调试和在共享的根本举动步伐上实现大略支配。
为了知足这些需求,Twitter谈论出了几种方案,包括:扩展Storm、利用其他的开源系统、开拓一个全新的平台。由于有几个需求是哀求改变 Storm的核心架构,以是对它进行扩展须要一个很长的开拓周期。其他的开源流处理框架并不能完美知足Twitter对付规模、吞吐量和延迟的需求。而且,这些系统也不能兼容Storm API——适应一个新的API须要重写几个topologies和修正高等的abstractions,这会导致一个很长的迁移过程。以是,Twitter决定建立 一个新的系统来知足以上提到需求和兼容Storm API。
在Twitter,Heron作为紧张的流媒体系统,运行数以百万计的开拓和生产topologies。由于Heron可高效利用资源,在迁移Twitter所有的topologies后,整体硬件减少了3倍,导致Twitter的根本设置效率有了显著的提升。
GitHub主页:https://github.com/twitter/heron
Star数量:1873
Web安全开拓工具:SecureHeaders
SecureHeaders是Twitter送给Web开拓者的一份大礼,作为一款Web安全开拓工具,Secureheaders能够自动履行安全干系的header规则,包括内容安全政策(CSP),防止XSS、HSTS等攻击,防止火绵羊(Firesheep)攻击以及XFO点击挟制等。
代理做事器:Twemproxy
Twemproxy是一个快速的单线程代理程序,支持Memcached ASCII协议和更新的Redis协议。它全部用C写成,利用Apache 2.0 License授权。Twemproxy的强大之处在于可以通过配置的办法让它禁用掉失落败的结点,同时还能在一段韶光后进行重试,抑或利用指定的键->做事器映射。这意味着在将Redis用作数据存储时,它可以对Redis数据集进行分片(禁用掉结点驱逐);在将Redis用作缓存时,它可以启用结点驱逐以实现大略的高可用性。它的特性是:
通过代理的办法减少缓存做事器的连接数;
自动在多台缓存做事器间共享数据;
通过不同的策略与散列函数支持同等性散列;
通过配置的办法禁用失落败的结点;
运行在多个实例上,客户端可以连接到首个可用的代理做事器;
支持要求的流式与批处理,因而能够降落来回的花费;
速率快;
轻量级。
GitHub主页:https://github.com/twitter/twemproxy
Star数量:5434
微软开源软件列表
提起微软公司,不少人第一反应是老牌巨子专注于私有化软件盈利模式,这大抵是源于微软前CEO Steve Ballmer曾经流传宣传“Linux是颗毒瘤(Linux is a cancer)”,并曾经偏执地认为所有开源软件都不值一提。但是,这是2001年的事情了,是时候更新大家对微软的刻板印象。
2014年10月,出任微软首席实行官的萨提亚∙ 纳德拉,第一次公开宣告“微软爱Linux”。同年,微软首次发布.NET Core并将其开源;众所周知,微软核心的技能栈长期以来基于.NET和Windows绑定。在重写标准库之后,2016年6月.NET Core 1.0实现跨平台(Windows、Linux和Mac),这意味着开拓者可以利用Windows开拓而Linux支配。
2016年3月,Windows原生支持 Ubuntu Linux Bash, 这意味着Windows操作系统级别的开放,Win10 可以当作一台Ubuntu开拓机来利用。此外,微软称Azure全面支持所有开源技能栈,并且从IaaS(VM),PaaS和SaaS(CRM、PowerBI、Office365)全面支持用户的灵巧选择。
InfoQ对数个较受社区欢迎的项目进行了整理如下:
Visual Studio Code:跨平台源代码编辑器
Visual Studio Code是微软于2015年正式发布的项目,可以运行在Mac OS X、Windows和Linux之上,面向Web和云运用的一款跨平台源代码编辑器。
虽然它的名字与Visual Studio附近,但前者是代码编辑器,后者是集成开拓环境(IDE)并且目前只运行在Windows上。
Star数量:24.3k;Fork数量:3.3k
GitHub主页:https://github.com/Microsoft/vscode
TypeScript:开源编程措辞,JavaScript的超集
TypeScript是JavaScript强类型的超集,可以编译成纯JavaScript。由微软开拓的自由和开源的编程措辞,可以运行在各种浏览器和操作系统之上。
Star数量:19.8k ;Fork数量:2.8k
GitHub主页:https://github.com/Microsoft/TypeScript/
CNTK: 深度学习开源工具包
CNTK全称为The Microsoft Cognitive Toolkit, 将神经网络描述为打算机可处理的有向图,有向图的叶节点表示输入值或网络参数,其他节点表示输入对应的矩阵运算。CNTK便于实现并且也结合了很多盛行打算模型如前馈DNN,卷积网(CNN)和复现网络(RNN / LSTM)。它可以跨多个GPU和做事器实现随机梯度低落(SGD,偏差反向传播)学习与自动微分和并行化。
可以在Python或者C++措辞中犹如库版运用,也可以利用其自有的描述措辞BrainScript单机化利用。CNTK可适用于64位的Linux和Window,于2015年4月开源。
下图比较CNTK的处理速率(每秒处理的帧数)与四个其他众所周知的工具包的处理速率。 配置利用完备连接的4层神经网络(拜会微软的基准脚本)和有效的迷你批量大小(8192)。在相同硬件上得到的结果。
Star数量:9.9k;Fork数量:2.4k
GitHub地址:https://github.com/Microsoft/CNTK
Donnet:采取系统虚拟机运行的编程平台
.NET是微软研发的XML Web services平台,此框架支持多种措辞(如C#、F#、VB.Net、C++、Python等)的开拓。.NET框架历经亟待,终极于2014年开源。
C#常日被认为是微软专属,是.NET框架上最常用的编程措辞之一, 其著名竞争对手是Java。
Star数量:7.8k ;Fork数量:1.2k
GitHub主页:https://github.com/Microsoft/dotnet/network
PowerShell :为任何系统供应Windows的命令行工具
一个跨平台(Windows、Linux和macOS)自动化和配置工具/框架,可与现有工具完美合营,并优化用于处理构造化数据(例如JSON,CSV,XML等)、REST API 和工具模型。 它包括命令行shell,干系的脚本措辞和用于处理cmdlet的框架。
Star数量:6.4k;Fork数量:800
GitHub地址:https://github.com/PowerShell/PowerShell
MSOpenTech/redis: 在Windows利用Redis
官方只支持64位,可自行构建32位版。
该开源项目,在2.8版本中,替代UNIX forkAPI中的内存映射文件仿照写时复制行为。 版本3.0类似,为了便于系统文件分页,删除了内存映射文件,在管理堆碎片方面进行了改进。
Redis对文件描述符的值做了一些假设,微软构建了一个虚拟文件描述符映射层。
Star数量:5.8k;Fork数量:8.7k
GitHub地址:https://github.com/MSOpenTech/redis
WinObjc:Windows下的Objective-C
为Visual Studio供应了一个Objective-C开拓环境并支持iOS API。通过重新利用Objective-C代码和iOS API,配以Windows自有Cortana(中文名:微软小娜,微软发布的环球第一款个人智能助理)和关照等功能,用户可以创建通用Windows平台(UWP)运用程序并运行在Windows设备上。
ASP.NET之MVC核:模型(model)-视图(view)-掌握器(controller)框架
旨在TDD友好,用于创建符合最新Web标准的繁芜运用程序、构建动态网站,可以在IIS中托管或自我托管。
Star数量:4.4k;Fork数量:1.6k
GitHub地址:https://github.com/aspnet/Mvc
BashOnWindows:办理Ubuntu Bash在Windows的利用问题
微软在Build 2016大会上宣告了一条振奋民气的,大家惊呼Ubuntu on Windows。Bash on Windows 为开拓者们供应了Bash shell、Linux类似环境,在不须要Linux虚拟机的情形下,大部分的Linux命令行工具基本上可以不经修正地运行在Windows上。
Star数量:3.7k;Fork数量:129
GitHub地址:https://github.com/Microsoft/BashOnWindows
Azure干系:文档、SDK和代码示例
微软支持开拓者们将各种开源软件工具和技能带入Azure。Azure 运用市场支持很多Linux 分发,包括 Ubuntu、Debian 和 SUSE;也支持借助支持 Node.js、PHP、Python 和 Java 的 Azure 运用做事,天生 Web 和移动运用。
在GitHub上Azure干系的存储库有1700+个。
Star数量(共计):149k;Fork数量(共计):291k
地址:https://azure.microsoft.com/zh-cn/overview/open-source/
今日荐文
点击下方图片即可阅读
一名合格的架构师该当具备哪些特质?