1. 概述
1.1 版本
FineDataLink 版本 |
---|
4.0.1.1及以后 |
1.2 功能简介
为满足多类型客户的使用诉求,FineDataLink支持多种部署方式,支持独立部署、集群部署、容器化部署。
本文简单介绍不同部署内容和部署方式的区别及优劣势。
2. 集群与单机
注:仅独立部署时,支持部署FineDataLink集群。
什么是集群和单机?
单机
就是一个部署好的工程。
集群
集群(cluster)就是将多个相同的工程集中起来提供同一种服务,这些单个的工程就是集群的节点(node)。
基于集群的横向扩展性,用户可通过增加节点数量使并发趋于线性增长,从而获得较高的并发支撑性能。
同时也可以用多个工程做备份,避免单机不可用导致系统停止造成的损失(业务中断、数据丢失),确保系统 7*24h 稳定运行。
集群的优势
FineDataLink 集群具有高可用性、高性能、易于管理、可伸缩性和安全保障等优点:
优势 | 说明 |
---|---|
高可用性 | 系统具备容灾热备能力 帆软集群通过集群节点、负载均衡器、状态服务器等多个组件协同工作,有多个节点来分担处理请求的负荷。 使用 FineDataLink 产品时,面对可能导致系统宕机的异常情况,系统本身有一定的容灾能力,能够保证数据的同步和处理持续不间断,应对可能出现的局部节点宕机、停机问题。 |
高并发 | 提高任务并发运行能力 帆软集群允许并行处理多个定时和管道任务,通过多个节点从而实现任务的分布式处理,以及在使用数据服务时,分散某些请求频次比较高的API。 使用 FineDataLink 产品时,在任务处理任务比较多的情况下,能通过增加节点数来提升任务的并发运行能力,从而提高整体的性能。 注:定时任务的最小运行单元是节点,任务执行时会生成一个任务实例,任务实例内包含多个待运行节点。管道任务的最小运行单元是管道任务实例,任务运行时生成一个任务实例,实例内不会再进一步拆分。 高并发逻辑为:将任务实例内的待运行节点均衡地分发到各集群节点执行,执行顺序基于任务内的设计。 |
易于管理 | 帆软集群提供了完整的管理平台,包括集群节点的监控、配置、部署和故障自动修复等功能,可以大大降低集群维护和运维的难度和风险,帮助企业更好地管理和维护系统。
|
强扩展性 | 基于良好的架构设计,Web集群具有良好的横向扩展性,帆软集群可以快速增加集群节点的数量,使并发趋于线性增长,以应对高峰期和流量波动,做到系统的可伸缩性和高效性。 |
集群组件作用
在搭建集群时,需要注意到这不是一件轻松简单的事情。
为了提供无缝丝滑的服务,必须提高服务质量并组建一个优秀的车队。
我们需要考虑如何构建一个良好的车队,这是集群架构需要解决的问题。
组件 | 说明 |
---|---|
工程节点 | 集群节点就是一辆辆出租车。 当某个出租车出现了故障,会自动安排其他出租车来代替它的工作,以确保整个车队仍然正常工作。 帆软集群设计避免了主节点的概念,只将第一个加入集群的节点作为基准节点。每个节点都平等地提供服务和进行管理操作。 每个节点都是一个可以独立运行的工程,负责处理用户的请求,处理任务和管理其他组件的工作。集群节点间通过一系列的网络协议和服务进行通信和协作。 |
负载均衡 | 负载均衡就像出租车队的调度中心,用于协调和分配所有的工作和请求。 在接待客户时,负载均衡作为统一入口,负责对接客户,不需要让客户一个个询问司机。 在集群中,负载均衡用于分配任务到各个节点上,使它们能够更高效地工作。 负载均衡器会在所有节点之间平衡负载,确保每个节点的web端请求都分配到足够的任务并保持忙碌状态。 |
服务注册中心 | 保证调度端,即定时任务、管道任务内节点的执行调度的高可用性和高并发。 任务节点调度任务在单个工程节点出现故障时,转移至其他正常节点保证正常使用;同时将任务实例均衡地分发到各集群节点执行,确保多个调度任务能同时正常运行。 |
外接数据库 | 配置库,即外接数据库FineDB,类似于出租车队的车管所。 它存储并维护所有车辆和司机的信息,为每个司机提供相同的车辆装饰、报价、出行路线等信息。让每一辆车都给顾客提供一致的出行体验。 在集群中,配置库用于存储和维护所有节点的配置信息和参数,这些参数是为了使集群节点协调工作而必须合理设置的。 |
状态服务器 | 保证 web 端高并发,基于负载均衡配置的转发逻辑,将用户的请求均衡地分发到各个节点进行响应,包括:
|
文件服务器 | 文件服务器类似于出租车队的存储仓库。 它存储所有与车队相关的文件,包括车辆维护记录、保险单、车辆位置数据等。 在集群中,文件服务器用于存储和共享集群中所需的文件和数据资源,以确保每个节点都可以访问并使用它们。 |
帆软集群的架构非常灵活,可以根据不同的业务需求和特点进行配置。想要开启集群必须至少满足以下条件:
1)有1个以上工程节点
2)节点配置了外接数据库
3)节点配置了状态服务器
4)如果有2个以上工程节点,则必须配置文件服务器
5)节点配置了 Nacos 服务注册中心
支持范围
FineDataLink 4.0.27 及以上版本支持数据开发使用集群;
FineDataLink 4.0.30 及以上版本支持数据管道、数据服务使用集群;
支持独立部署的 FineDataLink 工程作为集群的工程节点;不支持和 FineReport 、FineBI 工程作为节点共同组成集群。
4. 容器化部署与传统部署
什么是容器化部署和传统部署?
传统部署:
用户可以自行准备部署包,搭建最普通的工程架构,即「FineDataLink工程+jdk环境+tomcat中间件」
容器化部署:
将应用“容器化”的过程,就是让应用能够运行在 Docker 容器或类似技术中,它们能将操作系统环境和应用封装在一起(完整的系统镜像)。
由于容器能给应用提供近似于完整系统的环境,这就为在不修改,或者少量修改应用的情况下,对应用的部署进行现代化改造提供了一种思路。
这也是应用的架构持续能保持“云友好”的基础。
容器化部署的优势
相比于传统部署架构,容器化部署可大幅降低客户的维护成本和资源成本。
1)维护成本低
每个工程的环境相互隔离,出现异常时影响范围小。
升级、灾备、回滚方便。
2)资源成本低
多集群管理、多租户、微服务化,更高资源使用率。
资源弹性伸缩。
容器化部署和传统部署的区别
容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。
最重要的优点是可在开发和运营之间提供隔离。
对比项 | 传统方式部署 | 容器化部署 |
---|---|---|
JVM初始配置 | 需要自行手动修改 Tomcat 配置文件或其他容器对应配置文件 大部分用户可能不会完全配置,导致后续业务上出现异常 | 默认已经在镜像中配置好了常用的所有jvm参数,避免大多jvm参数造成的问题 yaml文件中可以单独配置Xmx内存上限 |
负载均衡 | 需要单独安装 Nginx 或其他负载软件,并进行转发配置 存在用户可能缺少很多配置,导致某些业务出现异常 可以根据需要配置keepalived+nginx的高可用架构 | 一键部署时,默认自动安装好nginx且已自动配置好(不支持其他负载) 避免因客户自行配置错误或缺失导致的问题 |
硬件要求 | 虽然有推荐,但没有强制 | 强制要求所有节点的磁盘空间和内存 防止在不适合的硬件环境中部署工程,埋下隐患 |
组件要求 | 没限制,所有产品支持的组件都可以配置 | 没限制,所有产品支持的组件都可以配置 同时支持mysql、redis和minio的部署 |
操作系统要求 | 基本无限制 | 支持 amd64 架构的 Linux 系统 centos7.3 以下版本不支持 ubuntu18 以下版本不支持 防止因操作系统版本过低,导致工程运行出现问题 |
防火墙要求 | 需要对应服务器开放使用到的端口即可 | 必须开放所有节点所有组件使用的端口,否则无法部署 确保不因端口问题导致工程运行异常 |
单机部署 | 不配置外置库和其他组件的情况,上传部署包直接启动即可 否则需要单独配置外置库和组件以及需要的环境、如jdk | 本机root用户可以一键部署 支持在yaml文件中配置相关节点和组件信息后部署 支持通过yaml文件配置用户原有的组件 |
权限要求 | 需要保证文件权限 | 普通用户需要sudo权限(已经安装好docker,且用户属于docker用户组则无需权限) cp tar rm groupadd gpasswd groups dockerd systemctl(docker服务开机自启需要,不强制) |
web容器配置修改 | 修改如tomcat目录下的配置文件后重启tomcat | 可以通过运维平台实现前端修改 |
jvm参数修改 | 直接修改对应文件即可 | 可以通过运维平台实现前端修改 |
环境影响 | 使用受到各种环境影响,如:jdk、glibc、系统字体、系统语言、系统时间等都可能造成某些业务问题 | FineDataLink应用使用docker容器部署,环境统一,只要能支持部署,基本没有环境影响 |
5. 拓展阅读
Linux 系统下的相关操作命令等详情参见:
若部署后需要进行升级或者其他系统运维操作时,可查看 FineDataLink 目录结构了解部署工程的后台目录文件
详情参见:FineDataLink安装目录结构