赞
踩
上个周末抽时间整理了一些阿里开源的一些 Java 开源项目,希望对大家有帮助!
这篇文章收录的所有开源项目都是还在继续维护并且可以使用的。
虽然有部分项目不是那么”完美“,但是依然非常值得我们学习。
感谢阿里技术团队的小伙伴们为 Java 开源生态做的贡献!
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。 这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
我们先看官网的介绍
Canal[kə'næl] 翻译过来是水道/管道/沟渠的意思,主要用于基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
Canal 可以帮助我们实现 MySQL 和其他数据源比如 Elasticsearch、Kafka、RocketMQ 或者另外一台 MySQL 数据库之间的数据同步。
Canal 的底层原理依赖 binlog,它会模拟 MySQL 主从复制的过程,解析 binlog 将数据同步到其他的数据源。
MySQL binlog(binary log 即二进制日志文件) 主要记录了 MySQL 数据库中数据的所有变化(数据库执行的所有 DDL 和 DML 语句)。
因此,我们根据主库的 MySQL binlog 日志就能够将主库的数据同步到从库中。
更具体和详细的过程是这个样子的
MySQL主从复制
主库将数据库中数据的变化写入到 binlog
从库连接主库
从库会创建一个 I/O 线程向主库请求更新的 binlog
主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收
从库的 I/O 线程将接收的 binlog 写入到 relay log 中。
从库的 SQL 线程读取 relay log 同步数据本地(也就是再执行一遍 SQL )
Wiki : https://github.com/alibaba/canal/wiki
Github :https://github.com/alibaba/canal
Java 解析、生成 Excel 常用的框架有 Apache poi、jxl ,但是这两个框架使用起来都不够优雅,并且非常耗内存,严重时会导致内存溢出。
怎么解决这个问题呢?
推荐你使用阿里开源的 EasyExcel。
正如这个项目官网介绍的那样,这是一款快速、简单避免 OOM 的 java 处理 Excel 工具。
官方是这样介绍 EasyExcel的:
官方文档 :https://www.yuque.com/easyexcel
Github :https://github.com/alibaba/easyexcel
Arthas 是阿里开源的一个 Java 诊断工具,能够分析、诊断、定位 Java 应用问题。
Arthas能帮我们解决的一些问题
Arthas 把一些常用的 Java 诊断相关的功能封装起来了,提供简单的命令行操作,功能强大。
Arthas 底层用到了字节码编程相关的技术,简单看了一下源码,应该是基于 ByteBuddy。
ByteBuddy 是一款强大的 Java 字节码增强框架,它提供了一套统一易上手的 Api,简化了字节码编码的学习和使用难度。
Byte Buddy 成熟稳定,性能也还不错。
像咱们平常经常使用 Mockito,Hibernate,Jackson 等知名框架都使用了 Byte Buddy。
Arthas 提供了详细的在线教程供我们学习,非常赞!
在线教程地址:https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn
官网 :https://arthas.aliyun.com/zh-cn/
Github :https://github.com/alibaba/arthas
FastJson 是阿里的开源一个 JSON 解析库,其底层使用了 ASM 来动态生成类。Fastjson 的速度非常快,不过,快的同时也带来一些潜在的安全问题。
FastJson 几乎是作者温少大佬一个人开发和维护的,真心厉害!佩服!
看到网上有很多人诟病 Fastjson 的漏洞问题,都是做技术的,希望大家也多给予一些理解吧!
Wiki :https://github.com/alibaba/druid/wiki/常见问题[2]
Github : https://github.com/alibaba/fastjson
Druid 是阿里巴巴开发的号称为监控而生的数据库连接池。Druid号称是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
Github 地址:https://github.com/alibaba/druid 。
Sentinel 是阿里巴巴体提供的面向分布式服务架构的流量控制组件,主要以流量为切入点,提供 流量控制、熔断降级、系统自适应保护等功能来保护系统的稳定性和可用性。
官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html[3]
Github :https://github.com/alibaba/Sentinel
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
这里简单对 Nacos 官网对 Nacos 的介绍总结了一下:
Nacos 主要用于发现、配置和管理微服务:Nacos 是 Spring Cloud Alibaba 提供的服务注册发现组件,类似于 Consul、Eureka。并且,提供了分布式配置管理功能。
Nacos 名字的含义 :Na 即是 Naming(注册中心),co 即是 Configuration(配置管理),最后的 s 即是 Service。
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。 这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
Nacos 的关键特性包括:
服务发现和服务健康监测
动态配置服务 :提供能很多开箱即用的配置管理特性比如一键回滚配置、版本跟踪、金丝雀发布等等。并且,内置了简洁易用的 UI。
动态 DNS 服务 :动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。
服务及其元数据管理......
Nacos 生态图如下,可以看出 Nacos 无缝支持一些主流的开源生态如 Spring Cloud、Dubbo、K8S 等等。
官网:https://nacos.io/zh-cn/index.html
Github:https://github.com/alibaba/nacos
RocketMQ 是一款高性能、高可靠、高实时、分布式的消息队列,由阿里巴巴团队开发,在 2016 年底贡献给 Apache 并且顺利成为了 Apache 的一个顶级项目。
如上图,RocketMQ主要由 Producer生产者、Consumer消费者、Broker代理、NameServer名称服务器 四部分组成。
生产者(Producer)
负责发布消息,支持集群部署。Producer通过负载均衡选择Broker集群队列进行消息投递。
消费者(Consumer)
负责消费消息,支持集群部署。支持以push推,pull拉两种模式对消息进行消费。群组消费支持:集群方式和广播方式(见2.3)。
代理服务器(Broker Server)
消息中转角色,负责存储消息、转发消息。主要包含2个功能:
1、接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。
2、存储消息相关的元数据:消费者组consumer Group、消费进度偏移offset、主题Topic、队列消息Message Queue等。
名字服务(Name Server)
Name Server是Topic路由的注册中心,支持Broker的动态注册与发现。
生产者或消费者能够通过名字服务查找各主题相应的Broker IP列表。多个Namesrv实例组成集群,无状态(每个实例数据一样)。
官网 :https://rocketmq.apache.org/
Github :https://github.com/apache/rocketmq
Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java RPC 框架。
根据 Dubbo 官方文档的介绍,Dubbo 提供了六大核心能力
面向接口代理的高性能 RPC 调用。
智能容错和负载均衡。
服务自动注册和发现。
高度可扩展能力。
运行期流量调度。
可视化的服务治理与运维。
Dubbo提供的六大核心能力
简单来说就是:Dubbo 不光可以帮助我们调用远程服务,还提供了一些其他开箱即用的功能比如智能负载均衡。
相关阅读:1w+字的 Dubbo 面试题/知识点总结!(2024 最新版) 。
官方文档:https://dubbo.apache.org/zh/
Github :https://github.com/apache/dubbo
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。 这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
数据库事务可以保证多个对数据库的操作(也就是 SQL 语句)构成一个逻辑上的整体。
构成这个逻辑上的整体的这些数据库操作遵循:要么全部执行成功,要么全部不执行 。
但是,微服务架构下,一个系统被拆分为多个小的微服务。
每个微服务都可能存在不同的机器上,并且每个微服务可能都有一个单独的数据库供自己使用。
这种情况下,一组操作可能会涉及到多个微服务以及多个数据库。
这个时候单单依靠数据库事务就不行了!我们就需要引入 分布式事务 这个概念了!
实际上,除了我们上面提到的 服务拆分(微服务) 的场景,像 数据库水平拆分(分库分表) 这种场景的话也是需要引入分布式事务的。
一言蔽之,分布式事务的终极目标就是保证系统中多个数据库中的数据的一致性!
分布式事务的解决方案有很多,比如:2PC、3PC、TCC、本地消息表、MQ 事务、Saga 等等。
官网 :http://seata.io/zh-cn/
Github :https://github.com/seata/seata
P3C 项目包含了阿里巴巴 Java 开发手册(整合了阿里巴巴技术团队多年来的最佳编程实践)以及配套的 IDE 插件。
P3C-PMD :https://github.com/alibaba/p3c/tree/master/p3c-pmd
IDEA 插件 :https://github.com/alibaba/p3c/tree/master/idea-plugin
Eclipse 插件 :https://github.com/alibaba/p3c/tree/master/eclipse-plugin
这里我们以 IDEA 插件为例。
对应的 IDEA 插件名称是 Alibaba Java Code Guidelines。
安装完成之后建议将与语言替换成中文,提示更加友好一点。
根据官方描述:
目前这个插件实现了开发手册中的的 53 条规则,大部分基于 PMD 实现,其中有 4 条规则基于 IDEA 实现,并且基于 IDEA Inspection 实现了实时检测功能。部分规则实现了 Quick Fix 功能,对于可以提供 Quick Fix 但没有提供的,我们会尽快实现,也欢迎有兴趣的同学加入进来一起努力。目前插件检测有两种模式:实时检测、手动触发。 你还可以手动配置相关 inspection 规则:
这个插件会实时检测出我们的代码不匹配它的规则的地方,并且会给出修改建议。比如我们按照下面的方式去创建线程池的话,这个插件就会帮我们检测出来,如下图所示。
Alink 是基于 Flink 的通用算法平台,由阿里巴巴计算平台 PAI 团队研发。Alink 已在阿里巴巴内部支持了众多的应用场景,并在 2019 年 11 月的 Flink Forward Asia 大会上宣布开源。
Alink 提供了一系列算法,可以帮助处理各种机器学习任务比如模型选择和调参、个性化推荐、异常检测。
Alink 覆盖了机器学习核心的三类算法:分类算法、聚类算法、回归算法。并且,还包括联规则和协同过滤算法、相似度算法等数据挖掘方面算法。
Github :https://github.com/alibaba/Alink
官方文档 :https://www.yuque.com/pinshu/alink_doc
使用指南:https://www.yuque.com/pinshu/alink_guide
Alink 插件下载器 :https://www.yuque.com/pinshu/alink_guide/czg4cx
COLA 是 Clean Object-Oriented and Layered Architecture 的缩写,代表“整洁面向对象分层架构”。
简单点来说就是,COLA 可以帮助开发人员快速实践 DDD 落地的项目架构。
Github : https://github.com/alibaba/COLA 。
一款特立独行的轻量Mock工具
一款极简风格的 Mock 测试工具。
无需初始化,不挑服务框架,甭管要换的是私有方法、静态方法、构造方法还是其他任何类的任何方法,也甭管要换的对象是怎么创建的。
写好 Mock 定义,加个@MockMethod注解,一切统统搞定。
Github : https://github.com/alibaba/testable-mock
文档 :https://alibaba.github.io/testable-mock/
国内文档镜像 :http://freyrlin.gitee.io/testable-mock/
一个非常轻量、高性能、可集成、可扩展的流程引擎,淘宝工作流TBBPM引擎之一。
Compileflow 专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。
Github :https://github.com/alibaba/compileflow
官方 Demo : https://github.com/compileflow/compileflow-demo
基于 IntelliJ IDEA 流程可视化插件 : https://github.com/alibaba/compileflow-idea-designer
至此,阿里开源的15个顶级Java项目就介绍完了,你的公司系统中使用过几个?欢迎在评论区留言。
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。 这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。