开源项目基线

January 12, 2024

下面列出的开源项目是中间件技术相关的,永源中间件进行开源追踪和提供技术服务。 每个产品或者项目当前的发布的主要版本,作为基准版本。

跟踪社区开发进度,有完备的文档说明,定期发布产品简报,提供重要安全补丁说明。 目前有中间件、开发框架、Java语言、容器和容器编排、操作系统、数据处理等类别。

中间件

Wildfly

是完整通过 Jakarta EE 技术认证的应用服务器,它提供了运行 Java Web 应用程序所需的所有功能。

WildFly 由 Red Hat 设计和维护。前身是JBoss AS,从V8开始为区别于JBoss EAP商业产品,更名为WildFly。 即 Wildfly 是JBoss EAP的上游开源项目。

Wildfly(JBossAS)前后经历了3次重大的体系架构变化,目前的架构开始于JBoss AS 7版本,对应于EAP 6 大版本。 从Wildfly 9开始,社区版本演进采用快速迭代方式,每个季度发布一个版本。 当前版本为2023年10月发布的V30。

网址链接为:

Tomcat

Tomcat 是广泛采用的 Web 容器,是 Apache 软件基金会顶级项目。 早期的名称为Catalina,是 Jakarta 项目中的一个核心项目,后来更名为Tomcat。

根据实现 Java EE / Jakarta EE 版本的不同,当前Tomcat维护着三个大版本v8-v10相对应,同时还开发新的大版本v11。

  • Tomcat v9.x Java EE 8
  • Tomcat v10.x Jakarta EE 10
  • Tomcat v8.x Java EE 7
  • Tomcat v11.x Jakarta EE 11 开发中

Tomcat采取经典的每请求对应线程的服务器处理模式,提供高效可靠的服务能力。Spring Boot中默认使用嵌入版的Tomcat作为Web容器。

当前主要版本为不断维护的版本 v9.0.x 和 v10.1.x

网址为: Tomcat

Kafka

Kafka 是一个分布式消息中间件,最初由 LinkedIn 公司开发,用作的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础软件设施。后来核心开发人员成立商业公司 Confluent 提供Kafka技术商业服务。Kafka 现在作为消息系统和多种类型的数据管道被广泛使用。

Kafka 社区版是Apache开源组织的顶级项目,多家公司基于Kafka上游,提供商业实现产品

Kafka 使用Scala语言开发核心系统,运行在JVM平台上。提供多个层次的消息访问接口。

Kafka 具备丰富完整的技术生态,Kafka Connect提供多种系统的集成能力,Kafka Stream提供强大的流式处理。

Kafka 社区版采用经典的大小版本号的产品发布方式,如v3.x.y。

当前版本为2023年10月发布的v3.6.0

网址链接为:

Redis

Redis,是REmote DIctionary Server的缩写。 是一个开源的 key-value 存储系统,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理等。

使用 C 语言编写、遵守 BSD 开源协议,支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglog等数据类型。 提供内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化等功能。 集群特性,通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区等高级功能。

特点:

  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis的所有操作都是原子性的,要么成功执行要么失败完全不执行。单个操作是原子性的,多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 支持消息 publish/subscribe, 通知, key 过期等等特性。

版本发布采用经典 x.y.z 版本号,如 v7.2.1。 次版本沿用Linux社区习惯,偶数为稳定版,奇数为开发版。

当前的稳定版本是 v7.2

网址为: Redis

Nginx

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署。 可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

高性能是 Nginx 最重要的特点,占用内存少、并发能力强、支持高并发连接数。

Nginx 社区版是完全开源免费的,也是商业版 Nginx Plus 的开源上游。

Nginx 特点:

  • 高并发性、高性能
  • 模块化架构使得扩展性非常好
  • 异步非阻塞的事件驱动模型,和 Node.js 相似
  • 热部署、平滑升级

Nginx 的最重要的几个使用场景:

  • 静态资源服务,通过本地文件系统提供服务
  • 反向代理服务,延伸出包括缓存、负载均衡等
  • API 服务, OpenResty

Nginx 社区版采用经典 x.y.z版本定义,次版本偶数为稳定版,当前版本为2023年4月发布的 v1.24 Nginx Plus 社区版为顺序编号,如当前版本为2023年12月发布的 R31。在发布文档中为有对应社区版的说明。

