反馈已提交

网络繁忙

您正在浏览的是 FineBI6.1 帮助文档,点击跳转至: FineBI5.1帮助文档

工程部署原理

  • 文档创建者:doreen0813
  • 历史版本:44
  • 最近更新:Carly 于 2023-11-03
  • 概述

    本文简单介绍:

    1)工程部署的必要性/部署原理

    2)单机和集群的简介/区别/适用场景/组成部件

    3)各种部署方式的区别,什么是容器化部署?

    工程部署原理

    为什么不能直接用本地FineBI,而需要在服务器部署工程?

    问题:既然用户可以直接在自己电脑端安装 FineBI ,为什么还需要在服务器端部署FineBI工程呢?

    答案:对于正式的企业工程,需要让多个操作员连接到同一个工程,并让多个查看者能够在不同的电脑上访问同一个系统。

    因此,需要在服务器上部署工程,来确保不同的操作员和查看者可以在各自的电脑终端上访问工程。

    为什么推荐将工程部署在中间件中?

    中间件是位于操作系统和应用程序之间的软件层,用于支持应用程序之间的通信和交互。

    为了实现工程的更好可用性和稳定性,通常会将FineBI部署在中间件中。

    部署在中间件中可以提供以下优势:

    • 应用服务器可以提供更好的安全性:应用服务器可以对传输协议和Web安全性进行控制和管理,可以使用HTTPS协议等加密协议来保证数据传输的安全性。

    • 应用服务器可以提供更好的性能:应用服务器可以对请求进行负载均衡,以确保系统在高负载时仍然能够高效地运行。

    • 应用服务器可以提供更好的扩展性:使用应用服务器可以方便地扩展系统,并为不同的应用程序提供专用资源,从而确保应用程序的稳定性。

    • 应用服务器可以提供更高的可用性:应用服务器可以提供高可用性和容错机制,以最大化系统的可用性。

    因此,将FineBI部署在中间件中可以提供更好的安全性、性能、扩展性和可用性,从而确保工程的稳定性和高可用性。

    服务器工程的运作原理

    服务器中工程部署的原理就是将 FineBI 工程部署到 Web 应用服务器端。

    • 用户在客户端产生一个查看请求,发送给 Web 应用服务器端。

    • Web 应用服务器将FineBI的计算结果反馈给客户端。

    • FineBI在计算结果时会涉及到数据库的读写操作。

    集群与单机

    什么是集群和单机?

    单机

    就是一个部署好的工程。

    集群

    集群(cluster)就是将多个相同的工程集中起来提供同一种服务,这些单个的工程就是集群的节点(node)。

    基于集群的横向扩展性,用户可通过增加节点数量使并发趋于线性增长,从而获得较高的并发支撑性能。

    同时也可以用多个工程做备份,避免单机不可用导致系统停止造成的损失(业务中断、数据/模板丢失),确保系统 7*24h 稳定运行。

    集群的优势

    帆软集群具有高可用性、高性能、易于管理、可伸缩性和安全保障等优点,适用于企业级的报表生成和管理需求,可以帮助企业更好地管理和控制报表数据的存储、生成、共享等方面的性能和效果。

    优势
    说明
    高可用性

    帆软集群通过集群节点、负载均衡器、状态服务器等多个组件协同工作,有多个节点来分担处理请求的负荷。

    当集群节点发生故障时,负载均衡器会自动将请求转发到其他可用节点,保证系统的高可用性。

    高并发

    帆软集群允许并行处理多个仪表板生成和数据计算任务,通过多个节点从而实现任务的分布式处理。

    通过集群的横向扩展,实现数据计算与仪表板生成的加速,从而提高整体的性能。

    节点数量越多,支持的并发越高。

    易于管理

    帆软集群提供了完整的管理平台,包括集群节点的监控、配置、部署和故障自动修复等功能,可以大大降低集群维护和运维的难度和风险,帮助企业更好地管理和维护系统。

    • 简单可视化配置,80% 的配置都可在平台上完成。

    • 支持热部署,增加删除节点无须重启集群,只需要拷贝节点文件即可。

    • 实时监控各节点的运行状态,对于节点宕机、节点间时间不一致等情况可以及时进行提醒。

    • 各节点间平台配置信息和资源文件修改更新能够实时同步。

    • 对于节点间JAR包不一致情况,启动时可自动检测对比并提醒。

    强扩展性基于良好的架构设计,Web集群具有良好的横向扩展性,帆软集群可以快速增加集群节点的数量,使并发趋于线性增长,以应对高峰期和流量波动,做到系统的可伸缩性和高效性。

    集群和单机的区别/集群解决什么问题?

    当我们把集群和单机比作一组出租车承接客人的话,它们的区别可以这样解释:

    1)解决高负载问题

    单机就像是一辆出租车,它可以接受乘客的订单,但是如果订单请求变得非常多,该出租车的服务能力可能无法满足,并可能会出现性能瓶颈。

    此时,你需要多辆出租车来分担订单处理工作。而这些出租车可以被组成为一个出租车队的形式称之为集群。

    这样,您可以将乘客分配到不同的车辆中,并将他们同时送到目的地,从而提高服务效率。

    2)解决高可用问题

    但是,仅仅增加车辆的数量只能解决工程高负载问题,并不足以保证高可用性。

    您还需要一个良好的车队管理系统来确保每辆车都可以顺利地运行,并提供相同的服务质量和客户体验。

    在集群设计中,这意味着您需要将多个服务器组合在一起,以实现负载均衡、配置信息数据库、状态服务器和文件服务器等功能。

    这些组件可以确保整个集群的高可用性,并提供稳定的服务。

    3)总结

    集群和单机的主要区别在于共享资源和协作工作。

    集群中,多个工程相互通信共享数据和任务,可以提供更好的可扩展性和更高的性能。

    单机中,所有的资源都被独占使用,没有扩展性和动态性可言。

    总之,集群设计是一种有效的解决方案,可以提高系统的负载能力和可用性,并确保系统的稳定性和一致性。

    集群为什么需要多类组件?

    在搭建集群时,需要注意到这不是一件轻松简单的事情。

    为了提供无缝丝滑的服务,必须提高服务质量并组建一个优秀的车队。

    我们需要考虑如何构建一个良好的车队,这是集群架构需要解决的问题。

    组件
    说明
    工程节点

    集群节点就是一辆辆出租车。

    当某个出租车出现了故障,会自动安排其他出租车来代替它的工作,以确保整个车队仍然正常工作。

    帆软集群设计避免了主节点的概念,只将第一个加入集群的节点作为基准节点。每个节点都平等地提供服务和进行管理操作。

    每个节点都是一个可以独立运行的工程,负责处理用户的请求,处理生成报表的任务和管理其他组件的工作。集群节点间通过一系列的网络协议和服务进行通信和协作。

    负载均衡

    负载均衡就像出租车队的调度中心,用于协调和分配所有的工作和请求。 

    在接待客户时,负载均衡作为统一入口,负责对接客户,不需要让客户一个个询问司机。

    在集群中,负载均衡用于分配任务到各个节点上,使它们能够更高效地工作。 

    负载均衡器会在所有节点之间平衡负载,确保每个节点都分配到足够的任务并保持忙碌状态。

    外接数据库

    配置库,即外接数据库FineDB,类似于出租车队的车管所。 

    它存储并维护所有车辆和司机的信息,为每个司机提供相同的车辆装饰、报价、出行路线等信息。让每一辆车都给顾客提供一致的出行体验。

    在集群中,配置库用于存储和维护所有节点的配置信息和参数,这些参数是为了使集群节点协调工作而必须合理设置的。

    状态服务器

    状态服务器就像出租车队的管理中心。

    它负责监控和维护车队的整体状态,包括车辆和司机的位置,以及服务进度。

    在集群中,状态服务器也执行相似的任务。它监控每个节点及整个集群的运行状态、记录日志和错误信息、协调节点间的通信和任务分配等。

    文件服务器

    文件服务器类似于出租车队的存储仓库。

    它存储所有与车队相关的文件,包括车辆维护记录、保险单、车辆位置数据等。

    在集群中,文件服务器用于存储和共享集群中所需的文件和数据资源,以确保每个节点都可以访问并使用它们。

    帆软集群的架构非常灵活,可以根据不同的业务需求和特点进行配置。想要开启集群必须至少满足以下条件:

    1)有1个以上工程节点

    2)节点配置了外接数据库

    3)节点配置了状态服务器

    4)如果有2个以上工程节点,则必须配置文件服务器

    抽取集群与直连集群

    什么是抽取集群和直连集群?

    直连集群:

    • FineBI工程中只使用直连数据,不使用抽取数据

    抽取集群:

    • FineBI6.0工程,全新部署集群,工程中使用了抽取数据。

    • FineBI5.x热备工程升级FineBI6.0,升级后取消热备,建议调整为抽取集群

    抽取集群的优势

    1)业务高可用

    方案特性:

    集群由多个同步节点和非同步节点组成,只要还有一台同步节点存活,就能够提供完整的数据,保证数据查询高可用性。

    当数据更新在执行过程中出现异常(宕机或节点假死),则通过恢复机制,将正在进行的任务重新恢复为执行前的状态,并重新执行,以保证更新业务的高可用。

    特性表现:

    与热备相比,抽取集群中节点宕机时不再会有节点切换的耗时,降低了不可用的时间。

    此外,6.0集群还支持更新业务的高可用,提供更新任务的异常恢复机制。

    2)查询高并发

    方案特性:

    多台节点同时提供查询服务,实现负载均衡,查询并发量随节点数量近似线性提升,提供可横向扩展的查询能力。

    特性表现:

    抽取集群的查询,达到了真正的负载均衡,且并发性能可以随节点增加而线性增加。

    抽取集群方案并不优化单个节点的并发数,而是优化整体。

    抽取集群方案的性能提升,随节点数增加非整倍的提升,会有一定的衰减。

    注:下表用六种情况,展示在不同节点和并发数下,查询性能的表现。这些情况仅作为测试用例,实际部署中节点数不推荐超过5,并发数不止支持140。

           实际配置中,需要根据用户使用高频场景(查看仪表板/自助分析),来选择最优节点数,详情请参见:工程部署方案选择

    节点数-并发数
    相比单机,性能提升的倍数
    单节点-10并发-
    4节点-40并发3.6
    7节点-70并发6.7
    单节点-20并发-
    4节点-80并发3.6
    7节点-140并发6.1

    3)提升更新吞吐量

    方案特性:

    可以通过增加节点的方式来提高更新性能,更新耗时随节点数变多呈现非线性降低的趋势。

    特性表现:

    多表更新任务的更新性能,随节点数变多,呈现非线性地先提升后降低趋势(由于数据同步机制)。

    抽取集群方案并不优化单个节点的更新性能和吞吐量,而是优化整体。

    由于数据同步机制,单表更新在多节点的更新性能会比单节点有所下降。

    由于数据同步机制,全局更新的性能提升,在4节点会相比于3节点有所下降。因此部署中节点数不推荐超过5(相比单机,提升幅度还算比较大)。

    注:实际配置中,需要根据用户使用高频场景(查看仪表板/自助分析),来选择最优节点数,详情请参见:工程部署方案选择

    节点数

    相比单机,全局更新性能提升的百分比

    单节点-
    2节点31%
    3节点39%
    4节点37%

    抽取集群的运作原理

    1)更新调度

    • 数据更新请求可以向所有节点均衡转发。

    • 所有节点均可对更新任务进行预处理,将更新任务的信息存储到任务队列。

    • 所有同步节点可领取数据集更新子任务,并进行实际的抽取。

    • 数据集在某节点抽取完成后,会同步到其他同步节点,全部同步完成后,该数据集才视为更新完成。

    2)数据同步

    同步节点:

    • 该类节点上的数据文件状态都保持最新,即保持数据强一致性。更新过程中,必须保证该类节点数据同步完成,才算更新成功。

    • 该类节点是高可用的基本保障,也是查询和更新高并发的主力。

    非同步节点:

    • 6.0.8之前版本,该类节点是查询高并发的支撑。节点上的数据文件可以不是最新的,通过同步的机制,逐渐将该节点上的数据更新为同步节点一样的状态。

    • 6.0.8及之后版本,该类节点是查询转发的支撑。节点作为不使用引擎功能的查询节点,本地不存储抽取数据,只做查询转发。

    3)查询请求转发

    • 数据查询请求可以向所有节点均衡转发;

    • 若配置库返回的节点数据状态为最新状态,则由该节点处理请求;

    • 6.0.8之前版本,若节点数据落后,则BI内部转发请求到最新数据的节点,并触发本节点的数据同步。

    • 6.0.8及之后版本,所有请求都会转发到有最新数据的节点,不需要更新非同步节点的数据。

    容器化部署与传统部署

    什么是容器化部署和传统部署?

    传统部署:

    用户可以自行准备,或使用帆软封装的部署包,搭建最普通的工程架构,即「FineBI工程+jdk环境+tomcat中间件」

    容器化部署:

    将应用“容器化”的过程,就是让应用能够运行在 Docker 容器或类似技术中,它们能将操作系统环境和应用封装在一起(完整的系统镜像)。

    由于容器能给应用提供近似于完整系统的环境,这就为在不修改,或者少量修改应用的情况下,对应用的部署进行现代化改造提供了一种思路。

    这也是应用的架构持续能保持“云友好”的基础。

    容器化部署的优势

    相比于传统部署架构,容器化部署可大幅降低客户的维护成本和资源成本。

    1)维护成本低

    • 每个工程的环境相互隔离,出现异常时影响范围小。

    • 升级、灾备、回滚方便。

    2)资源成本低

    • 多集群管理、多租户、微服务化,更高资源使用率。

    • 资源弹性伸缩。

    容器化部署和传统部署的区别

    容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。

    最重要的优点是可在开发和运营之间提供隔离。

    对比项
    传统方式部署容器化部署
    JVM初始配置

    需要自行手动修改 Tomcat 配置文件或其他容器对应配置文件

    大部分用户可能不会完全配置,导致后续业务上出现异常

    默认已经在镜像中配置好了常用的所有jvm参数,避免大多jvm参数造成的问题

    yaml文件中可以单独配置Xmx内存上限

    负载均衡

    需要单独安装 Nginx 或其他负载软件,并进行转发配置

    存在用户可能缺少很多配置,导致某些业务出现异常

    可以根据需要配置keepalived+nginx的高可用架构

    一键部署时,默认自动安装好nginx且已自动配置好(不支持其他负载)

    避免因客户自行配置错误或缺失导致的问题

    硬件要求虽然有推荐,但没有强制

    强制要求所有节点至少500G磁盘空间和16G内存

    防止在不适合的硬件环境中部署工程,埋下隐患

    组件要求没限制,所有产品支持的组件都可以配置

    没限制,所有产品支持的组件都可以配置

    同时支持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、系统字体、系统语言、系统时间等都可能造成某些业务问题FR/BI应用都使用docker容器部署,环境统一,只要能支持部署,基本没有环境影响


    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持