栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

阿里开源的10个推荐项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

阿里开源的10个推荐项目

目录
  • 前言
  • Druid
  • . Rocketmq
  • . Arthas
  • Nacos
  • . easyexcel
  • . Sentinel
      • 丰富的适用场景:
      • 实时监控:
      • 广泛的开源生态系统:
      • 多语言支持:
      • 丰富的SPI扩展:
  • . otter
  • P3C
      • [Mandatory] hashCode 和 equals 的用法应该遵循:
  • . Spring Cloud Alibaba
    • 主要功能:
      • 流量控制和服务降级:
      • 服务注册和发现:
      • 分布式配置:
      • 事件驱动:
      • 分布式事务:
      • 阿里云对象存储:
      • 阿里云SchedulerX:
      • 阿里云短信:
    • 主要包含如下组件:
      • Sentinel:
      • Nacos:
      • RocketMQ:
      • Dubbo:
      • Seata:
      • Alibaba Cloud OSS:
      • Alibaba Cloud SchedulerX:
      • Alibaba Cloud SMS:


前言

这些开源项目都很不错,挺有价值的。

Druid

Druid 自称是 Java 语言中最好的数据库连接池,它能够提供强大的监控和扩展功能。监控后台如下图所示:

Druid 的主要优点如下:

  • 它能监控数据库访问性能。
  • 它提供了 WallFilter,它是基于 SQL 语义分析来实现防御 SQL 注入攻击的。
  • 它提供了多种监测连接泄漏的手段。
  • 它提供了数据库密码加密的功能。
  • 它能打印 SQL 执行日志。

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

配置 maven 依赖:

com.alibaba druid ${druid-version} # fastjson fastjson是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。

fastjson 的主要优点如下:

  • 速度快,fastjson 相对其他 JSON 库的特点是快,从 2011 年 fastjson 发布 1.1.x
    版本之后,其性能从未被其他 Java 实现的 JSON 库超越。
  • 使用广泛,fastjson 在阿里巴巴大规模使用,在数万台服务器上部署,fastjson 在业界被广泛接受。在 2012
    年被开源中国评选为最受欢迎的国产开源软件之一。
  • 使用简单,fastjson 的 API 十分简洁。
//序列化
String text = JSON.toJSONString(obj); 
//反序列化
VO vo = JSON.parseObject("{...}", VO.class); 
  • 功能完备,支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

maven中央仓库: https://mvnrepository.com/artifact/com.alibaba/fastjson

配置 maven 依赖:

com.alibaba fastjson 1.2.76 # Dubbo Apache Dubbo 是一款微服务开发框架,它提供了 RPC 通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。

同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。它目前已交给 Apache 管理和维护。

架构图如下:

Dubbo 的主要优点如下:

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

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

配置 maven 依赖:


    3.0.3



    
        org.apache.dubbo
        dubbo
        ${dubbo.version}
    
    
        org.apache.dubbo
        dubbo-dependencies-zookeeper
        ${dubbo.version}
        pom
    

. Rocketmq

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

它提供了多种功能:

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

rocketmq 后台管理界面:

maven中央仓库: https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter

rocketmq 包含:服务端和客户端,在我们的项目中主要关注客户端的代码即可。

配置 maven 依赖:


    org.apache.rocketmq
    rocketmq-client
    4.3.0

. Arthas

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。

当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:

  • 这个类从哪个 jar 包加载的?
  • 为什么会报各种类相关的 Exception?
  • 我改的代码为什么没有执行到?难道是我没commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到 JVM 的实时运行状态? 怎么快速定位应用的热点,生成火焰图? 怎样直接从 JVM 内查找某个类的实例?

分析代码消耗时间:

Arthas支持 JDK 6+,能够运行在多种操作系统上,比如:Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

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

在目标机器执行如下命令即可启动 arthas:

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

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

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

Nacos 提供的功能。

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

Nacos 地图:

Nacos 生态图:

maven中央仓库: https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery

. 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 模式,在上层做了模型转换的封装,让使用者更加简单方便。

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

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

配置 maven 依赖:


    com.alibaba
    easyexcel
    2.2.6

. Sentinel

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

Sentinel 以“流量”为切入点,在流量控制、 流量整形、熔断、系统自适应保护等多个领域开展工作,保障微服务的可靠性和弹性。

Sentinel 具有以下特点:

丰富的适用场景:

Sentinel 在阿里巴巴得到了广泛的应用,几乎覆盖了近 10 年双11(11.11)购物节的所有核心场景,比如需要限制突发流量的“秒杀”满足系统容量、消息削峰填谷、下游不可靠业务断路、集群流量控制等。

实时监控:

Sentinel 还提供实时监控能力。可以实时查看单台机器的运行时信息,以及 500 个节点以下集群的运行时信息汇总。

广泛的开源生态系统:

Sentinel 提供与 Spring Cloud、Dubbo 和 gRPC 等常用框架和库的开箱即用集成。您只需将适配器依赖项添加到您的服务即可轻松使用 Sentinel。

多语言支持:

Sentinel 为 Java、Go 和 C++ 提供了本机支持。

丰富的SPI扩展:

Sentinel 提供简单易用的 SPI 扩展接口,可以让您快速自定义逻辑,例如自定义规则管理、适配数据源等。
功能概述:

生态系统景观:

maven中央仓库: https://mvnrepository.com/artifact/com.alibaba.csp/sentinel-core

配置 maven 依赖:


    com.alibaba.csp
    sentinel-core
    1.8.2

. otter

阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双 A,两边均可写,由此诞生了 otter 这样一个产品。

otter 第一版本可追溯到 04~05 年,此次外部开源的版本为第 4 版,开发时间从 2011 年 7 月份一直持续到现在,目前阿里巴巴 B2B 内部的本地/异地机房的同步需求基本全上了 otte4。

目前同步规模:

  • 同步数据量 6 亿
  • 文件同步 1.5TB ( 2000w 张图片)
  • 涉及 200+ 个数据库实例之间的同步
  • 80+ 台机器的集群规模

otter 能解决什么?
异构库同步。mysql -> mysql/oracle. (目前开源版本只支持 mysql 增量,目标库可以是 mysql 或者 oracle,取决于 canal 的功能)

单机房同步 (数据库之间 RTT < 1ms)

  • a. 数据库版本升级
  • b. 数据表迁移
  • c. 异步二级索引 异地机房同步 (比如阿里巴巴国际站就是杭州和美国机房的数据库同步,RTT >
    200ms,亮点)
    d. 机房容灾

双向同步

  • a. 避免回环算法 (通用的解决方案,支持大部分关系型数据库)
  • b. 数据一致性算法 (保证双 A 机房模式下,数据保证最终一致性,亮点)

文件同步站点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片).
工作原理图:

单机房复制示意图:

异地机房复制示意图:

maven中央仓库: https://mvnrepository.com/artifact/com.alibaba.otter/canal.client

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 插件的效果:

. 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:

覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
配置 maven 依赖:


    
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            2.2.6.RELEASE
            pom
            import
        
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号