网站是:

开发组件

Keycloak

Keycloak 是 Red hat 开发的 Java 安全认证和授权服务器,针对现代应用程序和服务的开源身份和访问管理解决方案。

Keycloak 支持单点登录(Single-Sign On),因此服务可以通过 OpenID Connect、OAuth 2.0 等协议对接 Keycloak。也支持集成不同的身份认证服务,例如 Github、Google 和 Facebook 等。

Key采用快速迭代大版本发布模式。

之前基于wildfly,是一个带有应用服务器的系统。从v17 开始基于Quarkus,作为一个独立运行的系统。

红帽的商业产品Red Hat Single Sign-On,上游项目是 Keycloak

当前版本是2023年11月发布的v11.0.0

网址:

Spring

Spring Framework 是一个功能强大的 Java 应用程序开发框架,提供高效且可扩展的开发环境。

是轻量级的容器,通过依赖注入功能,使用 POJO 进行容器配置和面向切面的编程。 Spring 框架支持对事务管理、对象/关系映射、JDBC、JMS 等 Java 技术的支持。

Spring诞生于2003年,创始人Rod Johnson,对早期 J2EE 规范的复杂性提出的轻量级技术方案。 Spring其实是基于 Java EE 规范的,以及基于继任者Jakarta EE。当然只是JEE庞大规范体系的子集,而和一些JEE子规范,Spring则有竞争关系,比如CDI。

从Spring框架6.0开始,Spring已经升级到Jakarta EE 9级别(例如Servlet 5.0+,JPA 3.0+),基于 jakarta 命名空间而不是传统的 javax 包。由于EE 9是最低标准,并且已经支持EE 10。 Spring准备为Jakarta EE API的进一步发展提供开箱即用的支持。Spring Framework 6.0与Tomcat 10.1、Jetty 11和Undertow 2.3作为Web服务器完全兼容,同时也与Hibernate ORM 6.1兼容。

Spring Boot是一套开源微服务框架,简化Spring应用的创建及部署。提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,缩短开发时间,使开发更加简单高效。

Spring Boot帮助你创建可以运行的独立的、基于Spring的生产级应用程序。不需要部署到应用服务器中,而是内嵌了如tomcat、jetty、undetow等web 容器。通过 Actuator 模块,向外暴露应用程序的信息。

使用Spring Boot来创建Java应用程序,通过使用 java -jar 或 war包方式来部署启动。

Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。

Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元。

网址为: Spring项目

Spring Framework 和 Spring Boot 版本采用经典方式 x.y.z 如 Spring 6.1.x, Spring Boot 3.2.x。当前版本为 2023年11月发布的 Spring 6.1.0 和 Spring Boot 3.2.0

而 Spring Cloud 采用年份+序号的方式表示项目总集合版本,里面的子项目有各自的版本号。 如 Spring Cloud 2023.0.x 当前版本为 2023年12月发布的 Spring Cloud 2023.0

Vertx

Vert.x 是 Eclipse 基金会下面的一个开源项目。采用事件驱动的,异步IO非阻塞模型,可以使用很少的线程资源处理大量并发请求。 Vert.x是多语言 Web 开发框架,支持Java, Kotlin, Scala, Ruby和Javascript等语言。在Java虚拟机(JVM)上运行,开发微服务应用,具有模块化和轻量级特征。

Vert.x 实现了 Multi-Reactor 模式,区别于单线程的 Reactor 模式 (Node.js采用这种模式)。 单一线程在任意时刻运行在一个CPU核上,如果希望单线程应用扩展到多核服务器上,则需要启动并且管理多个不同的进程。 Vert.x的工作方式有所不同,每个 Vertx 实例维护的是多个线程。默认情况下,会根据机器上可用的CPU核数量来设置 Event Loop 的数量。

与 Node.js 类似,Vert.x运行单个事件循环,也充分利用了JVM,维护的线程池大小可以与可用核心数相匹配。 凭借更强的并发支持,Vert.x 不仅适用于IO访问,也适用于需要并行计算的CPU繁重任务。

