阿里云开源项目,阿里开源架构

前言最近趁着国庆节放假休息,特地整理了一下,阿里巴巴开源的10款神级项目。这些开源项目中的绝大多数,我都在实际工作中用过,或者有同事用过。确实挺不错,挺有价值的

前言

最近利用国庆假期整理了阿里巴巴的10个大神级开源项目。

我在工作中使用过这些开源项目,或者有同事使用过它们。真的很好很值得,所以现在推荐给大家。

1. Druid

Druid号称是Java语言中最好的数据库连接池,可以提供强大的监控和扩展能力。监控背景如下图所示。

ea44979b45864035843391dcfeafdd07~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=V0QFHy2ctN6oO6nYlqXClyJgjmU%3D

Druid的主要优点是:

您可以监控数据库访问性能。提供基于SQL语义分析的WallFilter,防止SQL注入攻击。提供多种方式来监控连接泄漏。提供数据库密码加密功能。可以输出SQL执行日志。 github地址: https://github.com/alibaba/druid

Maven中央仓库: https://mvnrepository.com/artifact/com.alibaba/druid

配置Maven 依赖项。

dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion${druid-version}/version/dependency

2. fastjson

fastjson是阿里巴巴开源的JSON解析库,可以解析JSON格式字符串,也可以将Java bean序列化为JSON字符串。从JSON 字符串到JavaBean。

fastjson的主要优点是:

与其他JSON 库相比,Fastjson 速度更快。自2011 年fastjson 发布1.1.x 版本以来,其性能从未超过任何其他用Java 实现的JSON 库。 fastjson应用广泛,在阿里巴巴大规模使用,并被业界广泛接受。 2012年被开源中国评选为最受欢迎的国产开源软件之一。易于使用,fastjson的API非常简单。 //序列化String text=JSON.toJSONString(obj); //反序列化VO vo=JSON.parseObject(‘{.}’, VO.class); 功能齐全,泛型支持,超大流处理支持。支持枚举并支持序列化和反序列化扩展。 github地址: https://github.com/alibaba/fastjson

Maven 中央存储库: https://mvnrepository.com/artifact/com.alibaba/fastjson

配置Maven 依赖项。

dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.2.76/version/dependency

3. Dubbo

Apache Dubbo 是一个微服务开发框架,提供两个主要功能:RPC 通信和微服务治理。这意味着使用Dubbo开发的微服务具有远程发现和相互通信的能力。同时,您可以利用Dubbo提供的丰富的服务治理功能来满足您的服务发现、负载均衡、流量调度等服务治理需求。

同时,Dubbo 具有高度可扩展性,允许用户在几乎每个功能点上定制自己的实现,并更改框架的默认行为以适应自己的业务需求。目前由Apache 管理和维护。

架构图如下:

92b1085ffc114d84943f40738d9c1ea4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=8jx1YcR0NcBVQgOwxsfMQcCrcTU%3D

Dubbo的主要好处是:

基于透明接口的RPC 智能负载均衡自动服务注册和发现高可扩展性运行时流量路由可视化服务治理云原生友好github地址: https://github.com/apache/dubbo

Maven中央仓库: https://mvnrepository.com/artifact/com.alibaba/dubbo/

配置Maven 依赖项。

属性dubbo.version3.0.3/dubbo.version/propertiesdependency 依赖关系groupIdorg.apache.dubbo/groupId artifactIddubbo/artifactId version${dubbo.version}/version /dependency 依赖关系groupIdorg.apache.dubbo/groupId artifactIddubbo-dependency-zookeeper/artifactId version ${dubbo.version}/version typepom/type /dependency/dependency

4. Rocketmq

Apache RocketMQ是一个分布式消息和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和弹性可扩展性。

提供各种功能。

消息传递模式,例如发布/订阅、请求/回复和流式传输金融级交易消息基于DLedger 客户端插件的内置容错和高可用性配置选项,跨多种语言,包括Java、C/C++、Python 和Go支持传输协议TCP、SSL 和AIO 内置消息追踪,还支持opentracing 多功能大数据和流生态系统集成的按时间或偏移量的消息可追溯性可靠的FIFO 和有序消息传递高效的拉/推消费模型单队列百万级消息存储多个JMS、OpenMessaging 等消息协议灵活的分布式横向扩展部署架构超快的批量消息交换系统SQL、标签等多种消息过滤机制用于隔离测试和云隔离集群的Docker 镜像功能丰富的配置、指标和管理仪表板监控身份验证和授权用于源和接收器的免费开源连接器RocketMQ 后端管理接口:

