前面的一篇文章《微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)》列举了国外8个互联网公司(包括微软、Google、亚马逊、IBM、Facebook、Twitter、eBay、VMware)的开源软件项目,今天我们来盘点一下国内几个体量较大的互联网大厂(腾讯、百度、阿里、美团点评、华为)都有哪些开源软件。快点Mark起来并转发给需要的人吧。
百度开源软件
1、ECharts:JavaScript 图表库
ECharts是一款由百度前端技术部开发的,基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
提供大量常用的数据可视化图表,底层基于ZRender(一个全新的轻量级canvas类库),创建了坐标系,图例,提示,工具箱等基础组件,并在此上构建出折线图(区域图)、柱状图(条状图)、散点图(气泡图)、饼图(环形图)、K线图、地图、力导向布局图以及和弦图,同时支持任意维度的堆积和多图表混合展现。
详情:https://www.oschina.net/p/echarts
GitHub地址:
https://github.com/baidu/echarts
2、ApolloAuto:开源自动驾驶平台
Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。
Apollo 是百度重点打造的 AI 开放平台之一,计划主要包含 4 个技术模块:定位/感知模块、车辆规划与运营(AI+大数据,精准控制车辆,适合不同路况)、软件运营框架(支持英特尔、英伟达等多种芯片)。
详情:https://www.oschina.net/p/apolloauto
3、BFS-Baidu:百度文件系统
百度的核心数据库Tera将数据持久化在分布式文件系统上,分布式文件系统的性能、可用性和扩展性对整个上层搜索业务的稳定性与效果有着至关重要的影响。现有的分布式文件系统(如HDFS等)无法满足低延迟、高可用、跨地域扩展等方面的需求,所以我们从百度搜索的业务特点出发,开发了自己的分布式文件系统BFS。
系统主要由NameServer、MetaServer、ChunkServer、SDK、bfs_mount和bfs_client等几个模块构成。
其中NameServer是中心控制模块,采用集群化部署,负责目录树的管理;ChunkServer是数据节点负责提供文件块的读写服务;SDK以静态库的形式提供了用户使用的API;bfs_mount通过libfuse,将bfs挂载到本地,作为本地文件系统访问;bfs_client是一个二进制的管理工具。
详情:https://www.oschina.net/p/baidu-file-system
4、Kity Minder:在线脑图编辑器
KityMinder 是百度FEX团队的f-cube小组(原UEditor小组)的又一力作。作为一款在线的脑图编辑工具,它有着很多Native编辑工具的交互体验。KM与UE有着一样的宗旨,就是注重最终用户的使用体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。此外,借由独创的 “云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。
详情:https://www.oschina.net/p/kityminder
5、Disconf:分布式配置管理平台
专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。包括 百度、滴滴打车、银联、网易、拉勾网 等知名互联网公司正在使用!
详情:https://www.oschina.net/p/disconf
6、Tera:分布式表格系统
Tera 是一个高性能、可伸缩的数据库系统,被设计用来管理搜索引擎万亿量级的超链与网页信息。为实现数据的实时分析与高效访问,我们使用按行键、列名和时间戳全局排序的三维数据模型组织数据,使用多级Cache系统,充分利用新一代服务器硬件大内存、SSD盘和万兆网卡的性能优势,做到模型灵活的同时,实现了高吞吐与水平扩展。
详情:https://www.oschina.net/p/tera
Gitbub地址:
https://github.com/baidu/tera
7、Cafe:Android自动化测试框架
Cafe 测试框架是一款来自百度QA部门的具有开创性意义的Android平台的自动化测试框架,框架覆盖了Android自动化测试的各种需求。框架致力于实现跨进程测试、快速测试、深度测试,解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题。
详情:https://www.oschina.net/p/cafe
8、Ueditor:富文本编辑器
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。
详情:https://www.oschina.net/p/ueditor
Gitbub地址:
https://github.com/baidu/ueditor
9、Mapv:地图可视化工具库
Mapv 是一款基于百度地图的大数据可视化开源库,可以用来展示大量的点、线、面的数据,每种数据也有不同的展示类型,如直接打点、热力图、网格、聚合等方式展示数据。
详情:https://www.oschina.net/p/mapv
Gitbub地址:
https://github.com/baidu/mapv
10、ECharts-X:全新 3D 可视化库
ECharts-X是 ECharts 团队推出的全新 3D 可视化库,它是基于 ECharts 的扩展,底层深度整合了 WebGL 库QTEK和 Canvas2D 库ZRender。
详情:https://www.oschina.net/p/echarts-x
11、MuPlayer:百度音乐播放内核
MuPlayer 是一款跨平台、轻量级的音频播放解决方案,是百度@音乐前端团队开发维护的浏览端音频播放内核,它基于HTML5 Audio及Flash音频技术,已在百度音乐多个线上产品线中应用,具备很强的灵活性和稳定性。
详情:https://www.oschina.net/p/muplayer
12、WebUploader:文件上传组件
WebUploader 是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,延用原来的FLASH运行时,兼容IE6+,Andorid 4+,IOS 6+。两套运行时,同样的调用方式,可供用户任意选用。
详情:https://www.oschina.net/p/webuploader
百度更多74个开源项目详情可查看:https://www.oschina.net/project/baidu
阿里巴巴开源软件
1、Weex:开源移动UI层框架
开源的移动端高性能动态化,跨平台UI框架。 Weex的出现解决了困扰移动开发领域长期以来的一份设计,多次重复开发的问题,使得开发者能够通过一次代码编写即可为Androdi,IOS,H5生成美观高性能的界面。
由于Weex已经捐赠到了Apache基金会孵化,所以代码主仓库已经迁移到了Apache组织下。
Github主仓库:
https://github.com/apache/incubator-weex
Github原仓库:
https://github.com/alibaba/weex
2、Ant Design:开源React 组件库
阿里在React技术栈基础上开源的全功能通用组件库,沉淀了大量交互设计最佳实践。 如果你以React的方式开发你的前端应用Ant Design不容错过。Ant Design最近还提供了移动版Ant Design Mobile ,同样风格的组件库现在可平顺的过度到移动Web环境。
Github主仓库:
https://github.com/ant-design/ant-design
3、FastJSON:开源JSON解析和生成器
FastJSON是一个超高性能的JSON解析和生成器,在对外零依赖的情况下实现了对多种常用数据结构到JSON的解析和生成。评测数据长期以来一直在同类工具间遥遥领先。对JSON的处理是众多服务端程序最频繁执行的任务,启用FastJSON或许能让你的后端应用获得不小的性能提升。
Github主仓库:
https://github.com/alibaba/fastjson
4、Dubbo:开源分布式开发框架
高性能服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入,可以和 Spring框架无缝集成。 是阿里大规模分布式系统的秘密武器。
Github主仓库:
https://github.com/alibaba/dubbo
5、Atlas:开源Android平台容器化开发框架
随着移动应用规模的增长,大型移动应用,特别是平台级应用往往由团队协同开发。如何实现不同功能模块的组件化、解耦化,同时还具备动态性是Android应用开发的一个核心挑战。Atlas在遵循安卓系统设计规范的情况下,通过反射和轻量的hook方案来实现了这一目标,并将大量的工作放到了编译期,提高了稳定性。
Github主仓库:
https://github.com/alibaba/atlas
6、RocketMQ:开源消息队列
企业级互联网架构的核心产品,基于高可用分布式集群技术,搭建了包括发布订阅、消息轨迹、资源统计、定时(延时)、监控报警等一套完整的消息队列服务。
Github主仓库:
https://github.com/apache/incubator-rocketmq
Github原仓库:
https://github.com/alibaba/RocketMQ
7、Freeline:开源Android构建工具
Freeline是一个Android平台上的构建工具,构建速度是其最大特点。它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。
Github主仓库:
https://github.com/alibaba/freeline
8、AliSQL:开源 MySQL数据库分枝
AliSQL 是基于广泛使用的数据库产品 MySQL 的一个开源分支,在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。
Github主仓库:
https://github.com/alibaba/AliSQL
腾讯开源软件
1、Blade:现代构建系统
期望的目标是强大而好用,把程序员从构建的繁琐中解放出来。Blade 主要定位于 Linux 下的大型 C++ 项目,密切配合研发流程,比如单元测试,持续集成,覆盖率统计等。
在腾讯公司“台风”云计算平台开发过程中,为了解决 GNU Make,Autotools 的难用和繁琐的问题,开发了这个全新的构建系统,整个系统基于多个声明式的构建脚本,在构建脚本里,只需要声明要构建什么目标,目标的源代码,以及其直接依赖的其它目标,不需要说明如何构建。大大降低了使用难度,提高了开发效率。
Gitbub地址:
https://github.com/chen3feng/typhoon-blade
2、Appecker:自动化测试框架
一款用于 iOS 系列系统的自动化测试框架。
Gitbub地址:
https://github.com/TencentOpen/Appecker
3、QcloudMna:追风移动加速
QcloudMna 移动加速是腾讯云针对移动端应用(APP、游戏)推出的加速产品,其主要功能包括:动态数据加速、网络流量优化、智能分析统计,具有接入简单、多平台支持、客服支持等特点。
详情:https://www.oschina.net/p/mna
4、Ctaxis:云排序
云排序用于提供海量数据排序服务, 采用可扩展的分布式存储方案。腾讯云排序服务主要面向腾讯开放平台上的第三方应用,应用的用户量跨越从0到千万级甚至上亿的广阔区间, 在进行海量数据的排序时,经常会面临处理方式、处理性能等方面的问题。
详情:https://www.oschina.net/p/ctaxis
5、APT:安卓性能测试工具
安卓性能测试工具,安卓平台高效性能测试套件,用于安卓平台的基准测试、竞品测试。
APT是一个eclipse插件,可以实时监控Android手机上多个应用的CPU、内存数据曲线,并保存数据;另外还支持自动获取内存快照、PMAP文件分析等,方便开发人员自测或者测试人员完成性能测试,快速发现产品问题。
GitHub地址:
https://github.com/shawwinbin/APT
6、Koala:跨平台图形编译工具
跨平台图形编译工具,用于快速生成前端 CSS 和 JS。
详情:https://www.oschina.net/p/openkoala
7、TDW:腾讯分布式数据仓库
腾讯分布式数据仓库,用于帮助企业低成本构建大数据分析系统或数据仓库。
详情:https://code.csdn.net/Tencent/tdw/tree/master
8、TscanCode:静态代码扫描工具
静态代码扫描工具,针对 C/C++ 代码的静态代码扫描解决方案。
TscanCode旨在助力开发与测试人员从代码层面挖掘问题,将那些长期困扰项目的诸如空指针宕机等问题,扼杀于萌芽阶段。支持用户根据不同需求自定义配置检查项,有极强的扩展性和可维护性。平均扫描速度10W行/分钟。
详情:https://www.oschina.net/p/tscancode
9、RapidJSON
一个 C++ 的高性能 JSON 解析器及生成器,同时支持 SAX/DOM 风格的 API。
GitHub地址:
https://github.com/TencentOpen/rapidjson
10、Key-N-Value:高性能树型协议处理引擎
KNV 是一个模式自由的高性能树型协议处理引擎,是对 Key-Value 的一个通用结构化扩展。
11、WeTest助手:手机端辅助测试工具
WeTest助手是由WeTest(质量开放平台http://wetest.qq.com)自主研发的基于手机端的辅助测试工具,目前包括性能测试和远程调试两大功能, 能够为手游等项目发现CPU、内存、FPS等性能问题,并提供云端真机用于问题在线调试,共计为公司内外部项目服务5.4万次;
手游客户端性能测试常用性能维度,CPU,内存,FPS,流量一次性全部收集,图表化展示,数据可按场景化分类,并且支持离线和在线两种模式, 地铁上都可以做测试,Web上看报告。远程调试配合自研的云真机技术,支持多点触控、类手柄遥控,真实还原手游测试场景,极速流畅、极低延迟, 本地只需要一台手机即可操控云端任何一台手机。
支持ROOT和非ROOT安卓手机,支持越狱iOS系统。
GitHub地址:
https://github.com/Tencent/WeTest-Assistant
12、QT4i:iOS开发自动化测试工具
iOS 开发自动化测试工具,全面兼容 iOS 真机和模拟器,基于分布式技术,高效并发执行测试。QT4i需要和QTAF一起使用。
GitHub地址:
https://github.com/tencent/QT4i
13、QT4A:UI 测试自动化测试解决方案
基于 QTA 提供面向 Android 应用的 UI 测试自动化测试解决方案。
需要和QTAF一起使用。
详情:
https://www.oschina.net/p/QT4A
14、Fanvas
SWF 转 HTML5 Canvas 动画。Fanvas 可以把 SWF(包括矢量和位图)完美地转化为 Canvas 动画,让美术妹子一次制作,到处运行。
GitHub地址:
https://github.com/TencentOpen/Fanvas
15、HaboMalHunter:恶意软件分析系统
HaboMalHunter是哈勃分析系统 (https://habo.qq.com) 的开源子项目,用于Linux平台下进行自动化分析、文件安全性检测的开源工具。使用该工具能够帮助安全分析人员简洁高效的获取恶意样本的静态和动态行为特征。分析报告中提供了进程、文件、网络和系统调用等关键信息。
GitHub地址:
https://github.com/Tencent/HaboMalHunter
16、QTAF:跨平台测试自动化工具
QTAF 是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。
GitHub地址:
https://github.com/Tencent/QTAF
17、WeDemo
微信团队开源的项目,用于微信开发者进行微信登录、分享功能开发时的参考 Demo。
GitHub地址:
https://github.com/Tencent/WeDemo
18、GAutomator
GAutomator是一个针对Unity手游的UI自动化测试框架。设计理念与使用方式,类似于Android的UIAutomator。GAutomator以Unity中的GameObject为操作对象,通过操作GameObject实现UI自动化测试。基于GameObject的方式,不存在手机分辨率适配的问题,一份脚本能够运行在不同手机之上,基于GameObject的另外一个优点为鲁棒性较强,游戏的UI界面经常发生变化,GameObject变化频率相对较低。
GitHub地址:
https://github.com/tencent/GAutomator
19、MSEC
毫秒服务引擎是腾讯的一个开源框架,适用于在廉价机器组成的集群上开发和运营分布式后台服务。
GitHub地址:
https://github.com/Tencent/MSEC
20、Behaviac:行为树解决方案
行为树(Behavior Tree)解决方案。该方案包括编辑器(Designer)和运行时库(Runtime)。
GitHub地址:
https://github.com/Tencent/behaviac
21、Blueking CMDB(蓝鲸配置平台)
一款面向应用的 CMDB,在 ITIL 体系里,CMDB 是构建其它流程的基石,而在蓝鲸智云体系里,配置平台就扮演着基石的角色,为应用提供了各种运维场景的配置数据服务。
GitHub地址:
https://github.com/tencent/bk-cmdb
22、GT(随身调)
GT(随身调)是APP的随身调试平台,它是直接运行在手机上的“集成调试环境”(IDTE, Integrated Debug Environment)。
利用GT,仅凭一部手机,无需连接电脑,即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。
GitHub地址:
https://github.com/Tencent/GT
23、weui-wxss:安卓/iOS手机端调测组件
安卓/iOS 手机端调测组件,用于安卓平台的性能测试、竞品测试及仅凭一台手机进行 App 测试的场景。
GitHub地址:
https://github.com/weui/weui-wxss
24、weui.js
WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库。weui.js是 WeUI 的轻量级 js 封装。
GitHub地址:
https://github.com/weui/weui.js/
25、Teaf:高性能服务端框架
Tencent Easy ACE Framework,基于ACE的高性能轻量级服务框架,单进程多线程模型,支持select/epoll等多种网络IO模型,同时支持tcp和udp协议,支持二进制(pb等)和文本格式(json等,易于理解),相对多进程模型的框架来说更易维护,更轻量。业务侧只需要开发自己的逻辑处理即可实现高性能的业务后台服务器。已经在腾讯互娱(IEG)大部分平台类产品中成熟应用,比如idip,游戏人生,心悦,帮帮,新终端游戏中心aj,cross等,公司其他BG也有很多产品在使用。
GitHub地址:
https://github.com/Tencent/Teaf
26、SQLCipher
SQLCipher 提供了对 SQLite 数据库的传输层进行全面加密的工具,而通过使用 SQLCipher ,整个加密过程对客户端是透明的,无需改动应用程序。(该项目是腾讯 fork Zetetic 公司的开源项目)
GitHub地址:
https://github.com/Tencent/sqlcipher
27、Tars:高性能RFC开发框架
基于名字服务使用 Tars 协议的高性能 RPC 开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。
Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C++和Java两种语言。该框架为用户提供了涉及到开发、运维、以及测试的一整套解决方案,帮助一个产品或者服务快速开发、部署、测试、上线。 它集可扩展协议编解码、高性能RPC通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建自己的稳定可靠的分布式应用,并实现完整有效的服务治理。
目前该框架在腾讯内部,各大核心业务都在使用,颇受欢迎,基于该框架部署运行的服务节点规模达到上万个。
GitHub地址:
https://github.com/Tencent/Tars
28、WeFlow:前端开发工作流工具
一个高效、强大、跨平台(macOS & Win)的前端开发工作流工具,核心基于 tmt-workflow 工作流,代码开源可定制。
GitHub地址:
https://github.com/Tencent/WeFlow
29、Pebble:分布式开发框架
基于该框架,可以让开发者只需专注于业务逻辑的实现,而不需要关注基础功能的开发,如网络通信,数据存储,集群管理等。
GitHub地址:
https://github.com/TencentOpen/Pebble
30、tmt-workflow:前端工作流程
基于 Gulp(v4.0)、高效、跨平台(macOS & Win)、可定制的前端工作流程。
GitHub地址:
https://github.com/Tencent/tmt-workflow
31、WeUI:基础样式库
一套同微信原生视觉体验一致的基础样式库,为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、toast、article、icon等各式元素。
GitHub地址:
https://github.com/weui
32、WCDB:移动数据库框架
腾讯开源的一个高效、完整、易用的移动数据库框架,基于 SQLCipher,支持 iOS、macOS 和 Android。
GitHub地址:
https://github.com/Tencent/wcdb
33、xLua
xLua 为 Unity3D 增加 Lua 脚本编程的能力,进而提供代码逻辑增量更新的可能。
GitHub地址:
https://github.com/Tencent/xLua
34、Libco:C/C++协程库
Libco是微信后台大规模使用的C/C++协程库,2013年至今稳定运行在微信后台的数万台机器上。Libco提供了完善的协程编程接口、常用的Socket族函数Hook等,使得业务可用同步编程模型快速迭代开发。
早期微信后台因为业务需求复杂多变、产品要求快速迭代等需求,大部分模块都采用了半同步半异步模型。接入层为异步模型,业务逻辑层则是同步的多进程或多线程模型,业务逻辑的并发能力只有几十到几百。随着微信业务的增长,系统规模变得越来越庞大,每个模块很容易受到后端服务/网络抖动的影响。基于这样的背景,微信开发了Libco,实现了对业务逻辑非侵入的异步化改造。
GitHub地址:
https://github.com/tencent/libco
35、PhxPaxos:生产级paxos类库
PhxPaxos是微信后台团队自主研发的一套基于Paxos协议的多机状态拷贝类库。它以库函数的方式嵌入到开发者的代码当中,使得一些单机状态服务可以扩展到多机器,从而获得强一致性的多副本以及自动容灾的特性。PhxPaxos在微信服务里面经过一系列的工程验证和大量的恶劣环境下的测试,在一致性的保证上极为健壮。
PhxPaxos的特性包括使用基于消息传递机制的纯异步工程架构、每次写盘使用fsync严格保证正确性、支持Checkpoint以及对PaxosLog的自动清理、使用点对点流式协议进行快速学习、支持跨机器的Checkpoint自动拉取、内置Master选举功能、自适应的过载保护等。
GitHub地址:
https://github.com/tencent-wechat/phxpaxos
36、PhxSQL:高可用、强一致的MySQL集群
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
37、PhxRPC:RPC框架
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
38、Mars:终端跨平台网络组件
Mars是微信官方的终端基础组件,是一个结合移动应用所设计的基于Socket层的解决方案,在网络调优方面有更好的可控性,采用C++开发。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。
在微信中,任何网络实现的bug都可能导致重大事故。例如微信的容灾实现,如果因为版本的实现差异,导致某些版本上无法进行容灾恢复,将会严重的影响用户体验。微信研发了统一的跨平台的网络基础库Mars来满足发展的需要,一方面,基础组件可以提高研发效率,另外一方面,也可以提高系统的稳健性。
在设计上,Mars以跨平台、跨业务为前提,遵从高可用,高性能,负载均衡的设计原则。以网络的可用性为例,移动互联网有着丢包率高、带宽受限、延迟波动、第三方影响等特点,使得网络的可用性,尤其是弱网络下的可用性变得尤为关键。Mars 的STN组件作为基于 socket 层的网络解决方案,在很多细节设计上会充分考虑弱网络下的可用性。
GitHub地址:
https://github.com/Tencent/mars
39、热补丁技术Tinker
Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。
当前市面的热补丁方案有很多,其中比较出名的有阿里的AndFix、美团的Robust以及QZone的超级补丁方案,但它们都存在无法解决的问题,所以微信研发了自己的解决方案。总的来说,AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的。而Robust兼容性与成功率较高,但是它与AndFix一样,无法新增变量与类只能用做的bugFix方案。Qzone方案可以做到发布产品功能,但是它主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。
Tinker的具体设计目标如下:
开发透明:开发者无需关心是否在补丁版本,他可以随意修改,不由框架限制。
性能无影响:补丁框架不能对应用带来性能损耗。
完整支持:支持代码,So 库以及资源的修复,可以发布功能。
补丁大小较小: 补丁大小应该尽量的小,提高升级率。
稳定,兼容性好:保证微信的数亿用户的使用,尽量减少反射。
GitHub地址:
https://github.com/Tencent/tinker
美团点评开源软件
1、DBProxy:数据库中间件
DBProxy是由美团点评公司技术工程部DBA团队(北京)开发维护的一个基于MySQL协议的数据中间层。它在奇虎360公司开源的Atlas基础上,修改了部分bug,并且添加了很多特性。
通过数据库中间件,可以对数据库进行水平扩展,由原来单台数据库扩展到多台数据库,数据库中间件通过路由规则将数据的访问请求路由到其中一台数据库上,从而大大降低了数据访问的瓶颈和单台数据库的压力。通过数据库中间件还可以将DBA和研发进行解耦,提升DBA运维效率。
Github地址:
https://github.com/Meituan-Dianping/DBProxy
2、SQLAdvisor:SQL优化工具
SQLAdvisor 是由美团点评公司北京DBA团队开发维护的 SQL 优化工具:输入SQL,输出索引优化建议。 它基于 MySQL 原生词法解析,再结合 SQL 中的 where 条件以及字段选择度、聚合条件、多表 Join 关系等最终输出最优的索引优化建议。目前 SQLAdvisor 在公司内部大量使用,较为成熟、稳定。
GitHub地址:https://github.com/Meituan-Dianping/SQLAdvisor
华为开源软件
1、HBase 的 Spark SQL Astro
Spark SQL on HBase package 项目又名 Astro,端到端整合了 Spark,Spark SQL和HBase的能力,有助于推动帮助Spark进入NoSQL的广泛客户群,并提供强大的在线查询和分析以及在垂直企业大规模数据处理能力。
Apache HBase 是数据在 HDFS 上的 Key-Value 存储。它用来给 Google 的 Big Table 建模,并提供了 API 用于查询数据。这些数据通过它的“row keys”来组织、区分和发布。在每个分区上,数据被指定的“列”数据集合“列族”物理分区。这些数据模型是宽且零散的,在这些表中列是动态的,零散的。
详情:https://www.oschina.net/p/huawei-astro
2、LiteOS:华为物联网操作系统
Huawei LiteOS 是华为面向IoT领域,构建的"统一物联网操作系统和中间件软件平台",以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供 "一站式" 完整软件平台,有效降低开发门槛、缩短开发周期。
Huawei LiteOS 目前主要应用于智能家居、穿戴式、车联网、智能抄表、工业互联网等 IoT 领域的智能硬件上。
详情:https://www.oschina.net/p/liteos
GitHub地址:
https://github.com/Huawei/Huawei_LiteOS_Kernel
3、Apache CarbonData:Hadoop 原生文件格式
CarbonData 是一个为了更快的交互查询而生的新的Hadoop原生文件格式,用于大数据的快速分析和多维度查询hadoop本地数据存储设计。
在客户基准上,CarbonData已经展示出管理运行在非常低成本的硬件上的PB级别的数据,并且比目前的开源解决方案快了近10倍。
详情:https://www.oschina.net/p/carbondata
4、ServiceComb:多功能微服务框架
ServiceComb 是华为开源的一套包含代码框架生成,服务注册发现,负载均衡,服务可靠性(容错熔断,限流降级,调用链追踪)等功能的微服务框架。
ServiceComb 是华为 FusionCloud 解决方案中 PaaS 平台的重要组成部分,内置了高可靠性运行、动态治理等运维阶段的高级能力。ServiceComb 目前已应用于华为自身 IT 的多个核心业务,帮助华为极大地提升了云原生应用的开发效率。
ServiceComb 包括应用框架代码生成,服务注册发现、服务配置管理、服务监控、服务调用追踪、多通信协议支持等功能,具有服务化契约增强、响应式编程范式及多语言 SDK 支持等优势特性。ServiceComb 基于开放的架构,不仅可以支持开发者根据自身业务需求定制业务插件,而且还兼容多种业界流行的微服务框架。
详情:https://www.oschina.net/p/servicecomb
5、hindex:HBase 二级索引
hindex 是华为公司开发的纯 Java 编写的 HBase 二级索引,兼容 Apache HBase 0.94.8。
当前的特性如下:
多个表索引
多个列索引
基于部分列值的索引
使用索引扫描等于和范围条件
批量加载数据来索引表(索引完成批量加载)
详情:https://www.oschina.net/p/hindex
GitHub地址:
https://github.com/Huawei-Hadoop/hindex
6、oct:开放容器测试框架
oct 是用于开放容器的测试用例和框架,用 Go 语言开发。
ocp-testing 项目的目标是,通过提供全局测试框架给所有的容器项目,来提高开放容器项目。测试包括,ocp 规范,容器功能和容器性能。
详情:https://www.oschina.net/p/oct
GitHub地址:
https://github.com/huawei-openlab/oct
7、streamDM:用于 Spark Streaming 的数据挖掘
streamDM,是由华为诺亚方舟实验室开源的使用 Spark Streaming 挖掘大数据的开源软件。
大数据流学习(Big Data stream learning)比批量或离线学习更富有挑战性,因为数据在流动的过程中不太可能保持同一种分布。而且,数据流中的每一个样本只能被处理一次,否则它们就需要占用内存进行总结,同时该学习算法也必须非常高效。
Spark Streaming是核心Spark API 的一个扩展,它能让多个源的数据流处理成为可能。Spark 是一个可扩展可编程的框架,用于大规模分布式数据集(也称为弹性分布式数据集(RDD))处理。Spark Streaming 接收输入的数据流后将数据分批,再由 Spark 引擎处理,生成结果。
Spark Streaming 数据被编成一个 DStreams 序列,内在地表示成一个 RDD 序列。
详情:https://www.oschina.net/p/stream-dm
GitHub地址:
https://github.com/huawei-noah/streamDM/
8、StreamCQL:流处理平台查询语言
StreamCQL作为华为FusionInsight产品的重要组件,提供了在分布式流处理平台上的类SQL查询能力,包括窗口计算等高级特性,在开源之前已经在电信、金融等多个行业成功应用,简化开发工作量数倍。
StreamCQL是一个类SQL的声明式语言,它用于在流(streams)和可更新关系(updatable relation)上的可持续查询,目的是在流处理平台分布式计算能力之上,通过使用简易通用的类SQL语言,使得业务逻辑的开发变得统一和简易。在架构上,除了支持主流的流处理平台Storm,它支持扩展到多种流处理引擎之上,如Flink。在功能上,StreamCQL弥补了传统流处理平台上一些基本业务功能的缺失,除了过滤、转换等基本SQL能力之外, 还引入基于内存窗口的计算、统计、关联等能力,以及流数据的拆分、合并等功能。后期StreamCQL的发展方向包括:模式匹配、CQLServer(CQL远程提交,多语言接口,JDBC接口)、可靠性增强等。
详情:https://www.oschina.net/p/streamcql
GitHub地址:
https://github.com/HuaweiBigData/StreamCQL
9、96Boards:ARM 开放平台规范
96Boards 是 ARM 开放平台规范,是第一个定义 Cortex-A 开发板的开放规范,Cortex-A 是 ARM SoC 供应商提供的低耗能,小脚本 32 位和 64 位开发板。标准化扩展 Peripheral I/O 总线,显示和相机,允许硬件生态系统开发一系列兼容组件的产品,在其生命周期可以在任意兼容 96Boards 的平台上使用。
详情:https://www.oschina.net/p/96boards
写给读者
越来越多的公司正走向开源,编程语言、操作系统、框架、平台、数据库等方方面面开源软件也越来越多,这些开源项目为我们的工作带来很多方便,可以直接“拿来”解决技术问题,不用重复造轮子,提高效率的同时也极大地降低了研发成本。
除了软件可以开源之外,研发实践也可以开源共享,第六届TOP100全球软件案例研究峰会将于11月9-12日在北京国家会议中心举办,甄选100个本年度最具行业代表性的软件研发案例,现场解读其解决方案和背后的技术逻辑,帮助研发团队快速提高效能。
更多TOP100案例信息及日程请前往[官网]查阅。4天时间集中分享2017年最值得学习的100个研发案例实践。本平台共送出10张开幕式单天免费体验票,登录TOP100summit官网即可申请,数量有限,先到先得。