Vert.x 底层使用高效网络开发库 Netty,可以很好的胜任高性能网络访问的应用场景。

网址为 Vert.x

版本发布采用经典版本 x.y.x 方式,当前版本为2023年11月发布的 v4.5.0

Quarkus

Quarkus的创建是为了使Java开发人员能够为现代的、云原生的世界创建应用程序。使用GraalVM项目来让Java应用拥抱云计算的。

是面向 Kubernetes 的原生Java框架,由众多Java库和标准精心打造。其目标是使Java成为Kubernetes和无服务器环境的领先平台,同时为开发者提供一个框架,以解决更广泛的分布式应用架构问题。

Quarkus是在Apache许可证2.0版下许可的开源项目。拥有开放的社区,贡献、想法和讨论都是公开进行的。

分为两种执行方式,一种是通过Java虚拟机执行(Quarkus+OpenJDK),另一种是通过编译成本地代码执行(Quarkus+GraalVM)。

允许开发者自动生成Kubernetes资源,包括构建和部署容器镜像,而无需手动创建YAML文件。

Quarkus 采用经典 x.y,x 版本发布模式,开发社区非常活跃,发布节奏很快。 同时提供 LTS 长期支持版本,目前 LTS为 3.2。下一个 LTS 会是 3.8 当前版本是 2023年11月发布的 Quarkus 3.6.0

OpenJDK

OpenJDK 是 Java SE 的官方 JDK 参考实现。 Sun 公司在 JavaOne 2006 中宣布 Java 将成为开源软件并建立了 Open JDK 社区。2007年5月8日 Sun 发布了 Java 类库的完整源代码。

2009年 Oracle 公司收购了 Sun 公司。Oracle JDK 源自 Sun JDK,Oracle JDK 就是 Oracle 公司开发维护的 Java 开发工具包。 自 Java SE 7开始往后的版本,所有的采用Hotspot JVM的JDK发行版都源自于 Open JDK。

当前JDK实现主要有两类

  • OpenJDK,当前LTS版本21,半年发布一个版本,2年为LTS发布周期。目前常用的有 8/11/17/21 等版本
  • OpenJ9 (IBM 捐献给 Eclipse 开源组织)

目前主要的JDK实现

  • Eclipse Temurin(Adoptium) 前身是Adopt OpenJDK,由多个主流厂商合作开发
  • 软件产商开发维护 Zulu (Azul)/ Redhat / IBM Semeru(OpenJDK/OpenJ9) / BellSoft Liberica / SAP / Microsoft
  • Amazon Corretto / Ali Dragonwell 等等

版本号发布规则,从 Java 5开始,用序号方式定义大版本,内部很多地方还是采用 1.x的方式。从Java 9开始,每半年发布一个版本,维护期除了LTS就是半年时期。 LTS长期支持版,支持时间就长多了,不同公司有不同的策略。之前LTS发布周期为3年,从Java 17开始,发布周期提升到2年。会不定期的发布小版本来修改bug和更新安全。

网站为 OpenJDK

Jakarta EE

Jakarta EE 的前身是 Java EE,再向前溯源就是J2EE。

1998年12月,SUN公司发布了JDK1.2,开始使用Java 2 这一名称,第二年Sun公司联合IBM、Oracle、BEA等大型企业应用系统开发商共同制订了一个基于Java组件技术的企业应用系统开发规范,名字很自然就取为Java 2 Platform Enterprise Edition简称J2EE

在2006年,SUN公司在发布Java 5后正式将J2EE改名为Java EE(Java Platform, Enterprise Edition)

2009年,Oracle宣布收购SUN,Java相关技术自然归Oracle所有。 在2017年,Oracle 宣布开源 Java EE 并将项目移交给 Eclipse 基金会。但Oracle移交过程中提出一些要求,其中包括不能再使用Java EE这个名称及不能使用 javax 命名空间。 Eclipse基金会接受了这个要求,经过广泛征集和开发者投票,最终改名为Jakarta EE。

Jakarta EE 为开发人员提供了全面开放的技术规范。 包含一系列子规范和参考实现。