eb112f65e3d546e186c6ed3204b2a99c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=gOBjMRVFnl6wV1AaJvVJ%2FOKX43U%3D

github地址: https://github.com/apache/rocketmq

Maven 中央存储库: https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter

RocketMQ 包括服务器和客户端。该项目将主要关注客户端代码。

配置Maven 依赖项。

dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId version4.3.0/version/dependency

4. Arthas

Arthas 是阿里巴巴开源的Java 诊断工具,深受开发者欢迎。

如果您被以下类似问题所困扰,阿尔萨斯可以帮助您解决它们。

这个类是从哪个jar包加载的?为什么会报不同类型的异常?为什么我修改后的代码没有运行?可能是我没有提交?错误的分支?如果我出现问题,无法在线调试,我唯一能做的就是添加日志并重新发布吗?在线用户数据处理有问题,但无法在线调试,可以吗?不要离线复制它。有没有办法实时监控JVM 执行状态并生成火焰图? 如何直接从中找到某个类的实例所花费的时间?分析代码:

9b327086bd434ec59203356b376719bb~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=tn%2Fu0UQCKSxknYacO7VD5lZLkJQ%3D

Arthas支持JDK 6+,可以运行在Linux/Mac/Windows等多种操作系统上。它采用命令行交互模式,并提供丰富的选项卡自动完成功能,使问题识别和诊断更加容易。

github地址: https://alibaba.github.io/arthas/

Maven中央仓库: https://mvnrepository.com/artifact/com.taabao.arthas/arthas-spring-boot-starter

通过在目标机器上运行以下命令来启动arthas:

curl -O https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jar

5. Nacos

Nacos 是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。帮助您轻松构建云原生应用和微服务平台。

服务是Nacos的一等公民。 Nacos支持几乎所有类型的服务,包括Dubbo/gRPC服务、Spring Cloud RESTFul服务、Kubernetes服务。

Nacos 提供四个主要功能。

服务发现和服务健康检查。 Nacos 可以轻松地注册服务本身并通过DNS 或HTTP 接口发现其他服务。 Nacos还为服务提供实时健康检查,以防止请求发送到不健康的主机或服务实例。动态配置管理。动态配置服务允许您集中、动态地管理所有环境中所有服务的配置。 Nacos 无需在更新配置时重新部署应用和服务,使配置变更更加高效、敏捷。动态DNS 服务。 Nacos支持加权路由,可以在数据中心内的生产环境中轻松实现中间层负载均衡、灵活的路由策略、流量控制和简单的DNS解析服务。这使得实现基于DNS 的服务发现变得容易,并防止应用程序绑定到特定于供应商的服务发现API。服务和元数据管理。 Nacos 提供了易于使用的服务仪表板,帮助您管理服务元数据、配置、Kubernetes DNS、服务运行状况和指标统计。纳科斯地图:

541515de235e422b9b16d288775d5452~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=Ul12H3Pxc4LQundf%2B4Q89dm7BfM%3D

纳科斯生态图:

6acd8f68e6794405b34a561c0bf8776f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=0hy%2FIPylBaC2CgsD%2BJyxhV29Z5g%3D

github地址: https://github.com/alibaba/nacos

Maven 中央存储库: https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery

6. easyexcel

一些更流行的Java 解析和Excel 生成框架包括Apache poi 和jxl。然而,它们都存在消耗大量内存的严重问题。虽然POI有一套SAX模式的API可以在一定程度上解决内存溢出问题,但是POI仍然存在一些缺陷,比如在解压和保存文件时。 07版本的Excel是在内存中运行的,所以内存消耗还是很高的。

easyexcel针对07版Excel重写了poi分析。 3M Excel 需要大约100M 内存才能使用POI sax 进行解析。使用easyexcel,无论Excel有多大,您都会耗尽内存。 Overflow;03版本依赖于POI的Sax模式,将模型转换封装在上层,让用户使用起来更简单、更方便。

