开发工具|阿里、腾讯、微软开源软件汇总

关注公众号【贝西奇谈】,回复【面试突击】
?开发工具|阿里、腾讯、微软开源软件汇总
文章图片

阿里巴巴重点开源软件列表 阿里巴巴是国内最大的互联网公司之一,也是国内最大的云计算公司。由于其天生的平台基因,不光进入云计算市场的时间和目前的市场份额在国内遥遥领先甚至全球范围内相比也不输国外巨头,根据最新第三方市场报告,阿里云目前已占中国云计算市场份额50%。在开源软件领域,阿里巴巴把自己多项核心技术成果以开源软件的形式提供了出来,近年来还频繁参与国际开源社区的发展。我们甚至惊喜的发现阿里巴巴近期开始了对因Google退场而陷入困境的NTPD项目/NTF基金会的支持。

  • 开源移动UI层框架 Weex
    开源的移动端高性能动态化,跨平台UI框架。 Weex的出现解决了困扰移动开发领域长期以来的一份设计,多次重复开发的问题,使得开发者能够通过一次代码编写即可为Androdi,IOS,H5生成美观高性能的界面。
    由于Weex已经捐赠到了Apache基金会孵化,所以代码主仓库已经迁移到了Apache组织下。
    Github主仓库:https://github.com/apache/incubator-weex
Github原仓库:https://github.com/alibaba/weex
Star数: 14017
  • 开源React 组件库Ant DesignWeex
阿里在React技术栈基础上开源的全功能通用组件库,沉淀了大量交互设计最佳实践。 如果你以React的方式开发你的前端应用Ant Design不容错过。Ant Design最近还提供了移动版Ant Design Mobile ,同样风格的组件库现在可平顺的过度到移动Web环境。
Github主仓库: https://github.com/ant-design/ant-design
Star数: 12898
  • 开源JSON解析和生成器 FastJSON
FastJSON是一个超高性能的JSON解析和生成器,在对外零依赖的情况下实现了对多种常用数据结构到JSON的解析和生成。评测数据长期以来一直在同类工具间遥遥领先。对JSON的处理是众多服务端程序最频繁执行的任务,启用FastJSON或许能让你的后端应用获得不小的性能提升。
Github主仓库: https://github.com/alibaba/fastjson
Star数: 8851
  • 开源分布式开发框架 Dubbo
高性能服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入,可以和 Spring框架无缝集成。 是阿里大规模分布式系统的秘密武器。
Github主仓库: https://github.com/alibaba/dubbo
Star数: 8390
  • 开源Android平台容器化开发框架 Atlas
随着移动应用规模的增长,大型移动应用,特别是平台级应用往往由团队协同开发。如何实现不同功能模块的组件化、解耦化,同时还具备动态性是Android应用开发的一个核心挑战。Atlas在遵循安卓系统设计规范的情况下,通过反射和轻量的hook方案来实现了这一目标,并将大量的工作放到了编译期,提高了稳定性。
Github主仓库: https://github.com/alibaba/atlas
Star数: 4203
  • 开源消息队列 RocketMQ
企业级互联网架构的核心产品,基于高可用分布式集群技术,搭建了包括发布订阅、消息轨迹、资源统计、定时(延时)、监控报警等一套完整的消息队列服务。
Github主仓库: https://github.com/apache/incubator-rocketmq
Github原仓库: https://github.com/alibaba/RocketMQ
Star数: 3700
  • 开源Android构建工具 Freeline
Freeline是一个Android平台上的构建工具,构建速度是其最大特点。它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。
Github主仓库: https://github.com/alibaba/freeline
Star数: 3590
  • 开源 MySQL数据库分枝 AliSQL
AliSQL 是基于广泛使用的数据库产品 MySQL 的一个开源分支,在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。
Github主仓库: https://github.com/alibaba/AliSQL
Star数: 1915
微软重点开源软件列表 微软,老牌软件巨人。历史上长时期被看成开源世界最大的敌对势力, 微软也曾经把开源旗帜项目Linux称呼为“毒瘤”。时光飞逝,转眼十多年过去,原本一出帝国和起义军对立的经典故事在Web和移动互联网两波技术大潮的洗礼下如今已经面目全非。 Linux成了世界上使用最广泛的操作系统,开源技术成了技术发展的主流。 可帝国也没有陨落,传统强项企业服务成功往云端转移,凭借Azure业务又在公有云计算领域获得高速增长。 曾经口中的“毒瘤”,如今成了爱的对象,更是成了核心产品Windows10的组成部分。 如此可见微软对开源的态度发生了多大的变化。
  • 开源IDE Visual Studio Code
集成开发环境(IDE)是微软的一个传统强项,虽然和Windows专属版本比起来仍然有一些不足。 但可以支持从Linux到Mac,Windows的Visual Studio Code仍然由于其轻量可扩展的特性获得了社区的追捧。
Github主仓库: https://github.com/Microsoft/vscode
Star数: 25863
  • 开源JavaScript扩展 TypeScript
微软的开源JavaScript扩展,为JavaScript添加了类型支持。如果你在开发必须使用JavaScript的Web应用而又觉得类型系统不可获取,TypeScript非常值得尝试。
Github主仓库: https://github.com/Microsoft/TypeScript
Star数: 20849
关注公众号【贝西奇谈】,回复【面试突击】

?开发工具|阿里、腾讯、微软开源软件汇总
文章图片

  • .Net 开源核心类库,运行环境和编译器
微软的.Net开发环境和C#语言在编程语言领域一直被认为是功能最为强大和全面的开发平台之一,但长期以来一直只能工作在Windows环境下,极大限制了.Net 在更广大的领域施展身手。随着近年来微软的转型,微软终于下决心对.Net进行了全面的开源。如今.Net的核心类库,运行环境和编译器都已经开源,如今整套.Net环境都可以在Linux,Mac下运行。不知这迟来的开源能否挽回开发者的心呢?
Github主仓库: https://github.com/Microsoft/dotnet
Star数: 8037
  • 开源JavaScript解释器 ChakraCore
微软开源的JavaScript执行环境。自从Chrome横空出时,微软的IE就一直被看成是个低效,笨拙的浏览器,这让微软自己都无法忍受。随着Windows10一起面世的Edge浏览器是微软的洗心革面之作,运行效率得到了极大的提升,多项测试中执行效率甚至超过了Chrome。 ChakaraCore,作为Edge浏览器的JavaScript解释器,是其中的秘密武器。在ChkraCore开源后,原本就火热的JavaScript后端开发领域或许会迎来新的推动力。
Github主仓库: https://github.com/Microsoft/ChakraCore
Star数: 6114
  • 开源Linux环境 BashOnWindows
以过去微软的视角来看最不可能出现的开源软件。 BashOnWindows 不仅仅能让Bash脚本在Windows上像在Linux环境下一样运行,它甚至带有一个完整的Ubuntu环境,绝大多数原来只能在Linux下运行的开源程序现在可以通过 BashOnWindows 在Windows下运行。
Github主仓库: https://github.com/Microsoft/BashOnWindows
Star数: 3915
微信团队的6个开源项目
  • 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选举功能、自适应的过载保护等。
    GitHub地址:https://github.com/tencent-wechat/phxpaxos
Star数量:970
  • 高可用、强一致的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。
    GitHub地址:https://github.com/tencent-wechat/phxsql
Star数量:1485
  • RPC框架PhxRPCPhxSQL
    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
??????关注公众号【贝西奇谈】,回复【面试突击】
?开发工具|阿里、腾讯、微软开源软件汇总
文章图片

    推荐阅读