子规范集合有:

  • Jakarta Annotations, Concurrency, Messaging(JMS), Persistence(JPA), Managed Beans
  • Jakarta JSON Processing(JsonP), Dependency Injection, Expression Language(EL), Bean Validation(BV), WebSocket
  • Jakarta Servlet, Activation, SOAP with Attachments, Interceptors
  • Jakarta Mail, Authentication, JSON Binding(JsonB), Server Pages(JSP), Authorization, XML Binding(Jaxb)
  • Jakarta Contexts and Dependency Injection(CDI), XML Web Services(JaxWS)
  • Jakarta Batch, RESTful Web Services(JaxRS), Transactions
  • Jakarta Connectors(JCA), Standard Tag Library(STL), Enterprise Beans(EJB), Enterprise Web Services
  • Jakarta Security, Server Faces(JSF)

总的规范集是 Full Platform,包含以上所有的子规范。Web应用开发常用的子规范集合称为 Web Profile。为了更好的开发微服务应用,从版本10之后,提炼出更精简的集合 Core Profile,只包含少数的子规范,如CDI(Lite), JaxRS等。

参考实现 RI 是 Glassfish,目前也是Eclipse旗下的开源项目。

发展路线图为: J2EE 1.2 -> Java EE 5 -> Java EE 8 => Jakarta EE 8 -> Jakarta EE 10

网址为: Jakarta EE

当前版本为 2022年9月发布的 v10版本,需要JDK 11。 下一个版本v11预计2024年Q2发布,需要JDK 21的支持。

MicroProfile

MicroProfile,它提供了一系列规范,旨在帮助开发人员构建企业Java云原生微服务。

Eclipse MicroProfile 是一个 Java 微服务开发的基础编程模型,它致力于定义企业 Java 微服务规范,MicroProfile 提供指标、API 文档、运行状况检查、容错、JWT、Open API 与分布式跟踪等能力

Eclipse MicroProfile 包括以下几个部分:

  • MicroProfile Config — 应用配置
  • MicroProfile Health Check — 运行状况检查
  • MicroProfile Metrics — 指标
  • MicroProfile Fault Tolerance — 容错
  • MicroProfile Rest Client — 类型安全的 REST 客户端
  • MicroProfile Open API — OpenAPI 与注解
  • MicroProfile JWT Authentication — JWT 认证传播
  • MicroProfile Telemetry / OpenTracing — 分布式追踪集成

MicroProfile 的主要目标是定义Java API,优化云本地微服务的开发。 最初采用了JavaEE标准,并对微服务模式有用的API进行了扩展。自从Microprofile 4.0版本以来,Java EE被Jakarta EE所取代。

MicroProfile 倡议是在2016年6月27日 Red Hat的 DevNation会议上发起的,它是由 IBM、Red Hat、Tomitribe、Payara 等厂商协作创建的,旨在为企业级 Java 提供微服务。

MicroProfile 1.0的发布是在 JavaOne 2016 上宣布的,包含了三个基于 JSR 的 API,被视为创建微服务的最低限度要求:

  • JSR-346 上下文和依赖注入(CDI)
  • JSR-353 JSON 处理(JSONP)
  • JSR-339 RESTful Web 服务JAXRS)。

从MicroProfile 6.0 版本起,直接引用了 Jakarta EE 的 Core Profile。

网址为: MicroProfile

当前版本为 23年10月发布的 v6.1

====

Docker

Docker 提供了在容器的隔离环境中,打包和运行应用程序的能力。 可以将应用程序与基础架构分开,从而快速交付软件。是一个用于开发、发布和运行应用程序的开放平台。

通过这种隔离和安全性,可以在给定的主机上同时运行多个容器。 容器是轻量级的,包含运行应用程序所需的所有内容,无需依赖主机上安装的内容。 通过 Docker,可以用管理应用程序的相同方式管理基础架构。可以共享容器,确保使用共享容器的每个人都能以同样的方式工作。

Docker 提供了管理容器生命周期的工具和平台:

  • 使用容器开发应用程序及其支持组件
  • 容器成为分发和测试应用程序的单元
  • 准备就绪后,将应用程序作为容器或协调服务部署到生产环境中。无论环境是本地数据中心、云提供商,还是两者的混合环境

网址为:

Docker Engine 当前大版本为 2023年10月发布的 v24.0.0

Podman

