前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐 5 个 YYDS 的 Java 项目

推荐 5 个 YYDS 的 Java 项目

作者头像
Guide哥
发布2022-04-11 17:45:19
7060
发布2022-04-11 17:45:19
举报
文章被收录于专栏:JavaGuideJavaGuide

你好,我是 Guide!这里是 JavaGuide 的「优质开源项目推荐」第 4 期,每一期我都会精选 5 个高质量的 Java 开源项目推荐给大家。

既然立了 Flag ,那就不能说说而已!周末简单把最近遇到的一些优质 Java 开源项目整理了一下 👇。

前 4 期的项目推荐 👉:

今天推荐的 5 个项目是:

  • DolphinScheduler : 分布式易扩展的可视化工作流任务调度平台
  • Jarboot : 可视化 Java 进程管理平台。
  • LogiKM :Kafka 集群运维监控平台
  • mall4cloud :一个高质量的微服务 B2B2C 电商商城系统,基于 Spring Boot + Spring Cloud Alibaba。
  • java-design-patterns :设计模式 Java 版。

DolphinScheduler:分布式易扩展的可视化工作流任务调度平台

DolphinScheduler 是一个基于 Java 语言的分布式易扩展的可视化工作流任务调度平台:

  • 支持单机&集群&Kubernetes 部署;
  • 通过“微内核 + 插件化”架构来提高功能扩展的灵活性和友好性;
  • 可视化拖拽任务即可定制 DAG;
  • 支持多种任务类型:Shell、SQL、Spark、Hive、MapReduce、Python、Flink......;
  • 自带监控中心,支持查看各个服务(Master、Worker、ZooKeeper、DB)的健康状况;
  • ......

如果想要本地体验 DolphinScheduler 功能的话,推荐单机模式,生产环境部署的话不推荐单机模式,因为单机模式下使用 H2 Database 和 Zookeeper Testing Server,仅支持少量的任务量。

DolphinScheduler 采用去中心化的多 Master 和多 Worker 服务对等架构来保证系统运行的高可靠和高性能。

DolphinScheduler 的系统架构如下图所示。

DolphinScheduler系统架构

主要包含下面几个角色:

  • MasterServer :主要负责任务的管理(如 DAG 任务切分、任务提交&监控),同时还会监听其他 MasterServer 和 WorkerServer 的健康状态。
  • WorkerServer :主要负责任务的具体执行工作,俗称打工仔。
  • Registry :注册中心,默认采用的是 ZooKeeper,主要用于提供集群管理和容错、事件监听、分布式锁等功能。

DolphinScheduler 的部署和使用需要依赖 ZooKeeper,因为其使用 ZooKeeper 来做分布式协调。并且,生产环境一般是推荐以集群化部署 ZooKeeper。因此,DolphinScheduler 的部署还是有一些麻烦的。希望后续能够不依赖 ZooKeeper 吧!

2019 年 8 月 29 日,DolphinScheduler 顺利进入 Apache 基金会孵化。2021 年 4 月 8 日,顺利毕业,成为 Apache 顶级项目。并且,在 2021 年的 OSC 中国开源项目评选中,DolphinScheduler 和 Nacos 都被评为了最受欢迎的国产项目。

2021 年 OSC 最受欢迎的国产开源项目

  • Github:https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/zh-cn/index.html

Jarboot:可视化 Java 进程管理平台

Jarboot 是一款对业务代码无侵入的可视化 Java 进程管理平台,支持 Java 进程启停、诊断、监控。

Jarboot 具体的技术原理是通过 JavaAgent + ASM 来往目标 Java 进程注入代码:

  • JavaAgent 可以在加载 Java 文件之前对字节码进行修改,也可以在运行期间对已经加载的类的字节码进行修改。
  • ASM 是一个 Java 字节码操作框架,可以帮助我们操作 Java 字节码。

市面上绝大部分的 Java 诊断/分析工具的原理都类似,只是具体使用的字节码操作框架的不一样。

Jarboot 基于 React(前端,) + SpringBoot(后端),通过 WebSocket 向前端界面实时推送进程的相关信息。

类似于 Arthas,Jarboot 也提供了一些开箱即用的命令(如获取 JVM 信息、 监控线程状态、获取线程栈信息等),并且,你还可以通过 SPI 扩展(支持 JDK 和 Spring 的 SPI)机制来实现自己的命令。

  • Gitee 地址:https://gitee.com/majz0908/jarboot
  • 文档:https://www.yuque.com/jarboot