1分钟从64M内存读取75M(46W行,25列)Excel

d8ad84c99ab644d7a0045980651cb03d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=0Uh452cl9pwwTDMq2h0J%2B2cWtI8%3D

github地址: https://github.com/alibaba/easyexcel

Maven中央仓库: https://mvnrepository.com/artifact/com.alibaba/easyexcel

配置Maven 依赖项。

dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version2.2.6/version/dependency

7. Sentinel

随着分布式系统变得越来越普遍,服务之间的可靠性比以往任何时候都更加重要。

Sentinel以“流量”为切入点,从流控、流量整形、融合、系统自适应保护等多个方面进行工作,保证微服务的可靠性和弹性。

哨兵具有以下特点:

适用场景丰富:Sentinel在阿里巴巴的应用非常广泛,比如“闪购”这种需要限制突发流量以满足系统容量和消息的情况,在过去十年的双11(11.11)购物节期间几乎覆盖了所有主要场景。削峰填谷、断开下游不可靠服务、集群流量控制等。实时监控:Sentinel还提供实时监控功能。您可以实时查看单机的运行时信息,也可以查看500个节点以下集群的运行时信息汇总。广泛的开源生态系统:Sentinel 提供与Spring Cloud、Dubbo 和gRPC 等流行框架和库的开箱即用集成。使用Sentinel 就像向您的服务添加适配器依赖项一样简单。多语言支持:Sentinel 提供对Java、Go 和C++ 的本机支持。丰富的SPI扩展:Sentinel提供了简单易用的SPI扩展接口,可以让您快速定制逻辑,如自定义规则管理、适配数据源等。功能概述:

9edd67c8ff8e46bfbfbfd273cdb6552d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=GI2LZBaEonKDWZLqWNoex9%2BgRRA%3D

生态系统景观:

3db673c5dc614295b36025bc71f094f4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=wTWPt397Go%2BCHnKmQWWRANPKMTE%3D

github地址: https://github.com/alibaba/Sentinel

Maven 中央存储库: https://mvnrepository.com/artifact/com.alibaba.csp/sentinel-core

配置Maven 依赖项。

dependency groupIdcom.alibaba.csp/groupId artifactIdsentinel-core/artifactId version1.8.2/version/dependency

8. otter

在阿里巴巴B2B公司中,由于业务特点,卖家主要集中在国内,买家主要集中在海外,因此,为了满足杭州和美国远程机房的需求,提高用户体验,整个机房的结构为双面可写的双A。就像一只水獭诞生了。

otter 的第一个版本可以追溯到2004-2005 年。这个外部开源版本是版本4。开发周期从2011年7月至今,需要阿里巴巴内部本地/异地机房同步。 B2B基本是用otte4完成的。

当前同步比例:

同步的数据量为6 亿,文件同步量为1.5 TB(2000 万张照片),其中包括200 多个数据库实例和80 多台机器的集群之间的同步。

不同库的同步。 mysql – mysql/oracle(当前开源版本仅支持mysql增量。目标库可以是mysql或oracle,具体取决于CA。

nal的功能)单机房同步 (数据库之间RTT < 1ms)a. 数据库版本升级b. 数据表迁移c. 异步二级索引异地机房同步 (比如阿里巴巴国际站就是杭州和美国机房的数据库同步,RTT > 200ms,亮点)a. 机房容灾双向同步a. 避免回环算法 (通用的解决方案,支持大部分关系型数据库)b. 数据一致性算法 (保证双A机房模式下,数据保证最终一致性,亮点)文件同步站点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片).工作原理图:
fe431fc50f83456da4a6dc78abfd0b47~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=BBLQY8oydh9C%2BwBg5LAqflFhiGk%3D
单机房复制示意图:
a6e15a6ef68e4a2290ca28a9c74a3bd1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=oyVL96tpAk48QnYf1fqyyXjEZcE%3D
异地机房复制示意图:
eebca80727804fdea7a868b2357679fa~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=4Eqkga%2FK8EPgQ5QXCuMDHXi2om0%3D
github地址: https://github.com/alibaba/otter
maven中央仓库: https://mvnrepository.com/artifact/com.alibaba.otter/canal.client

