概述
本文简单介绍:
部署帆软集群时支持的部署环境
部署帆软集群时必须满足的要求
集群组件支持的类型
注1:本文列出的是全量的部署支持环境。建议您参考该文档选择最适合的部署环境:工程部署推荐环境
注2:本文列出的是帆软测试通过的环境。
本文未提及的更低版本,一般默认不支持
本文未提及的更高版本,用户可自行测试验证。如果使用后出现问题,付费用户可联系技术支持获取帮助。技术支持联系方式:前往「服务>在线支持」
注3:对于各类集群组件(例如Nginx/Redis/外接数据库等),文档仅列出支持的版本,具体部署方法建议优先查询具体厂商文档。
通用服务器要求
服务器操作系统
优先推荐使用 Linux 操作系统部署帆软应用和集群组件。
系统版本:Ubuntu 18.04.4 及以上
系统内核:3.10 及以上
系统架构:X86_64
注:Linux和Windows对比分析请参见:Linux和Windows对比分析
类别 | 操作系统 | 已验证版本号 |
---|---|---|
Linux | Centos6 | Centos 6.5、Centos 6.6、Centos 6.7、Centos 6.8、Centos 6.9 |
Centos7 | Centos 7.0、Centos 7.1、Centos 7.2、Centos 7.3、Centos 7.4 Centos 7.6、Centos 7.8、Centos 7.9 | |
RedHat6 | RedHat 6.5、RedHat 6.6、RedHat 6.7、RedHat 6.8、RedHat 6.9 | |
RedHat7 | RedHat 7.0、RedHat 7.1、RedHat 7.2、RedHat 7.3、RedHat 7.4 RedHat 7.7 | |
Ubuntu | Ubuntu 10.04.4、Ubuntu18.04、Ubuntu 20 | |
Amazon Linux | Amazon Linux AMI release 2018.03 | |
Rocky Linux | Rocky Linux 8.8~9.4版本 | |
Windows | Windows Server 2008 及以上 Windows 11 |
服务器磁盘空间
目录 | 作用 | 配置要求 |
---|---|---|
工程部署 | 用于部署工程,存放工程模板资源文件等 | 500G以上 |
根目录 | 存放内容: 对于帆软应用,指系统使用时的临时缓存.FineReport110 对于集群组件,指组件运行时的各种缓存 目录位置: 1)对于linux系统中root用户启动的工程 根目录在/root下 2)对于linux系统中非root用户启动的工程 根目录在/home/$用户名/下 3)对于Windows系统中启动的工程 根目录在C:\Users\用户名下 | 不小于40G |
/usr目录 | 默认日志存放路径 | 不小于15G |
/home目录 | 文件服务器存储目录,存放模板等资源文件 | 不小于10G |
服务器端口准备
1)中间件、文件服务器、状态服务器包含多种,请根据选择的情况自行开放端口。
2)端口是否被占用请参见:端口占用查看。如果默认端口与其他工程有冲突,需要先修改端口,再开放对应的端口。
3)若同一个服务器部署多个 Tomcat 工程,需要修改 Tomcat 端口号以防端口冲突,具体可参见:修改Tomcat端口号
4)若防火墙开启,需要开放相关端口号:
Windows 系统开放端口步骤请参见:Windows服务器设置出入站规则
Linux 系统开放端口步骤请参见:Linux防火墙使用及配置
5)对于 docker 容器,或者服务器之间端口严格限制的环境,需要对节点的服务器之间开放端口,用于节点间通信。
选择 TCP 协议是 7800/7810/7820/7830/7840/7850/7860/7870 八个端口
选择 UDP 协议是 45588~65536 随机端口
分类 | 内容 | 端口 | 备注 |
---|---|---|---|
负载均衡 | Nginx | 80 或 443 | 外部端口,必须对外开放,可修改(nginx.conf),是集群系统入口端口,其他负载均衡的端口请自行配置 |
中间件 | Tomcat | 8080 | 外部端口,可不对外开放,可修改(server.xml),SSL、短地址等在负载均衡层面配置 |
WebLoigc | 7001 | ||
WebSphere | 9080 | ||
消息通知 | Websocket 端口 | 38888/39888 | 详情请参见: |
Websocket 转发端口 | 38889 | ||
文件服务器 | FTP | 20、21 | 内部端口,可修改(自行操作) |
SFTP | 22 | 内部端口,不可修改 | |
HDFS | 9000 | 内部端口,可修改(自行操作) | |
状态服务器 | redis 单机 | 6379 | 内部端口,可修改(redis.conf) |
redis 集群 | / | 内部端口,根据配置情况自行修改(redis.conf) |
服务器网络要求
1)公网环境和内网环境均可部署帆软应用和集群组件。如下表所示:
类型 | 带宽 | 网段 |
---|---|---|
公网 | 10M 以上 | 各个工程节点、集群组件、外接数据库处于同网段 |
内网 | 内网一般都是百兆/千兆带宽,故对带宽不做要求 | 各个工程节点、集群组件、外接数据库处于同网段 |
2)各个工程节点、集群组件、外接数据库间需要支持通信。
工程部署要求
服务器配置要求
帆软应用支持单机和集群部署,集群则为多个工程节点。
每个节点都是一个可以独立运行的工程,负责处理用户的请求,处理生成报表的任务和管理其他组件的工作。
建议按照工程并发数,准备不同数量和配置的工程节点,具体如下表所示:
注1:一个服务器只能部署集群的一个工程节点,不支持在一台服务器部署集群的多个工程节点。
注2:每个节点服务器 JVM 内存建议 8G 以上,不超过 32G,过大会导致系统 FullGC 时间过长。
注册用户数 | 在线用户数 | 并发用户数 | 推荐配置 70% 场景的平均响应时间低于 3s | 最低配置 70% 场景的平均响应时间低于 5s |
---|---|---|---|---|
2000-5000 | 400-1000 | 0-200 | 单机,节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:16GB 物理内存:32G | 单机,节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:8GB 物理内存:16G |
4000-10000 | 800-1500 | 200-300 | 单机,节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:16GB 物理内存:32G | 单机,节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:8GB 物理内存:16G |
6000-12000 | 1200-2500 | 300-500 | 单机 CPU:8 核 16 线程 2.4GHZ JVM 内存:24GB 物理内存:48G | 单机,节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:16GB 物理内存:32G |
8000-20000 | 1600-4000 | 500-800 | 2节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:24GB 物理内存:48G | 2节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:16GB 物理内存:32G |
10000-25000 | 2000-5000 | 800-1000 | 3节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:32GB 物理内存:64G | 2节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:24GB 物理内存:48G |
12000-30000 | 2400-6000 | 1000-1200 | 3节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:32GB 物理内存:64G | 3节点集群,每个节点满足: CPU:8 核 16 线程 2.4GHZ JVM 内存:24GB 物理内存:48G |
注1:用户维度说明:
注册用户数:系统注册了的用户。
在线用户数:用户同时在一定时间段的在线数量(一般注册人数的 5% - 20% 之间)。
并发用户数:同时向服务器发送请求的用户数(一般是在线人数的 10% - 25% 左右)。
注2:配置说明:
推荐配置时:70% 场景的平均响应时间低于 3s。
最低配置时:70% 场景的平均响应时间低于 5s。
服务器其他要求
分类 | 说明 | 参考文档 |
---|---|---|
语言要求 | 使用中文的用户将工程部署到 Linux 系统时,需确认系统中是否有中文语言包 | Linux 系统安装中文语言包 |
权限要求 | 为保证工程正常运行,最低要给工程文件夹 755 权限 | Linux文件权限配置 |
时间要求 | 请检查各工程节点服务器系统时间是否一致 不一致可能会导致集群不可用及同步问题 | Linux 系统如何配置各个节点的时间一致性? |
中间件要求
容器化部署/部署包部署无需准备本节内容,产品均内置了 JDK 和应用服务器,内置的 JDK 都为 OpenJDK 。
独立部署需要准备本节内容。需要自备应用服务器和 JDK 。
FineReport 是纯 Java 的 Servlet 应用程序,必须部署在 Tomcat、WebLogic、WebSphere 等中间件下。
启动中间件时就会加载 FineReport 这个 Servlet应用程序,工程才能正常运作。
中间件 | 中间件版本 | JDK 版本 |
---|---|---|
Tomcat | 推荐使用 Tomcat8 最新版本 注:使用推荐版本可减少因 Tomcat 版本过低导致的安全问题。 支持Tomcat7.0~9.0 版本 不支持 Tomcat10.0 版 | JDK 1.8 且小版本需在 JDK8u102 以上 注1:JDK 版本若不符合这个要求,部署启动时可能会遇到问题 注2:JDK 版本必须要与操作系统对应,如 32 位的系统只能使用 32 位的 JDK 注3:不支持 OpenLogic OpenJDK 。 |
WebLogic | Weblogic12.2.1.3 及以上 | |
WebSphere | WebSphere8.5 | |
JBoss | JBoss6 及以上 | |
Resin | Resin-4.0.58 |
1)中间件部署注意事项:
如需在docker容器上运行FineReport/FineBI,请确保内存大于8G。
建议使用解压版的 Tomcat 和 JDK。
同一个中间件中不能部署多个 FineReport 工程。
用户环境若安装多个 Tomcat ,不建议用户环境变量配置 CATALINA_HOME 或者 TOMCAT_HOME 。否则不论用户启动哪个 Tomcat ,启动的都是 CATALINA_HOME 指定的那个。
7.0.100 版本的 Tomcat 需要将 web.xml 放到%Tomcat_HOME%\webapps\webroot\WEB-INF下,否则会报错。文件请参见:web.zip
2)Windows 系统安装 JDK注意事项:
环境变量 JAVA_HOME 一定要有,Path 下一定要有%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
若环境变量指向的%JRE_HOME%/bin下无 attach.dll 文件,还需将%JAVA_HOME%/jdk/jre/bin下的 attach.dll 拷贝到此路径下,否则 Tomcat 启动后会报错:fine assist start failed
应用工程准备
容器化部署/部署包部署无需准备本节内容,产品内置了全新工程。全新工程部署后,平台登录的用户名和密码需要自己设置。
独立部署需要准备本节内容。
部署工程需要准备%FR_HOME%\webapps下的 webroot 文件夹。
需提前准备好工程,已有的工程或者重新 下载最新的工程 。
若使用已有的工程进行部署,平台登录的用户名和密码是已有工程的。
外接数据库要求
数据决策系统中除平台属性配置以外的所有信息,包括目录树设置、模板定时任务信息等,均存储于一个数据库中。
它管理和存储了工程节点的各种配置信息,保证各个节点的配置一致性,并方便管理员集中管理工程的元数据。
无论是单机还是集群,正式工程均建议配置外接数据库。
服务器配置要求
占用空间需要结合使用度进行调整,可以根据webapps/webroot/WEB-INF/embed/finedb文件夹大小配置,并根据实际大小预估未来使用大小,增大1~2倍。
外接数据库尽量和工程节点在同一网段,避免网络波动等问题。
如有条件,建议负载均衡、状态服务器、文件服务器、外接配置库组件分别部署在不同的服务器上,如条件不足,至少确保有单独的服务器部署这些组件。
配置类型 | 最低配置 | 推荐配置 |
---|---|---|
服务器数量 | 1 | 2,主从模式 |
物理内存 | 8GB | 16GB |
CPU | 2.4GHz以上 4核8线程 | 2.5GHz以上 8核16线程 |
网速 | 50Mbps | 100Mbps |
可用磁盘空间 | 100G以上 其中根目录可用磁盘不可小于40G | 100G以上 其中根目录可用磁盘不可小于40G |
磁盘读写速度 | 50MB/s | 100MB/s |
数据库类型要求
非容器化部署需要准备本章内容。容器化部署无需准备本节内容,会自动安装MySQL数据库并外接。
数据库类型 | 支持数据库版本 | 配置方法 |
---|---|---|
RDS MySQL | 不限制版本 | 配置MySQL5外接数据库 |
MySQL | 5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16 | |
8.0.11,8.0.16,8.0.20 | 配置MySQL8外接数据库 | |
Oracle | 10g、11g、12c | 配置Oracle外接数据库 |
SQL Server | 2000、2005、2008、2012、2014、2016 | 配置SQL Server外接数据库 |
2017 | ||
DB2 | 9.7、8.2、11.1 | 配置DB2外接数据库 |
PostgreSQL | 9.4.7、9.5.0、9.5.2、9.6.0 | 配置PostgreSQL外接数据库 |
负载均衡要求
在帆软集群架构中,负载均衡器是连接用户和集群节点之间的组件,以确保用户请求能够合理分配到不同的集群节点上。
负载均衡器可以通过各种算法来分配用户请求到不同的节点上,以获得更好的性能和负载均衡效果。
服务器配置要求
配置类型 | 说明 |
---|---|
服务器数量 | 如有条件,建议负载均衡、状态服务器、文件服务器、外接配置库组件分别部署在不同的服务器上 如条件不足,至少确保有单独的服务器部署这些组件 |
物理内存 | 8G |
CPU | 2.5GHz以上 8核16线程 |
可用磁盘空间 | 100G以上 其中根目录可用磁盘不可小于40G |
GCC编译器 | Nginx 在 Linux 系统上的部署依赖 GCC 编译器 请保证系统具备 GCC 编译环境 查询命令:gcc -v 安装命令:yum install gcc gcc-c++ |
网络要求 | 1)各个组件和应用工程建议在同一网段,避免网络波动等问题 2)各个组件和应用工程如处于公网环境,带宽需在10M以上 3)各个组件和应用工程之间需要网络畅通,互相端口可访问 |
负载均衡类型要求
非容器化部署需要准备本章内容。容器化部署无需准备本节内容,会自动安装Nginx。
高可用集群推荐使用Keepalived+Nginx,标准集群推荐使用Nginx。
不支持 Apache 负载均衡。
负载均衡 | 简介 |
---|---|
Keepalived+Nginx | 简介: Keepalived+Nginx是一种实现高可用性和负载均衡的可行方案。 Keepalived通过监控多个Nginx服务器的状态,当某个服务器出现故障时,它可以自动接管该服务器的IP地址,并将所有请求转发到其他正常的服务器上。 这样可以保证Web服务的高可用性,避免单点故障导致的服务中断。 优点: 高可用性:Keepalived可以监控服务器状态,并自动进行故障转移,确保服务的高可用性。 负载均衡:Nginx将请求分配到不同的服务器上,实现负载均衡,提高系统的性能和吞吐量 反向代理:Nginx提供了反向代理功能,将请求转发到不同的Web服务器上,保证了Web服务的高效性 缺点: 配置复杂:Keepalived+Nginx需要进行复杂的配置,需要一定的技术水平和经验 需要更多的硬件或虚拟资源,需要至少两个服务器,需要增加硬件或虚拟资源的投资 文档: |
Nginx | 简介:Nginx是一款高性能、高可靠性、开源的Web服务器和反向代理服务器 广泛应用于负载均衡、Web缓存、安全控制等领域 优点: 支持多种反向代理和负载均衡算法,高性能和高并发处理能力,配置简单,易于扩展 在 Linux 系统上具备很好的并发性能,并且占用极小的内存,稳定性和性能经过充分验证 缺点: 不同模块之间的整合不够完整,对于新手可能有一定的门槛 在 Windows 系统上,若并发需求超过 200,可能会出现并发问题 文档: |
Traefik | 简介:Traefik是一款现代化、动态负载均衡工具,主要用于Windows系统 优点: 无需安装,只要在命令行里执行即可,部署和使用非常简单 支持自动化更新反向代理和负载均衡配置 在 Windows 系统上具备良好的性能 缺点:部分功能需要高级版本,升级版本不够稳定 |
AWS ELB | 简介:AWS ELB是亚马逊云计算服务中提供的一种负载均衡服务,包括经典负载均衡、应用程序负载均衡和网络负载均衡三种类型,可以实现不同协议的负载均衡 优点:可用性和可靠性,支持多种协议,可快速部署,方便维护 缺点:费用较高,配置和权限管理较为复杂 |
F5 | 简介:F5是一家网络应用服务公司,推出的产品包括负载均衡、应用安全等 优点:高可用性和可靠性,支持多种应用场景和应用类型,提供高级应用安全解决方案 缺点:价格较高,配置较为繁琐,需要一定的技术支持 |
状态服务器要求
状态服务器是一个服务组件,用于存储集群节点的状态信息,如节点的运行状态、负载、任务处理情况等。
它可以辅助动态分配任务到合适的节点上,并帮助管理员进行实时监控和调度集群状态。
服务器配置要求
配置类型 | 说明 |
---|---|
服务器数量 | 如有条件,建议负载均衡、状态服务器、文件服务器、外接配置库组件分别部署在不同的服务器上 如条件不足,至少确保有单独的服务器部署这些组件 |
JVM/物理内存 | 4g/8g |
CPU | 2.5GHz以上 8核16线程 |
可用磁盘空间 | 100G以上 其中根目录可用磁盘不可小于40G |
GCC编译器 | Redis 在 Linux 系统上的部署依赖 GCC 编译器 请保证系统具备 GCC 编译环境 查询命令:gcc -v 安装命令:yum install gcc gcc-c++ |
网络要求 | 1)各个组件和应用工程建议在同一网段,避免网络波动等问题 2)各个组件和应用工程如处于公网环境,带宽需在10M以上 3)各个组件和应用工程之间需要网络畅通,互相端口可访问 |
状态服务器类型要求
非容器化部署需要准备本章内容。容器化部署无需准备本节内容,会自动安装Redis单机。
帆软集群方案中支持的状态服务器有:Redis单机、Redis集群、Redis哨兵、腾讯云Redis集群4.0
高可用集群推荐使用Redis集群,标准集群推荐使用Redis单机。
状态服务器 | 说明 |
---|---|
Redis单机 | 简介: Redis单机模式是Redis最简单的部署方式,只部署一个 Redis 应用 使用起来也最为简单,只有主机、端口、密码三个配置项 优点:易于配置和管理,无需考虑数据的分片和集群等问题,运维成本低 缺点:容易出现单点故障,容量受到单台服务器的限制,不能实现高可用性和负载均衡。 |
Redis集群 | 简介:Redis集群是一种基于分片的Redis部署方式,它将数据分散到多个节点中,从而可以实现横向扩展和高可用性。一般是6个Redis节点,组成三主三从的模式提供服务 优点: 由于数据分区存储,所以当一个主节点及其对应的从节点全部宕机后,整个 Redis 集群将不能使用 当存活的主节点数小于总节点数的一半时,整个 Redis 集群也会无法提供服务 |
Redis哨兵 | 简介:Redis哨兵是一种集中式的Redis高可用性解决方案,它会自动监测Redis节点状态,当某个节点失效时,自动进行故障转移。主要由一个主节点多个从节点和多个哨兵组成,一般就是一主二从三哨兵 优点: 提供较好的高可用性,对于Redis单机和Redis集群都适用 Redis哨兵只有一个主节点,当主节点宕机时,哨兵会选举一个从节点上升为主节点 缺点: 需要占用一定的系统资源,需要定期检查Redis的状态,不能实现水平扩展 Redis哨兵读写性能没有Redis集群好,因为Redis集群有多个主节点可以读写,所以不支持高并发 文档:Redis 哨兵模式插件 |
腾讯云Redis集群4.0 | 简介:部分用户在部署过程中,使用的 Redis 为腾讯云,帆软提供腾讯云 Redis 插件,方便用户在部署集群时进行适配,该插件只支持腾讯云数据库 Redis4.0 集群版 优点:云厂商,单机集群都有,直接选购,比较方便 缺点:需安装插件 文档:腾讯云 Redis 插件 |
文件服务器要求
文件服务器是集群中存储报表数据和附件的组件,它可以集中管理和共享集群节点之间的文件,确保文件数据的一致性和高可用性。
由于各个节点都是从同一个文件服务器读取资源文件,不涉及到同步,各个节点读取的资源文件永远会保持一致性。
服务器配置要求
配置类型 | 说明 |
---|---|
服务器数量 | 如有条件,建议负载均衡、状态服务器、文件服务器、外接配置库组件分别部署在不同的服务器上 如条件不足,至少确保有单独的服务器部署这些组件 |
物理内存 | 8g |
CPU | 2.5GHz以上 8核16线程 |
可用磁盘空间 | 500G~1T 其中根目录可用磁盘不可小于40G 后续请根据使用情况扩展 |
用户权限 | Linux系统安装FTP时需要使用最高用户(root),否则不能进行,若不安装FTP则可不考虑这一要求 |
网络要求 | 1)各个组件和应用工程建议在同一网段,避免网络波动等问题 2)各个组件和应用工程如处于公网环境,带宽需在10M以上 3)各个组件和应用工程之间需要网络畅通,互相端口可访问 |
文件服务器类型要求
非容器化部署需要准备本章内容。容器化部署无需准备本节内容,会自动安装MinIO。
帆软支持多种文件服务器,下面会对各个类型的文件服务器优缺点进行说明。
高可用集群推荐使用NAS,标准集群推荐使用SFTP。
推荐级别:SFTP≈MinIO>NFS>FTP≈HDFS
类型 | 优点 |
---|---|
SFTP | 简介:SFTP是一种通过SSH协议进行加密的文件传输协议, 优点:部署简单,是Linux系统自带的,相对于FTP而言更加安全和稳定 缺点: 非高可用方案,宕机后会影响整个服务的使用 由于 SFTP 的传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低得多 |
FTP | 简介:FTP是一种文件传输协议,可以通过FTP服务器实现文件上传、下载和管理等功能 优点:稳定性高,性能好,读写速度高 缺点:非高可用方案,宕机后会影响整个服务的使用 文档: |
HDFS | 简介:HDFS是Hadoop分布式文件系统的缩写,是基于分布式存储架构的文件系统,可以存储大规模的数据文件,并支持大数据分析和挖掘等操作 优点:高可用方案,分布式文件系统,具备高度容错性 缺点:部署难度大,运维成本高,建议已经有HDFS服务的公司选用此方案 文档:HDFS 资源仓库 |
MinIO | 简介:MinIO是一个轻量级的开源对象存储服务器,可以运行在任何环境中,并且支持各种云存储API 优点:MinIO具有易于部署和管理、高性能和低成本等优点 缺点:在工程化方面还存在一些不足 文档:MinIO资源仓库 |
S3 | 简介:使用支持 S3 协议的云存储文件系统作为文件服务器,包括阿里云 OSS 、华为云 OBS 、亚马逊 S3 优点:云存储,高可用方案,具备高度容错性,已有此类存储的客户对接很方便 缺点: 只支持部分S3,自建的S3不一定支持 备份还原类场景可能存在卡顿 文档:S3资源仓库 |
共享外部目录 | 简介:共享外部存储是一种将外部存储器与服务器挂载的方式,可以实现共享文件夹和网络共享等功能 优点: 硬件存储(NAS):稳定性高,存储空间一般都比较大 软件存储(NFS):部署简单,方案成熟 缺点: 硬件存储(NAS):成本高,且非完全的高可用,宕机后也会影响服务 软件存储(NFS):非高可用,服务端宕机后,客户端就无法再提供服务 文档:共享外部目录 |
通信协议
帆软集群支持 TCP 和 UDP 两种通信协议,目前默认是 TCP 协议,下面列举两种协议的区别:
TCP | UDP | |
---|---|---|
连接 | 基于连接 | 无连接 |
对系统资源的要求 | 较多 | 较少 |
程序结构 | 复杂 | 简单 |
数据正确性 | 保证 | 不保证 |
数据顺序性 | 保证 | 不保证 |
应用场景 | 网络负担重,对响应速度要求高 | |
socket | socket(PF_INET,SOCK_STREAM,0) | socket(PF_INET,SOCK_DGRAM,0) |
数据收发 | send/recv | sendto/recvfrom |
地址信息确定 | 在 connect/accept 时确定 | 在 sendto/recvfrom 函数中每次均需指定地址信息 |
其中需要注意的是,大部分云服务器(阿里云、亚马逊云等)都不支持UDP协议,因此只能选择TCP协议。
若服务器对TCP/UDP协议均支持,当节点数较少时选择TCP/UDP协议差异不大, 当节点数较多时,建议选择UDP协议,通信效率更高。