Podman 是一款无守护进程、开源的Linux 本机工具,旨在使用 OCI 标准的容器和容器映像,轻松查找、运行、构建、共享和部署应用程序。

Podman 提供一个使用过 Docker 容器引擎的人都会很熟悉的 Cli 命令行界面(CLI)。 多数用户只需将 Docker 别名为 Podman(alias docker=podman)即可。 与其他常见的容器引擎(Docker、CRI-O、containerd)类似,Podman 依靠符合 OCI 标准的容器运行时(runc、crun、runv 等)与操作系统对接,并创建运行中的容器。

Podman 控制下的容器既可以由 root 用户运行,也可以由非特权用户运行。 Podman 使用 libpod 库管理整个容器生态系统,包括 pod、容器、容器映像和容器卷。 Podman 专注于帮助你维护和修改 OCI 容器镜像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建、运行和维护这些容器和容器映像。

Podman 和 Docker 的主要区别在于 Podman 的无守护进程架构。

Podman 的无守护进程和包容性架构使其成为更安全、更易访问的容器管理选择,其配套工具和功能(如 Buildah 和 Skopeo)允许开发人员定制容器环境,以最大限度地满足他们的需求。

网址为: https://podman.io/

当前版本为 2023年11月发布的 v4.8

Kubernetes

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务。既便于声明式配置,也便于自动化。 拥有一个庞大、快速发展的生态系统。支持Kubernetes 服务、支持和工具广泛而可用。

Kubernetes 的名称源于希腊语,意为舵手或领航员。 K8s是Kubernetes的缩写,源于计算 “K “和 “s “之间的八个字母。 谷歌于 2014 年开源了 Kubernetes 项目。Kubernetes 将谷歌超过 15 年的大规模生产工作负载运行经验与来自社区的最佳创意和实践相结合。

提供了完善的管理工具,这些工具涵盖了开发、部署测试、运维监控在内的各个环节。

Kubernetes 具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、多粒度的资源配额管理能力。

网址为:

当前版本为 2023年12月发布的 v1.29

Openshift

Openshift是红帽的云开发平台,底层以Docker等作为容器引擎驱动,以Kubernetes作为容器编排引擎组件,Openshift提供了开发语言、中间件、自动化流程工具及界面等元素,提供了一套完整的基于容器的应用云平台。

OKD是 Kubernetes 的一个发行版,针对持续应用程序开发和多租户部署进行了优化。 OKD 还充当上游开源代码库,红帽 OpenShift 容器平台基于代码库构建。

云计算平台使开发人员能够创建、测试和运行他们的应用程序,井且部署到云中。 Openshift广泛支持多种程语言和框架,如Java, Ruby和 Go 等。 Openshift基于开源生态系统为移动应用、数据库服务等提供支持。

通过 Openshift,企业可以快速在内部网络中构建出一个多租户的云平台,在这朵云上提供应用开发、测试、部署、运维的各项服务。 贯通开发、测试、部署、运维的流程,实现高度的自动化,满足应用持续集成及持续交付和部署的需求,满足企业及组织对容器管理、容器编排的需求。

网址为:

当前版本为 2023年11月发布的 v4.14

Ubuntu

Ubuntu 是基于 Linux 的操作系统。为PC电脑、智能手机和网络服务器等不同应用场景设计。 由 Canonical Ltd 的英国公司开发。Ubuntu 软件都基于开源软件开发原则。

Ubuntu 可以主要分为桌面版和服务器版

桌面版具有上佳的使用体验,特点有:

  • 支持 Windows 上的所有普通软件,如 Firefox、Chrome 浏览器、VLC 等
  • 支持 LibreOffice 的办公套件
  • 内置 Thunderbird 的电子邮件软件,用户可以通过它访问 Exchange、Gmail、Hotmail 等电子邮件
  • 用户可以使用应用程序查看和编辑照片
  • 有管理视频的应用程序,可以共享视频。
  • 通过智能搜索功能,在 Ubuntu 上查找内容简单高效

服务器版则是完备的网络服务系统,被广泛应用在云计算场景。

Ubuntu的上游开源操作系统是著名的Debian