9. P3C

P3C插件呈现了阿里巴巴 Java 编码指南,它整合了阿里巴巴集团技术团队多年来的最佳编程实践。由于我们鼓励重用和更好地理解彼此的程序,因此大量 Java 编程团队对跨项目的代码质量提出了苛刻的要求。
阿里巴巴过去见过很多编程问题。例如,有缺陷的数据库表结构和索引设计可能会导致软件架构缺陷和性能风险。另一个例子是混乱的代码结构难以维护。此外,未经身份验证的易受攻击的代码容易受到黑客的攻击。为了解决这些问题,我们为阿里巴巴的Java开发人员编写了这份文档。
更多信息请参考阿里巴巴Java编码指南:
中文版:阿里巴巴Java开发手册英文版:Alibaba Java Coding Guidelines该项目由3部分组成:
PMD 实现IntelliJ IDEA 插件Eclipse 插件四十九条规则是基于PMD实现的,更多详细信息请参考P3C-PMD文档。IDE 插件(IDEA 和 Eclipse)中实现的四个规则如下:
[Mandatory]禁止使用已弃用的类或方法。注意:例如,应该使用 decode(String source, String encode) 而不是不推荐使用的方法 decode(String encodeStr)。一旦接口被弃用,接口提供者就有义务提供一个新的接口。同时,客户端程序员有义务检查它的新实现是什么。[Mandatory]来自接口或抽象类的重写方法必须用 @Override 注释标记。反例:对于 getObject() 和 get0bject(),第一个是字母“O”,第二个是数字“0”。为了准确判断覆盖是否成功,需要一个@Override注解。同时,一旦抽象类中的方法签名发生变化,实现类将立即报告编译时错误。[Mandatory] 静态字段或方法应直接通过其类名而不是其对应的对象名来引用。[Mandatory] hashCode 和 equals 的用法应该遵循:如果 equals 被覆盖,则覆盖 hashCode。这两个方法必须为 Set 重写,因为它们用于确保不会在 Set 中插入重复的对象。如果使用自定义对象作为 Map 的键,则必须覆盖这两个方法。注意:String 可以用作 Map 的键,因为这两个方法已经被重写。使用p3c插件的效果:
d0860f40b1dd4a5693879cdb6d92e12a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717745321&x-signature=lHnC%2F7Mlp0bxtmnWXS4vhyVbE8E%3D
最新版阿里巴巴Java开发手册下载地址:https://github.com/alibaba/p3c/blob/master/Java开发手册(嵩山版).pdf
github地址:https://github.com/alibaba/p3c/tree/master/idea-plugin

10. Spring Cloud Alibaba

Spring Cloud Alibaba 为分布式应用开发提供一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用 Spring Cloud 开发应用程序。
使用Spring Cloud Alibaba,您只需添加一些注解和少量配置,即可将Spring Cloud应用连接到阿里巴巴的分布式解决方案,并通过阿里巴巴中间件构建分布式应用系统。
主要功能如下:
流量控制和服务降级:默认支持 HTTP 服务的流量控制。您还可以使用注释自定义流量控制和服务降级规则。规则可以动态更改。服务注册和发现:可以注册服务,客户端可以使用 Spring 管理的 bean,自动集成 Ribbon 来发现实例。分布式配置:支持分布式系统中的外化配置,配置变化时自动刷新。事件驱动:支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。分布式事务:支持高性能、易用的分布式事务解决方案。阿里云对象存储:海量、安全、低成本、高可靠的云存储服务。支持随时随地在任何应用程序中存储和访问任何类型的数据。阿里云SchedulerX:精准、高可靠、高可用的定时作业调度服务,响应时间秒级。阿里云短信:覆盖全球的短信服务,阿里短信提供便捷、高效、智能的通讯能力,帮助企业快速联系客户。主要包含如下组件:
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。github地址: https://github.com/alibaba/spring-cloud-alibaba
配置maven依赖:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>原文链接:https://www.cnblogs.com/12lisu/p/15370694.html侵权联系删除

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/82344.html

(0)
小条的头像小条
上一篇 2024年5月31日 下午3:28
下一篇 2024年5月31日 下午3:28

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注