关注公众号【贝西奇谈】,回复【面试突击】
?
文章图片
阿里巴巴重点开源软件列表 阿里巴巴是国内最大的互联网公司之一,也是国内最大的云计算公司。由于其天生的平台基因,不光进入云计算市场的时间和目前的市场份额在国内遥遥领先甚至全球范围内相比也不输国外巨头,根据最新第三方市场报告,阿里云目前已占中国云计算市场份额50%。在开源软件领域,阿里巴巴把自己多项核心技术成果以开源软件的形式提供了出来,近年来还频繁参与国际开源社区的发展。我们甚至惊喜的发现阿里巴巴近期开始了对因Google退场而陷入困境的NTPD项目/NTF基金会的支持。
- 开源移动UI层框架 Weex
开源的移动端高性能动态化,跨平台UI框架。 Weex的出现解决了困扰移动开发领域长期以来的一份设计,多次重复开发的问题,使得开发者能够通过一次代码编写即可为Androdi,IOS,H5生成美观高性能的界面。
由于Weex已经捐赠到了Apache基金会孵化,所以代码主仓库已经迁移到了Apache组织下。
Github主仓库:https://github.com/apache/incubator-weex
Star数: 14017
- 开源React 组件库Ant DesignWeex
Github主仓库: https://github.com/ant-design/ant-design
Star数: 12898
- 开源JSON解析和生成器 FastJSON
Github主仓库: https://github.com/alibaba/fastjson
Star数: 8851
- 开源分布式开发框架 Dubbo
Github主仓库: https://github.com/alibaba/dubbo
Star数: 8390
- 开源Android平台容器化开发框架 Atlas
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
Github主仓库: https://github.com/alibaba/freeline
Star数: 3590
- 开源 MySQL数据库分枝 AliSQL
Github主仓库: https://github.com/alibaba/AliSQL
Star数: 1915
微软重点开源软件列表 微软,老牌软件巨人。历史上长时期被看成开源世界最大的敌对势力, 微软也曾经把开源旗帜项目Linux称呼为“毒瘤”。时光飞逝,转眼十多年过去,原本一出帝国和起义军对立的经典故事在Web和移动互联网两波技术大潮的洗礼下如今已经面目全非。 Linux成了世界上使用最广泛的操作系统,开源技术成了技术发展的主流。 可帝国也没有陨落,传统强项企业服务成功往云端转移,凭借Azure业务又在公有云计算领域获得高速增长。 曾经口中的“毒瘤”,如今成了爱的对象,更是成了核心产品Windows10的组成部分。 如此可见微软对开源的态度发生了多大的变化。
- 开源IDE Visual Studio Code
Github主仓库: https://github.com/Microsoft/vscode
Star数: 25863
- 开源JavaScript扩展 TypeScript
Github主仓库: https://github.com/Microsoft/TypeScript
Star数: 20849
关注公众号【贝西奇谈】,回复【面试突击】
?
文章图片
- .Net 开源核心类库,运行环境和编译器
Github主仓库: https://github.com/Microsoft/dotnet
Star数: 8037
- 开源JavaScript解释器 ChakraCore
Github主仓库: https://github.com/Microsoft/ChakraCore
Star数: 6114
- 开源Linux环境 BashOnWindows
Github主仓库: https://github.com/Microsoft/BashOnWindows
Star数: 3915
微信团队的6个开源项目
- C/C++协程库Libco
Libco是微信后台大规模使用的C/C++协程库,2013年至今稳定运行在微信后台的数万台机器上。Libco提供了完善的协程编程接口、常用的Socket族函数Hook等,使得业务可用同步编程模型快速迭代开发。
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
- 高可用、强一致的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
- 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
- 终端跨平台网络组件:Mars
Mars是微信官方的终端基础组件,是一个结合移动应用所设计的基于Socket层的解决方案,在网络调优方面有更好的可控性,采用C++开发。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。
在微信中,任何网络实现的bug都可能导致重大事故。例如微信的容灾实现,如果因为版本的实现差异,导致某些版本上无法进行容灾恢复,将会严重的影响用户体验。微信研发了统一的跨平台的网络基础库Mars来满足发展的需要,一方面,基础组件可以提高研发效率,另外一方面,也可以提高系统的稳健性。
在设计上,Mars以跨平台、跨业务为前提,遵从高可用,高性能,负载均衡的设计原则。以网络的可用性为例,移动互联网有着丢包率高、带宽受限、延迟波动、第三方影响等特点,使得网络的可用性,尤其是弱网络下的可用性变得尤为关键。Mars 的STN组件作为基于 socket 层的网络解决方案,在很多细节设计上会充分考虑弱网络下的可用性。
GitHub地址:https://github.com/Tencent/mars
- 热补丁技术Tinker
Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。
当前市面的热补丁方案有很多,其中比较出名的有阿里的AndFix、美团的Robust以及QZone的超级补丁方案,但它们都存在无法解决的问题,所以微信研发了自己的解决方案。总的来说,AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的。而Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案。Qzone方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。
Tinker的具体设计目标如下:
开发透明:开发者无需关心是否在补丁版本,他可以随意修改,不由框架限制。
性能无影响:补丁框架不能对应用带来性能损耗。
完整支持:支持代码,So 库以及资源的修复,可以发布功能。
补丁大小较小: 补丁大小应该尽量的小,提高升级率。
稳定,兼容性好:保证微信的数亿用户的使用,尽量减少反射。
GitHub地址:https://github.com/Tencent/tinker
??????关注公众号【贝西奇谈】,回复【面试突击】
?
文章图片
推荐阅读
- java|java学习--基础知识第六天-- Eclipse断点调试、基础语法的练习
- 下载Spring4.1.x源码并用IntelliJ IDEA打开
- 用IntelliJ IDEA ULTIMATE版看Java类图
- intellij-idea|MyBatis-Plus(四.Page分页查询)
- 在Intellij IDEA搭建Scala开发环境,以及使用Intellij IDEA开发Scala程序
- IntelliJIDEA的常用设置的最详细图解说明(图文并茂)
- 后端|Kubernetes之部署calico网络
- Intellij官方中文语言包,它来了
- IntelliJ Idea 常用快捷键列表