Ubuntu 的发布周期。Canonical 每年都会发布两个 Ubuntu 版本,一个在四月,一个在十月。版本号通常表示软件发布的年份。例如,16.04 版本表示发布于 2016 年 4 月。每个版本都有一个代号,以首个字母进行排序。 每两年发布一个LTS长期支持版,最近的LTS为2022年4月发布的 v22.04 ,代号为Jammy 最新的版本是2023年10月发布的 v23.10,代号为mantic

网址为: https://www.ubuntu.com

Rockey

Rocky Linux 是一个自由、开源、面向服务器的 Linux 发行版。它是 CentOS 的一个分叉,也是一个与 Red Hat Enterprise Linux(RHEL)兼容的发行版。

2020年12,Red Hat宣布将停止 CentOS 的开发,转而开发一个更新的上游开发版本,即 “CentOS Stream”。 CentOS 的创始人 Gregory Kurtzer 宣布,将再次启动一个项目,以实现 CentOS 的最初目标。 项目的名称是为了向 CentOS 早期的联合创始人 Rocky McGaugh 致敬。

2021 年 4 月 30 日,第一个候选发布版正式发布。2021 年 6 月 21 日,Rocky Linux 8.4 稳定版发布,代号为 “Green Obsidian”。

网址为:

发布周期和 Centos Stream基本一致,也遵循 Redhat RHEL 生命周期。 最新版本为2023年11月发布的 v9.3

Spark

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,是Apache顶级开源项目。 2009年由加州大学伯克利分校的 AMPLab 开发。

Spark提供了一个全面、统一的框架,用于管理各种有着不同性质(文本数据、图表数据等)的数据集,处理批量数据或实时的流数据,满足大数据处理的需求。 和Hadoop集群中的应用相比,Spark在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。

组成有:

  • Spark Core:包含Spark的核心功能。其他Spark的库都是构建在RDD和Spark Core之上的
  • Spark SQL:提供通过 SQL变体查询语言与Spark进行交互
  • Spark Streaming:对实时数据流进行处理和控制
  • MLlib:一个常用机器学习算法库,包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作
  • GraphX:控制图、并行图操作和计算的一组算法和工具的集合

网址为:

最新版本为 2023年9月发布的 v3.5.0

Apache Flink 是一个框架和分布式处理流式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。 Flink 能在所有常见集群环境中运行,并能以内存速度进行计算。处理任意规模的数据集合。

Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。 主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。

流处理主要针对的是数据流,特点是无界、实时,对系统传输的每个数据依次执行操作,一般用于实时统计。在流处理中,数据被视为无限连续的流,并且会尽快地进行处理。 Flink在此模型下可以提供秒级甚至毫秒级的延迟,使其成为需要快速反应和决策的场景(例如实时推荐、欺诈检测等)的理想选择。

Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群上独立部署。 在启用高可用选项的情况下,它不存在单点失败问题。

Flink 本身提供了多层 API:

  • Stateful Stream Processing :最低级的抽象接口是状态化的数据流接口
  • DataStream/DataSet API: 是 Flink 提供的核心 API ,DataSet 处理有界的数据集,DataStream 处理有界或者无界的数据流。用户可以通过各种方法(map / flatmap / window / keyby / sum / max / min / avg / join 等)将数据进行转换 / 计算
  • Table API: 提供了例如 select、project、join、group-by、aggregate 等操作
  • SQL: 提供的最高层级的抽象是 Flink SQL

网址为 https://flink.apache.org/

当前版本为 2023年10月发布的 v1.18

ElasticSearch

ElaticSearch 简称为ES,是一个分布式、RESTful 风格的搜索和数据分析引擎,可以近乎实时的存储、检索数据。 本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能。

结合Kibana、Logstash、Beats等组件,组成 Elastic Stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。 是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在 ElasticSearch 中

主要特性:

  1. 搜索。提供了许多搜索策略,例如开箱即用的大小写相关/独立搜索,部分匹配,自动建议搜索。
  2. 日志收集/解析和分析。
  3. 内容连接器。来自众多来源的数据收集,使其变得可搜索。
  4. 即时可视化。建立数据索引后的几分钟内创建具有洞察力的仪表板。

网址为 https://www.elastic.co/

当前版本为 2023年11月发布的 v8.11