大家可以关注我的公众号和视频号“架构随笔录”。
作为一个开源爱好者,我花费了大概1整天的时间去整理了国内外主流的互联网公司在Java后端领域的开源输出成果,顿时感悟太多,总是觉得这些贡献开源的技术人及对应技术公司确实太不容易了,因此产生了写这篇文章的想法,当然这里排名是不分先后的。
谨以此篇文章致敬为软件开源做出贡献的技术人,尤其是国产开源软件。
互联网大厂都是看结果的,所以我们这里先上开源数据,就可以非常的清楚啦!
腾讯,https://github.com/Tencent
目前腾讯将还没有托管到Apache中的Java后端项目,统一托管在Tencent下面。
当然腾讯的无线前端项目统一托管在https://github.com/AlloyTeam下面,这里就不展开了,本篇文章只关注Java后端。
以上是按照Java语言的Stars数量由高到低排序的。
腾讯(Tencent)排名第1 Tinker
github上的托管地址为https://github.com/Tencent/tinker。
Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新,它的竞争对手就是阿里巴巴开源的AndFix。
温馨提示:目前AndFix Star数量为16.9k,Fork数量为3.3k。
腾讯(Tencent)排名第2 APIJSON
github上的托管地址为https://github.com/Tencent/APIJSON。
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。为各种增删改查提供了完全自动化的万能通用接口,零代码实时满足千变万化的各种新增和变更需求。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目,尤其是 创业项目、内部项目、低代码/零代码、小程序、BaaS、Serverless 等。
通过万能通用接口,前端可以定制任何数据、任何结构。大部分 HTTP 请求后端再也不用写接口了,更不用写文档了。前端再也不用和后端沟通接口或文档问题了。再也不会被文档各种错误坑了。后端再也不用为了兼容旧接口写新版接口和文档了。再也不会被前端随时随地没完没了地烦了。
温馨提示:目前APIJSON Star数量为16.1k,Fork数量为2.1k。
腾讯(Tencent)排名第3 QMUI_Android
github上的托管地址为https://github.com/Tencent/QMUI_Android。
QMUI_Android的设计目的是用于辅助快速搭建一个具备基本设计还原效果的 Android 项目,同时利用自身提供的丰富控件及兼容处理,让开发者能专注于业务需求而无需耗费精力在基础代码的设计上。不管是新项目的创建,或是已有项目的维护,均可使开发效率和项目质量得到大幅度提升。
温馨提示:目前QMUI_Android Star数量为14.2k,Fork数量为2.7k。
腾讯(Tencent)排名第4 VasSonic
github上的托管地址为https://github.com/Tencent/VasSonic。
VasSonic是腾讯VAS团队开发的一款轻量级、高性能的Hybrid框架,旨在加速Android和iOS平台上的网站首屏速度。VasSonic不仅支持服务器渲染的静态或动态网站,而且完美兼容网络离线资源。
VasSonic 使用自定义 url 连接而不是原始网络连接来请求索引 html,因此它可以提前或并行请求资源,以避免等待视图初始化。在这种并行情况下,VasSonic 可以通过 WebKit 或 Blink 内核读取并渲染部分数据,而无需花费太多时间等待数据流结束。
VasSonic可以根据客户端和服务器遵循的VasSonic规范巧妙地缓存html。VasSonic 规范通过插入不同的注释锚来指定模板和数据,模板是 html 中保持不变或很少变化的较大部分,而矛盾数据是 html 中较小且不断变化的部分。据此,VasSonic通过增量更新模板和数据来请求更少的数据,网站速度更快,感觉更像原生应用程序。综上所述,VasSonic有效提升了用户体验,提高了点击率、留存率等指标。
温馨提示:目前VasSonic Star数量为11.7k,Fork数量为1.6k。
腾讯(Tencent)排名第5 Matrix
github上的托管地址为https://github.com/Tencent/matrix。
Matrix 是一款微信研发并日常使用的应用性能接入框架,支持iOS, macOS和Android。Matrix 通过接入各种性能监控方案,对性能监控项的异常数据进行采集和分析,输出相应的问题分析、定位与优化建议,从而帮助开发者开发出更高质量的应用。
温馨提示:目前matrix Star数量为11.2k,Fork数量为1.8k。
腾讯(Tencent)排名第6 Matrix
github上的托管地址为https://github.com/Tencent/Hippy。
Hippy是一个跨平台的开发框架,旨在帮助开发者一次编写,在多个平台(iOS、Android、Web等)上运行。Hippy 对 Web 开发人员相当友好,尤其是那些熟悉 React 或 Vue 的开发人员。借助 Hippy,开发人员可以轻松创建跨平台应用程序。
Hippy现已应用于腾讯手Q、手Q浏览器、腾讯视频、QQ音乐、腾讯等主流应用新闻,触达亿万普通用户。
温馨提示:目前Hippy Star数量为7.7k,Fork数量为915。
腾讯(Tencent)排名第7 Shadow
github上的托管地址为https://github.com/Tencent/Shadow。
Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。Shadow不仅开源分享了插件技术的关键代码,还完整的分享了上线部署所需要的所有设计。
温馨提示:目前Shadow Star数量为7.2k,Fork数量为1.3k。
腾讯(Tencent)排名第8 GT
github上的托管地址为https://github.com/Tencent/GT。
GT(Great Tit)是一款便携式调试工具,可以随时随地在智能手机上进行 bug 查找和性能调整,就像用 Walkman 听音乐一样。GT可以直接在智能手机上运行作为集成调试环境。
借助GT,开发者只需一部手机即可完成以下工作:快速性能测试(CPU、内存、流量、功耗、流畅度测试等)、查看开发者日志和崩溃日志、抓包、调试APP内部参数及代码耗时统计。
如果GT提供的功能不能满足开发者的需求,开发者还可以开发自己的具有特殊功能的GT插件,以帮助解决更复杂的调试问题。
温馨提示:目前GT Star数量为4.4k,Fork数量为1k。
腾讯(Tencent)排名第9 spring-cloud-tencent
github上的托管地址为https://github.com/Tencent/spring-cloud-tencent。
Spring Cloud Tencent 是基于 Spring Cloud SPI 实现的一站式微服务解决方案。通过集成 Spring Cloud 和腾讯中间件,让分布式服务和微服务的开发、测试、发布和运维变得更加简单。
温馨提示:目前Spring Cloud Tencent Star数量为3.1k,Fork数量为491。
腾讯(Tencent)排名第10 VasDolly
github上的托管地址为https://github.com/Tencent/VasDolly。
VasDolly是一种快速多渠道打包工具,同时支持基于V1签名和V2,V3签名进行多渠道打包。插件本身会自动检测Apk使用的签名类别,并选择合适的多渠道打包方式,对使用者来说完全透明。
温馨提示:目前VasDollyStar数量为2.9k,Fork数量为352。
为了方便对比,这里只计算腾讯排名前10的后端Java框架,另外在Java领域,腾讯还没有任何框架成为Apache顶级项目。
可以非常明显的看出,腾讯的Java框架的布道,一直都是聚焦在移动端(也就是APP侧),而不是传统意义的Java后端。
比如想要打败Spring Cloud Alibaba的直接竞品Spring Cloud Tencent,腾讯对这个框架的整体推广粒度确实太小了,Fork数量还没有过千。
阿里巴巴,https://github.com/alibaba
目前阿里巴巴将还没有托管到Apache中的Java后端项目,统一托管在alibaba下面。
与腾讯不一样,阿里巴巴已经有几个Java后端项目已经成为Apache顶级项目,分别是Druid、Shiro、Dubbo和RocketMQ,那么对应的托管路径就是https://github.com/apache。
当然阿里巴巴不止一个开源路径,比如蚂蚁金服也一个,那就是https://github.com/sofastack和https://github.com/seata。
阿里巴巴(alibaba)排名第1 Arthas
github上的托管地址为https://github.com/alibaba/arthas。
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
温馨提示:目前Arthas Star数量为33.9k,Fork数量为7.3k。
阿里巴巴(alibaba)排名第2 easyexcel
github上的托管地址为https://github.com/alibaba/easyexcel。
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便
温馨提示:目前easyexcel Star数量为30k,Fork数量为7.3k。
阿里巴巴(alibaba)排名第3 nacos
github上的托管地址为https://github.com/alibaba/nacos。
Nacos 致力于帮助开发者发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
温馨提示:目前Nacos Star数量为28.1k,Fork数量为12.4k。
阿里巴巴(alibaba)排名第4 druid
github上的托管地址为https://github.com/alibaba/druid。
Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能。
温馨提示:目前Druid Star数量为27.4k,Fork数量为8.6k。
阿里巴巴(alibaba)排名第5 Canal
github上的托管地址为https://github.com/alibaba/canal。
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
温馨提示:目前Canal Star数量为27.1k,Fork数量为7.5k。
阿里巴巴(alibaba)排名第6 Spring Cloud Alibaba
github上的托管地址为https://github.com/alibaba/spring-cloud-alibaba。
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,开发者只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
此外,阿里云同时还提供了 Spring Cloud Alibaba 企业版 微服务解决方案,包括无侵入服务治理(全链路灰度,无损上下线,离群实例摘除等),企业级 Nacos 注册配置中心和企业级云原生网关等众多产品。
温馨提示:目前Spring Cloud Alibaba Star数量为26.8k,Fork数量为8.1k。
阿里巴巴(alibaba)排名第7 fastjson
github上的托管地址为https://github.com/alibaba/fastjson。
Fastjson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Fastjson 可以处理任意 Java 对象,包括您没有源代码的现有对象。
温馨提示:目前fastjson Star数量为25.5k,Fork数量为6.6k。
阿里巴巴(alibaba)排名第8 Sentinel
github上的托管地址为https://github.com/alibaba/Sentinel。
随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。Sentinel 采取“流量”以流量控制、流量整形, 并发限制、熔断和系统自适应过载保护, 确保微服务的可靠性和弹性。
哨兵具有以下特点:
-
丰富的适用场景:Sentinel在阿里巴巴得到了广泛应用,几乎覆盖了过去10年双11(11.11)购物节的所有核心场景,比如“秒杀”需要限制突发流量以满足系统容量、消息削峰填谷、下游不可靠服务熔断、集群流控等。
-
实时监控:Sentinel还提供实时监控能力。您可以实时查看单机的运行信息,以及小于500个节点的集群的聚合运行信息。
-
广泛的开源生态系统:Sentinel 提供与 Spring Cloud、gRPC、Apache Dubbo 和 Quarkus 等常用框架和库的开箱即用集成。您只需将适配器依赖项添加到您的服务中即可轻松使用 Sentinel。
-
多语言支持:Sentinel 提供了对 Java、Go、C++ 和Rust支持的客户端。
-
丰富的 SPI 扩展:Sentinel 提供简单易用的 SPI 扩展接口,让您可以快速自定义逻辑,例如自定义规则管理、适配数据源等上。
温馨提示:目前fastjson Star数量为21.6k,Fork数量为7.9k。
阿里巴巴(alibaba)排名第9 DataX
github上的托管地址为https://github.com/alibaba/DataX。
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
阿里云DataWorks数据集成是DataX团队在阿里云上的商业化产品,致力于提供复杂网络环境下、丰富的异构数据源之间高速稳定的数据移动能力,以及繁杂业务背景下的数据同步解决方案。目前已经支持云上近3000家客户,单日同步数据超过3万亿条。DataWorks数据集成目前支持离线50+种数据源,可以进行整库迁移、批量上云、增量同步、分库分表等各类同步解决方案。2020年更新实时同步能力,支持10+种数据源的读写任意组合。提供MySQL,Oracle等多种数据源到阿里云MaxCompute,Hologres等大数据引擎的一键全增量同步解决方案。
温馨提示:目前DataX Star数量为14.5k,Fork数量为5.1k。
阿里巴巴(alibaba)排名第10 ARouter
github上的托管地址为https://github.com/alibaba/ARouter。
一个用于帮助 Android App 进行组件化改造的框架,支持模块间的路由、通信解耦。
(1)支持直接解析标准URL进行跳转,并自动注入参数到目标页面中;
(2)支持多模块工程使用;
(3)支持添加多个拦截器,自定义拦截顺序;
(4)支持依赖注入,可单独作为依赖注入框架使用;
(5)支持InstantRun;
(6)支持MultiDex(Google方案);
(7)映射关系按组分类、多级管理,按需初始化;
(8)支持用户指定全局降级与局部降级策略;
(9)页面、拦截器、服务等组件均自动注册到框架 ;
(10)支持多种方式配置转场动画 ;
(11)支持获取Fragment;
(12)完全支持Kotlin以及混编;
(13)支持第三方 App 加固(使用 arouter-register 实现自动注册);
(14)支持生成路由文档;
(15)提供 IDE 插件便捷的关联路径和目标类;
(16)支持增量编译(开启文档生成后无法增量编译);
(16)支持动态注册路由信息。
温馨提示:目前ARouter Star数量为14.3k,Fork数量为2.6k。
前面也提到过了,阿里巴巴已经有几个Java后端项目已经成为Apache顶级项目,分别是Druid、Shiro、Dubbo和RocketMQ。
Apache Druid
github上的托管地址为https://github.com/apache/druid。
Druid 是一个高性能、实时分析数据库,可在大规模和负载下对流式和批处理数据提供亚秒级查询。
温馨提示:目前Apache Druid Star数量为13k,Fork数量为3.6k。
Apache Shiro
github上的托管地址为https://github.com/apache/shiro。
Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,用于执行身份验证、授权、加密和会话管理。借助 Shiro 易于理解的 API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的 Web 和企业应用程序。
温馨提示:目前Apache Shiro Star数量为4.2k,Fork数量为2.4k。
Apache Dubbo
github上的托管地址为https://github.com/apache/dubbo。
Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。
"Dubbo3 已在阿里巴巴内部微服务集群全面落地,用于升级运行多年的 HSF2 框架。"
温馨提示:目前Apache Dubbo Star数量为39.6k,Fork数量为26.4k。
Apache RocketMQ
github上的托管地址为https://github.com/apache/rocketmq。
在阿里孕育 RocketMQ 的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量的上升,源自我们的消息传递集群的压力也变得紧迫。
根据我们的研究,随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。于是我们尝试了流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面,详见下文。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的消息用例,覆盖从传统的pub/sub场景到高容量的实时零误差的交易系统。
Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。
温馨提示:目前Apache RocketMQ Star数量为20.1k,Fork数量为11.4k。
总之,阿里巴巴开源项目中,无论是Star数量,还是Fork数量,影响力最大的,依然是Apache Dubbo。
美团,https://github.com/meituan
美团(meituan)排名第1 WMRouter
github上的托管地址为https://github.com/meituan/WMRouter。
WMRouter是一款Android路由框架,基于组件化的设计思路,有功能灵活、使用简单的特点。
WMRouter主要提供URI分发、ServiceLoader两大功能。
URI分发功能可用于多工程之间的页面跳转、动态下发URI链接的跳转等场景,特点如下:
(1)支持多scheme、host、path;
(2)支持URI正则匹配;
(3)页面配置支持Java代码动态注册,或注解配置自动注册;
(4)支持配置全局和局部拦截器,可在跳转前执行同步/异步操作,例如定位、登录等;
(5)支持单次跳转特殊操作:Intent设置Extra/Flags、设置跳转动画、自定义StartActivity操作等;
(6)支持页面Exported控制,特定页面不允许外部跳转;
(7)支持配置全局和局部降级策略;
(8)支持配置单次和全局跳转监听;
(10)完全组件化设计,核心组件均可扩展、按需组合,实现灵活强大的功能。
温馨提示:目前WMRouter Star数量为2.3k,Fork数量为334。
由于美团开源的其他Java项目Star数量太少了,这里就不列举了,也就是美团能拿得出手的Java项目,只有WMRouter。
百度,https://github.com/baidu
百度(baidu)排名第1 uid-generator
github上的托管地址为https://github.com/baidu/uid-generator。
UidGenerator 是一个 Java 实现的、基于 Snowflake 的唯一 ID 生成器。它 作为组件工作,并允许用户覆盖 workId 位和初始化策略。结果就是多了很多 适合虚拟化环境,如docker。除了这些,它还克服了 Snowflake算法通过消耗未来时间来限制并发;通过缓存并行 UID 生产和消费 带 RingBuffer 的 UID;通过填充消除来自 RingBuffer 的 CacheLine 伪共享。最后,它 单实例可提供超过600万的QPS。
温馨提示:目前uid-generator Star数量为5.3k,Fork数量为1.5k。
百度(baidu)排名第2 starlight
github上的托管地址为https://github.com/baidu/starlight。
Starlight 是一套面向云原生的微服务通信框架,兼容Spring生态,基于此可快速构建高效、稳定、可控、可观测的微服务应用,获得研发效率提升、业务稳定性增强等舒适体验。核心特性如下:
-
多种协议支持:Starlight单端口支持brpc、Spring MVC REST协议,提供超丰富的使用场景
-
高性能远程通信:Starlight基于多路复用的NIO框架封装底层通信能力,提供高性能高并发网络通信能力
-
易于使用:无需处理protobuf编译过程,通过原生Java接口和POJO对象加上类级别的注解,类似Java RMI和Spring MVC使用体验,即可实现brpc二进制协议的Server和Client;支持无损升级、异常实例摘除;规范化的日志可以秒级定位超时问题、序列化失败问题
温馨提示:目前starlight Star数量为938,Fork数量为281。
百度开源的其他Java框架,关注度太低了,这里就不列举了,只能说明一点,百度针对Java的开源贡献度确实不如阿里巴巴和腾讯。
字节跳动,https://github.com/bytedance
字节跳动(bytedance)排名第1 ByteX
github上的托管地址为https://github.com/bytedance/ByteX。
ByteX 是一个基于 Android Gradle Transform Api 和 ASM 的字节码插件平台。由字节跳动 抖音安卓团队提供支持。
在apk构建过程中,每个插件都是完全独立的。它不仅可以独立于 ByteX 主机运行,还可以与其他插件一起自动集成到主机中形成单个 Transform。
更重要的是,每个插件的代码彼此以及它们的主机都是解耦的,这使得它对于新插件的开发具有可扩展性和高效性。
温馨提示:目前ByteX Star数量为3k,Fork数量为444。
字节跳动(bytedance)排名第2 AlphaPlayer
github上的托管地址为https://github.com/bytedance/AlphaPlayer。
AlphaPlayer是直播中台使用的一个视频动画特效SDK,可以通过制作Alpha通道分离的视频素材,再在客户端上通过OpenGL ES重新实现Alpha通道和RGB通道的混合,从而实现在端上播放带透明通道的视频。
这套方案对设计师而言明显降低了特效的制作成本,对于客户端而言有着更可靠的性能和稳定性,且相比cocos2d引擎有着更低的入门门槛和维护成本,为复杂动画的实现提供了一种全新的方式,新的复杂动画开发将会变得更加简单高效。
温馨提示:目前AlphaPlayer Star数量为2k,Fork数量为311。
字节跳动(bytedance)排名第3 scene
github上的托管地址为https://github.com/bytedance/scene。
Scene是一个基于View的轻量级导航和页面切分组件库,主要特性:
-
简单方便的页面导航和栈管理,支持MultiStack;
-
完善的生命周期的管理和分发;
-
可以更简单的实现复杂的过场动画;
-
支持对Activity和Window属性的修改和恢复;
-
支持页面之间拿返回值,支持在Scene中申请权限;
-
支持页面销毁时保存状态和恢复。
温馨提示:目前Scene Star数量为2k,Fork数量为193。
字节跳动(bytedance)排名第4 bitsail
github上的托管地址为https://github.com/bytedance/bitsail。
BitSail是一个分布式高性能数据集成引擎,支持批量、流式和增量场景。BitSail被广泛应用,每天同步数百万亿数据。
BitSail已得到广泛应用,支持数百万亿大流量。同时在火山引擎的云原生环境、本地私有云环境等多种场景下进行了验证。
我们积累了大量的经验,并做了多项优化,完善数据集成功能
-
全球数据集成,涵盖批量、流式、增量场景
-
分布式云原生架构,支持水平扩展
-
在准确性、稳定性和性能方面高度成熟
-
丰富的基础功能,如类型转换、脏数据处理、流控、数据湖集成、自动并行计算等 。
-
任务运行状态监控,如流量、QPS、脏数据、延迟等。
温馨提示:目前BitSail Star数量为1.5k,Fork数量为304。
字节跳动(bytedance)排名第5 AabResGuard
github上的托管地址为https://github.com/bytedance/AabResGuard。
温馨提示:目前AabResGuard Star数量为1.2k,Fork数量为166。
字节跳动(bytedance)排名第6 BoostMultiDex
github上的托管地址为https://github.com/bytedance/BoostMultiDex。
BoostMultiDex是一个用于Android低版本设备(4.X及以下,SDK < 21)快速加载多DEX的解决方案,由抖音/Tiktok Android技术团队出品。
相比于Android官方原始MultiDex方案,它能够减少80%以上的黑屏等待时间,挽救低版本Android用户的升级安装体验。并且,不同于目前业界所有优化方案,BoostMultiDex方案是从Android Dalvik虚拟机底层机制入手,从根本上解决了安装APK后首次执行MultiDex耗时过长问题。
温馨提示:目前BoostMultiDex Star数量为1.1k,Fork数量为110。
剩下的关于字节跳动bytedance中的Java项目就不一一列举了,关注度太低了。
有赞,https://github.com/youzan
有赞能够拿得出手的Java项目确实太少了,这里就不列举啦。
有赞比较出名的项目是前端相关的,比如https://github.com/youzan/vant、https://github.com/youzan/vant-weapp和https://github.com/youzan/zent。
滴滴,https://github.com/didi
滴滴(didi)排名第1 DoKit
github上的托管地址为https://github.com/didi/DoKit。
DoKit诞生于滴滴城运服体验技术部,是一款面向泛前端产品研发全生命周期的效率平台。经过两年的发展,当前DoKit已经发展成了一个相对完整的生态,比如DoKit For Android、DoKit For iOS、DoKit For 小程序、DoKit For Flutter、DoKit For Web。同时我们的项目被BAT以及滴滴、字节、快手、京东等等头部独角兽企业广泛使用并获得良好的口碑。随着dokit.cn平台端的推出,标志着DoKit已经从单纯的效率工具正式进入了效率工具平台的阶段。与此同时我们一直都未停下持续探索的精神,积极地在更多平台领域进行尝试,不给自己设限。我们相信DoKit的未来充满无限可能。
温馨提示:目前DoKit Star数量为19.81k,Fork数量为3.1k。
滴滴(didi)排名第2 VirtualAPK
github上的托管地址为https://github.com/didi/VirtualAPK。
VirtualAPK 是一个强大而轻量级的 Android 插件框架。它可以作为已安装的应用程序无缝地动态加载和运行 APK 文件(我们称之为 LoadedPlugin)。开发人员可以在 LoadedPlugin 中使用任何类、资源、活动、服务、接收器和提供者,就像它们在应用的清单文件中注册一样。
温馨提示:目前VirtualAPK Star数量为8.9k,Fork数量为1.5k。
滴滴(didi)排名第3 KnowStreaming
github上的托管地址为https://github.com/didi/KnowStreaming。
Know Streaming是一套云原生的Kafka管控平台,脱胎于众多互联网内部多年的Kafka运营实践经验,专注于Kafka运维管控、监控告警、资源治理、多活容灾等核心场景。在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设,提供一系列特色的功能,极大地方便了用户和运维人员的日常使用,让普通运维人员都能成为Kafka专家。
温馨提示:目前KnowStreaming Star数量为6.6k,Fork数量为1.2k。
滴滴(didi)排名第4 tinyid
github上的托管地址为https://github.com/didi/tinyid。
Tinyid 是一个 ID 生成器服务。它提供了一个 REST API 和一个用于获取 ids 的 java 客户端。使用java客户端时单实例QPS超过1000万。支持jdk版本1.7+。
温馨提示:目前tinyid Star数量为2.2k,Fork数量为564。
滴滴(didi)排名第5 DDMQ
github上的托管地址为https://github.com/didi/DDMQ。
DDMQ是滴滴基础设施团队基于Apache RocketMQ打造的分布式消息产品。DDMQ 作为分布式消息中间件,为DiDi内部许多重要的大型分布式系统提供低延迟、高吞吐量、高可用的消息服务。DDMQ提供实时消息、延迟消息和事务消息来满足不同的场景。通过简单易用的Web Console和简单的SDK Client,开发者可以体验最简单、稳定的消息生产和消费。
温馨提示:目前DDMQ Star数量为1.3k,Fork数量为339。
剩下的关于滴滴中的Java项目就不一一列举了,关注度太低了。
饿了么,https://github.com/eleme
饿了么本身也是阿里巴巴的,因此也可以归纳为阿里生态的人开源项目。
饿了么(eleme)排名第1 UETool
github上的托管地址为https://github.com/eleme/UETool。
UETool 是一个各方人员(设计师、程序员、测试)都可以使用的调试工具。它可以作用于任何显示在屏幕上的 view,比如 Activity/Fragment/Dialog/PopupWindow 等等。
目前 UETool 提供以下功能:
-
移动屏幕上的任意 view,如果重复选中一个 view,将会选中其父 view;
-
查看/修改常用控件的属性,比如修改 TextView 的文本内容、文本大小、文本颜色等等;
-
如果你的项目里正在使用 Fresco 的 DraweeView 来呈现图片,那么 UETool 将会提供更多的属性比如图片 URI、默认占位图、圆角大小等等;
-
你可以很轻松的定制任何 view 的属性,比如你想查看一些额外的业务参数;
-
有的时候 UETool 为你选中的 view 并不是你想要的,你可以选择打开 ValidView,然后选中你需要的 View;
-
显示两个 view 的相对位置关系;
-
显示网格栅栏,方便查看控件是否对齐;
-
支持 Android P;
-
支持显示当前控件所在的 Fragment;
-
显示 Activity 的 Fragment 树;
-
如果 view 在 RecyclerView 中,显示这个 view 所在的 ViewHolder 类名。
温馨提示:目前UETool Star数量为3.2k,Fork数量为337。
饿了么(eleme)排名第2 lancet
github上的托管地址为https://github.com/eleme/lancet。
Lancet 是一个轻量级Android AOP框架。
-
编译速度快, 并且支持增量编译;
-
简洁的 API, 几行 Java 代码完成注入需求;
-
没有任何多余代码插入 apk;
-
支持用于 SDK, 可以在SDK编写注入代码来修改依赖SDK的App。
温馨提示:目前lancet Star数量为2k,Fork数量为313。
饿了么(eleme)排名第3 Amigo
github上的托管地址为https://github.com/eleme/Amigo。
它是饿了么开源的Android 平台的修补程序库。
温馨提示:目前Amigo Star数量为1.4k,Fork数量为215。
剩下的关于饿了么中的Java项目就不一一列举了,关注度太低了。
大众点评,https://github.com/dianping
大众点评(dianping)排名第1 cat
github上的托管地址为https://github.com/dianping/cat。
Cat简介
-
CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。
-
CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
-
CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。
CAT的竞品产品为Skywalking等。
温馨提示:目前Cat Star数量为18.2k,Fork数量为5.4k。
大众点评(dianping)排名第2 pigeon
github上的托管地址为https://github.com/dianping/pigeon。
Pigeon是一个分布式服务通信框架(RPC),在美团点评内部广泛使用,是美团点评最基础的底层框架之一。
除了支持spring schema等配置方式,也支持代码annotation方式发布服务、引用远程服务,并提供原生api接口的用法。
支持http协议,方便非java应用调用pigeon的服务。
序列化方式除了hessian,还支持thrift等。
提供了服务器单机控制台pigeon-console,包含单机服务测试工具。
创新的客户端路由策略,提供服务预热功能,解决线上流量大的service重启时大量超时的问题。
记录每个请求的对象大小、返回对象大小等监控信息。
服务端可对方法设置单独的线程池进行服务隔离,可配置客户端应用的最大并发数进行限流。
剩下的关于大众点评中的Java项目就不一一列举了,关注度太低了。
美团点评,https://github.com/Meituan-Dianping
美团点评(Meituan-Dianping)排名第1 walle
github上的托管地址为https://github.com/Meituan-Dianping/walle。
Walle(瓦力):Android Signature V2 Scheme签名下的新一代渠道包打包神器
瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。
温馨提示:目前walle Star数量为6.7k,Fork数量为1.1k。
美团点评(Meituan-Dianping)排名第2 Leaf
github上的托管地址为https://github.com/Meituan-Dianping/Leaf。
Leaf 最早期需求是各个业务线的订单ID生成需求。在美团早期,有的业务直接通过DB自增的方式生成ID,有的业务通过redis缓存来生成ID,也有的业务直接用UUID这种方式来生成ID。以上的方式各自有各自的问题,因此我们决定实现一套分布式ID生成服务来满足需求。
目前Leaf覆盖了美团点评公司内部金融、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。在4C8G VM基础上,通过公司RPC方式调用,QPS压测结果近5w/s,TP999 1ms。
温馨提示:目前Leaf Star数量为6.2k,Fork数量为1.8k。
美团点评(Meituan-Dianping)排名第3 Robust
github上的托管地址为https://github.com/Meituan-Dianping/Robust。
Robust是新一代热更新系统,无差别兼容Android2.3-10版本;无需重启补丁实时生效,快速修复线上问题,补丁修补成功率高达99.9%。
温馨提示:目前Robust Star数量为4.4k,Fork数量为806。
美团点评(Meituan-Dianping)排名第4 Zebra
github上的托管地址为https://github.com/Meituan-Dianping/Zebra。
美团点评集团统一使用的MySQL数据库访问层的中间件。主要提供对业务开发透明、读写分库、分库分表能力,并提供了端到端SQL监控的集成方案。
Zebra是一个基于JDBC API协议上开发出的高可用、高性能的数据库访问层解决方案,是美团点评内部使用的数据库访问层中间件。具有以下的功能点:
-
配置集中管理,动态刷新;
-
支持读写分离、分库分表;
-
丰富的监控信息在CAT上展现;
-
异步化数据库请求,多数据源支持。
温馨提示:目前Zebra Star数量为2.7k,Fork数量为717。
美团点评(Meituan-Dianping)排名第5 Shield
github上的托管地址为https://github.com/Meituan-Dianping/Shield。
Shield是一个模块化UI界面解决方案,它不仅仅是一个Native(Android&iOS)的UI开发框架,而是美团点评到店综合团队基于自身复杂的业务场景沉淀出来的UI开发最佳实践,它不但具备高可复用性,协同开发等特性,还包括后端动态配置,动态模块等一系列解决方案。
温馨提示:目前Shield Star数量为936,Fork数量为118。
网易,https://github.com/NetEase
网易(NetEase)排名第1 Emmagee
github上的托管地址为https://github.com/NetEase/Emmagee。
Emmagee是一款实用、方便的针对指定Android App的性能测试工具,可以监控CPU、内存、 网络流量、电池电流和状态(不支持某些设备)、新功能,例如最高活动和 root 后的堆大小(< a i=3>Root Toast 可能会持续显示),最新版本也支持。此外,它还提供了一些很酷的功能,例如自定义收集数据的间隔, 在浮动窗口中呈现实时进程状态等等。
温馨提示:目前Emmagee Star数量为2.3k,Fork数量为803。
关于Java开源项目,网易确实没有拿的出手的了,这里就不列举了。
豆瓣,https://github.com/douban
关于Java开源项目,豆瓣确实没有拿的出手的了,这里就不列举了。
Netflix,https://github.com/Netflix
Netflix排名第1 Hystrix
github上的托管地址为https://github.com/Netflix/Hystrix。
Hystrix 是一个延迟和容错库,旨在隔离对远程系统、服务和第三方库的访问点,阻止级联故障,并在故障不可避免的复杂分布式系统中实现恢复能力。
温馨提示:目前Hystrix Star数量为23.7k,Fork数量为4.7k。
Netflix排名第2 conductor
github上的托管地址为https://github.com/Netflix/conductor。
Conductor 是一个微服务编排引擎。
温馨提示:目前Conductor Star数量为13k,Fork数量为2.3k。
Netflix排名第3 zuul
github上的托管地址为https://github.com/Netflix/zuul。
Zuul 是一个 L7 应用程序网关,提供动态路由、监控、弹性、安全性等功能。
温馨提示:目前zuul Star数量为13k,Fork数量为2.3k。
Netflix排名第4 eureka
github上的托管地址为https://github.com/Netflix/eureka。
Eureka 是一项 RESTful(表述性状态传输)服务,主要用于 AWS 云中,目的是 中间层服务器的发现、负载平衡和故障转移。它在 Netflix 中层基础设施中发挥着关键作用。
温馨提示:目前Eureka Star数量为12.1k,Fork数量为3.7k。
Netflix排名第5 SimianArmy
github上的托管地址为https://github.com/Netflix/SimianArmy。
Simian Army 是一套工具,可让您的云保持最佳运行状态 形式。 Chaos Monkey 是第一个成员,它是一个弹性工具,有助于确保 您的应用程序可以容忍随机实例故障。
温馨提示:目前SimianArmy Star数量为8k,Fork数量为1.2k。
Netflix排名第6 ribbon
github上的托管地址为https://github.com/Netflix/ribbon。
Ribbon 是一个客户端 IPC 库,在云中经过了实际测试。它提供以下功能
-
负载均衡;
-
容错能力;
-
异步和反应式模型中的多协议(HTTP、TCP、UDP)支持;
-
缓存和批处理。
温馨提示:目前Ribbon Star数量为4.5k,Fork数量为1.2k。
Netflix排名第7 concurrency-limits
github上的托管地址为https://github.com/Netflix/concurrency-limit。
Java 库实现并集成了从 TCP 拥塞控制到自动检测服务并发限制的概念,以便以最佳延迟实现最佳吞吐量。
在考虑服务可用性时,运营商传统上会考虑 RPS(每秒请求数)。通常执行压力测试以确定服务崩溃时的 RPS。然后将 RPS 限制设置为低于该临界点(例如该值的 75%),并通过令牌桶强制执行。然而,在自动缩放的大型分布式系统中,该值很快就会过时,并且服务会因无法正常卸载多余负载而变得无响应而崩溃。我们不应该考虑 RPS,而应该考虑并发请求,在队列开始建立、延迟增加以及服务最终耗尽资源之前,我们应用排队论来确定服务可以处理的并发请求数。 CPU、内存、磁盘或网络等限制。利特尔定律很好地涵盖了这种关系,其中Limit = Average RPS * Average Latency。
并发限制很容易实施,但很难确定,因为它们需要运营商充分了解运行的硬件服务并协调它们的扩展方式。相反,我们更愿意测量或估计网络中每个点的并发限制。随着系统扩展并达到限制,每个节点将调整并强制执行其本地限制视图。为了估计该限制,我们借鉴了常见的 TCP 拥塞控制算法,将系统的并发限制等同于 TCP 拥塞窗口。
在应用算法之前,我们需要设置一些基本规则。
-
我们承认每个系统都有一个固有的并发限制,该限制由硬资源(例如 CPU 核心数量)决定。
-
我们承认此限制可能会随着系统自动扩展而改变。
-
对于大型复杂的分布式系统来说,不可能知道所有的硬资源。
-
我们可以使用延迟测量来确定何时发生排队。
-
我们可以使用超时和拒绝请求来积极后退。
温馨提示:目前concurrency-limits Star数量为3.1k,Fork数量为297。
Netflix排名第8 archaius
github上的托管地址为https://github.com/Netflix/archaius。
Archaius 是一个用于访问静态混合的配置库 作为单个配置单元的动态配置。
有两个关键概念需要注意:
-
您的代码可以读取的属性。
-
配置将属性组织到可用于引导应用程序的对象中。
温馨提示:目前Archaius Star数量为2.4k,Fork数量为489。
Netflix排名第9 curator
github上的托管地址为https://github.com/Netflix/curator。
Curator 已转移到 Apache。 Netflix Curator 项目将继续保留 Netflix Curator 的扩展,它主要是一个ZooKeeper客户端。
温馨提示:目前Curator Star数量为2.1k,Fork数量为443。
Netflix排名第10 EVCache
github上的托管地址为https://github.com/Netflix/EVCache。
EVCache 是一个 memcached 和基于spymemcached的缓存解决方案,主要用于AWS EC2基础设施缓存常用数据。
EVCache 是以下缩写:
-
短暂的 - 存储的数据的持续时间很短,由其 TTL(生存时间)指定。
-
易失性 - 数据随时可能消失(被驱逐)。
-
缓存 - 内存中的键值存储。
温馨提示:目前EVCache Star数量为1.9k,Fork数量为247。
总之,Netflix明星项目还有很多,依次还有genie、metacat、servo等,这里就不逐一列举啦。
twitter,https://github.com/twitter
twitter排名第1 elephant-bird
github上的托管地址为https://github.com/twitter/elephant-bird。
另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。
https://item.jd.com/14337086.html编辑https://item.jd.com/14337086.html
“RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微服务架构实战派上下册”之后,又一本历时超过1年半的巨无霸技术实战类型的书籍。
为了提高读者阅读本书的体验性,本书总共设计了十个特色,下面我一一的给技术小伙伴阐述一下。
【特色一】由浅到深
本书将RocketMQ的技术原理和最佳实践体系化,按照由浅到深的顺序呈现给读者,使读者可以按照章节顺序按部就班地学习。当学习完全书内容之后,读者不仅能熟悉RocketMQ的核心原理,还能充分理解RocketMQ的“根”。
【特色二】技术新
本书不仅包括RocketMQ4.x(4.9.2版本)的核心原理分析和最佳实践,还包括RocketMQ5.x(5.1. 0版本)的新特性分析和最佳实践。
【特色三】精心设计的主线:零基础入门,循序渐进,直至彻底掌握RocketMQ
本书精心研究了程序类、架构类知识的认知规律,全书共分为6篇:①基础;②进阶;③高级;④高并发、高可用和高性能;⑤应用;⑥新特性,是一条相对科学的主线,让读者快速从“菜鸟”向“RocketMQ分布式架构实战高手”迈进。
【特色四】绘制了大量的图,便于读者理解RocketMQ的原理、架构、流程
一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。
【特色五】从架构师和技术专家的视角分析RocketMQ
本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。
以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。
【特色六】不仅有原理分析,还有大量的实战案例
本书介绍了大量的实战案例,能让读者“动起来”,在实践中体会功能,而不只是一种概念上的理解。
在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的“标准动作”(实例);哪些“标准动作”是可以先完成的,以求读者能快速有一个感知;哪些“标准动作”具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。
本书的目标之一是,让读者在动手中学习,而不是“看书时好像全明白了,一动手却发现什么都不会”。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。
本书相信“知行合一”的理念,而不是“只知,而不行”,避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。
【特色七】深入剖析原理
本书以系统思维的方式,从业务功能视角剖析 RocketMQ 底层的技术原理,使读者具备快速阅读 RocketMQ 框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。
【特色八】从运维的视角分析 RocketMQ 的最佳实践
【特色九】参与开源
本书向读者展示了如何修改 RocketMQ 源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。
【特色十】双色印刷,读者体验会更好
为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。
【推荐】本书的最佳学习路径
为了提高读者学习RocketMQ的效率,我这边结合我自身从RocketMQ小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。
【寄语】作者寄语
RocketMQ是我深度参与研究的一款开源消息中间件,无论是从源码,还是架构场景,我都提炼了很多最佳实践。
在开源领域,技术小伙伴可以使用的开源消息中间件非常的多,比如Kafka、Pulsar等,我之所以选择研究RocketMQ,除了工作内容和角色需要之外,更多的还是自己感兴趣,因此我建议技术小伙伴一定要先培养自己的兴趣,兴趣才是提升技术硬实力的第1要素。
当然我并不止研究了RocketMQ,还研究了Pulsar和Kafka等(包括开源消息中间件生态中的主流框架),只是本书作为一本关于RocketMQ实战派的书籍,我必须要以RocketMQ为主。
假如技术小伙伴想成为Java领域的架构师或者技术专家,我强烈建议你去研究RocketMQ,它会给你带来很多意想不到的技术和架构方法论的收获,这个也是我写本书的主要目的之一。
建议技术小伙伴按照本书设计的学习路线,逐章的去阅读和实战,这样学习效果会更好。
如果技术小伙伴有技术交流的,可以通过博文视点官方的读者群找到我的联系方式,并与我沟通,我会实时的解答读者的疑问。
本文公众号“架构随笔录”
本人视频号“架构随笔录”
【博文视点】2021年度优秀作者
2021年我和博文视点合作了一本技术类型的书籍“Spring Cloud Alibaba微服务架构实战派上下册”,它是我涉足知识输出领域以来的第一本书,同时它也是我自己积累的技术池中部分技术的产出。
为了写好那本书,我几乎花费了所有的休息时间,并主动的承担了书的售后技术辅导和咨询的职责(几乎是有问必答,坚持了整整两年)。
所谓有付出总会有回报,Alibaba这本书的销量还不错,我也因此获得了博文视点颁发的2021年度优秀作者。
我很清楚,这个是博文视点为了鼓励我继续去用心写书,因此我又花了接近1年半的时间去写了RocketMQ消息中间件实战派上下册这本书。
所谓一分耕耘一份收获,我将我对RocketMQ的理解体系化的输出给喜欢技术的技术人,希望真的对大家有帮助。
【博文视点】2023技术成长领路人
2022年,我开始涉足技术直播和技术讲师领域,并和博文视点合作几次技术直播,直播效果还不错,再加上我孜孜不倦的布道“Spring Cloud Alibaba微服务架构实战派上下册”这本书相关的技术,并且这些技术都是有助于“技术人”快速成长的,因此也获得了博文视点颁发的“2023技术成长领路人”这个技术奖项,这个奖项也是为了鼓励我继续通过技术直播的方式给技术人去布道技术,因此只要我有时间,我就会孜孜不倦的去讲和聊技术。
【四维口袋】2022 KVP最具价值技术专家
2022年,我开始涉足企业培训和相关技术直播,并和“四维口袋”合作了几次技术直播,并荣获了2022 KVP最具价值技术专家的技术奖项。