LogiKM:Kafka 集群运维监控平台

LogiKM 是滴滴开源的一款一站式 Apache Kafka 集群指标监控与运维管控平台,具备 Kafka 运维管控、监控告警、资源治理等功能。

根据官方 README 介绍,LogiKM 在滴滴内部经历了大规模集群、海量大数据的考验。

不过,只有你使用的 Kafka 依赖 Zookeeper 才能使用 LogiKM。如果你使用的是 2.8 版本之后的 Kafka,不需要 Zookeeper 就能使用 Kafka 绝大部分功能。

  • Github 地址:https://github.com/didi/LogiKM
  • 体验地址:http://117.51.150.133:8080 (admin/admin)

mall4cloud:微服务商城系统

mall4cloud 是一个高质量的微服务 B2B2C 电商商城系统。

mall4cloud-web

开源的商城项目已经有非常多了,mall4cloud 这个项目我觉得有下面这些亮点:

  • 技术栈主流 :Spring Boot + Spring Cloud Alibaba;
  • 代码质量相对较高 :完全准守阿里巴巴代码规约;
  • 功能完善 :除了具备商城最基本的功能之外,还自带丰富的营销工具。

不过,比较遗憾的是这个商城项目的 Web 端的话暂未开源。

  • Github 地址:https://github.com/gz-yami/mall4cloud
  • Gitee 地址:https://gitee.com/gz-yami/mall4cloud
  • 官网:https://www.mall4j.com

相关文章推荐:这个 SpringBoot 电商系统值得推荐!

java-design-patterns:设计模式 Java 版

java-design-patterns 这个项目总结了一些常见的设计模式以及软件设计原则,并提供了详细的解释以及示例代码。

这个项目是我见过质量最高,最全面的设计模式总结。目前的话,这个项目目前一共总结了 :

  • 148 个软件开发常用的设计模式比如责任链模式(Chain of responsibility)、工厂模式(Factory)、代理模式(Proxy)、CQRS、API Gateway、线程池(Thread Pool);
  • 26 个软件设计原则比如 SOLID(Single Responsibility Principle(单一职责原则)、Open/Closed Principle(开闭原则)、Liskov Substitution Principle(里式替换原则)、Interface Segregation Principle(接口隔离原则)、Inversion of Control(控制反转))、KISS 、YAGNI。

java-design-patterns-principles

java-design-patterns-patterns

对于每一种设计模式,这个项目还对其进行了分类:

  • 创建型模式(Creational)
  • 结构型模式(Structural)
  • 行为型模式(Behavioral)
  • 并发(Concurrency)
  • ......

除了分类之外,我觉得对于我们寻找适合自己使用的设计模式更有用的是标签:

  • 数据访问(Data access)
  • 扩展性(Extensibility)
  • 微服务(Microservices)
  • 解耦(Decoupling)
  • 测试(Testing)
  • ......

java-design-patterns-categories

对于每一种设计模式,这个项目都提供了具体的解释、示例代码、类图、相关设计模式、适用场景、教程以及书籍。

下图是这个项目对业务代表模式(Business Delegate Pattern)的介绍:

关于为什么要学习设计模式,我之前写过这样一段话:

软件开发中有一个概念叫做“软件复用”。简单来说,软件复用就是我们在构建一个新的软件的时候,不需要从零开始,通过复用已有的一些轮子(框架、第三方库等)、设计模式、设计原则等等现成的物料,我们可以更快地构建出一个满足要求的软件。 软件复用需要设计模式的帮助。因为,在软件开发中,设计模式可以通过封装变化来提高代码的可扩展性和可维护性!

这段话也是我之前写给小傅哥的《重学 Java 设计模式》这本书的推荐语中的一小部分。

  • Github 地址:https://github.com/iluwatar/java-design-patterns
  • 在线网站:https://java-design-patterns.com/

·········· END ··············

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaGuide 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DolphinScheduler:分布式易扩展的可视化工作流任务调度平台
  • Jarboot:可视化 Java 进程管理平台
  • LogiKM:Kafka 集群运维监控平台
  • mall4cloud:微服务商城系统
  • java-design-patterns:设计模式 Java 版
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档