v5 到 v6,Rainbond 变化全面解读
距 Rainbond v6.0 发布已有两个月,但一直未详细说明 v5 到 v6 的具体变化。本文将重点解析两者在架构、功能及性能上的主要差异,帮助用户更好地理解升级后的优势。
架构精简
为了提升平台在各种场景下的稳定性与灵活性,同时减少资源占用,Rainbond v6 对底层组件进行了全面优化和整合,从根本上优化了平台的架构设计。
组件变动
v5 包含 19 个组件,而 v6 精简至 12 个组件,新增 2 个、移除 9 个,同时合并部分功能以提升性能和易用性。
- dashboard-metrics-scraper
- kubernetes-dashboard
- metrics-server
- nfs-provisioner
+ local-path-provisioner
+ minio
rainbond-operator
rbd-api
rbd-app-ui
rbd-chaos
- rbd-etcd
rbd-db
- rbd-eventlog
rbd-gateway
rbd-hub
rbd-monitor
rbd-mq
- rbd-node-z7cpd
- rbd-resource-proxy-bf75d46df-nlqbv
- rbd-webcli-58f99f7fc5-kmxfz
rbd-worker
✅新增组件:
- local-path-provisioner:替代本地存储的实现,减少对外部存储的依赖。
- minio:替代 nfs-provisioner ,移除 v5 版本中对于存储的强依赖挂载,将部分共享读取的文件存储在 minio 中。
❌移除组件:
- kubernetes-dashboard:作为插件支持,移除默认安装。
- rbd-node:简化架构,优化服务治理模式。
- rbd-eventlog:日志存储功能被移除,部分功能合并至 rbd-api。
- rbd-resource-proxy 和 rbd-webcli:部分功能合并至 rbd-api。
🔄 优化整合:
- 移除对 ETCD 的依赖。
功能详细变动
UI 样式调整
在 Rainbond v6 版本中,UI 上有很多细节发生了改变,例如统一侧边栏、Tab 样式、全局字体以及全局样式等,同时在 v6.1.0 版本中优化了团队视图页面,提升用户体验和视觉一致性。
网关改进
Rainbond v6 使用 APISIX 替代 OpenResty 作为默认网关,带来以下改进:
- 性能更高,支持动态配置。
- 扩展性更强,便于支持更多场景。
主机安装
Kubernetes 版本升级至 1.30,采用注册安装替代传统的主动安装方式,提升了易用性。
在线升级
新增一键在线升级功能,无需再通过命令行操作,降低维护门槛。
治理模式变更
在 Rainbond v6 版本中,rbd-node 组件被移除,与之相关的内置 Service Mesh 功能也一并取消。
Rainbond v5 中的内置 Service Mesh 基于 Envoy 进行改造,但在实际使用中发现 其在高并发场景下存在性能瓶颈,且维护成本较高。为提升系统性能并降低复杂性,Rainbond v6 默认采用了更轻量化的 Service 模式通信,简化了服务治理逻辑。
此外,为满足用户在服务治理上的多样化需求,v6 提供了灵活的扩展能力,用户可根据实际场景选择集成主流开源解决方案,如 Istio 或 Linkerd,从而更好地支持企业级流量管理和微服务治理需求。
日志管理优化
在 Rainbond v5 版本中,系统会收集并存储每个组件的日志,这一设计虽然提升了部分场景下的用户体验,但也对底层架构带来了显著压力。特别是在日志量较大或组件数量较多的情况下,rbd-node 和 rbd-eventlog 组件容易因负载过高而成为系统瓶颈,甚至影响整个 Rainbond 平台的运行稳定性。
为了解决这一问题,Rainbond v6 对日志管理功能进行了优化:
- 移除日志存储功能:不再对组件日志进行集中存储,仅保留日志展示功能。
- 精简组件:移除
rbd-node和rbd-eventlog,进一步优化架构稳定性和性能表现。
支持扩展日志收集插件,可以采用现有的成熟方案,例如 ELK 等。
移除对 ETCD 依赖
在 Rainbond v5 版本中,系统默认启动一个 etcd 服务供集群使用。然而,etcd 在实际运行中的作用有限,主要 由于历史遗留问题,导致其在 v5 中无法轻松移除。为优化系统架构和减少不必要的资源占用,Rainbond v6 对此进行了全面调整,移除了对 etcd 的依赖。
性能优化
Rainbond v6 对平台的整体性能进行了全面优化,重点提升了接口的响应速度,并针对高并发场景进行了深度调优。
默认注入环境变量
在 Rainbond v5 版本中,组件启动时会默认注入环境变量,例如 TENANT_ID 等。然而,这种方式在实际使用中暴露了一些问题。例如,与 Nacos 的环境变量 TENANT_ID 发生冲突。为彻底解决此类冲突问题,Rainbond v6 对默认注入的环境变量命名方式进行了调整,所有默认注入的环境变量均以 _ 开头,例如 _TENANT_ID。
存储改进
在 Rainbond v5 版本中,系统依赖底层的 NFS 服务来提供共享存储功能。Rainbond v6 对存储架构进行了优化,不再依赖底层存储,同时也移除了 NFS 服务,这意味着 v6 版本中没有共享存储,默认提供 local-path 本地存储供组件使用。如集群中扩展了其他存储,组件存储中会展示集群的 StorageClass 名称。
镜像、Git仓库调整
在 v6.1.0 版本中对镜像仓库、Git 仓库配置都进行了调整,支持以用户为中心的个人配置,每个用户都可以配置自己的镜像仓库和 Git 仓库。
源码构建增强
源码构建支持 Dockerfile 和其他语言共存,v5 版本中如果项目内存在 Dockerfile 和 Pom.xml 则 Dockerfile 优先,在 v6 版本中支持选择。
升级说明:从 Rainbond v5 到 v6
由于架构和功能的重大变化,Rainbond v5 无法直接升级到 v6 版本。为了顺利过渡,您需要进行全新安装 v6 版本,并将 v5 中的应用迁移到新的环境。迁移过程分为以下几步:
- 安装 v6 版本:首先,您需要全新安装 Rainbond v6 版本。请确保新环境已经设置并配置完毕。
- 发布应用到本地组件库(v5):在 v5 版本中,进入
应用视图 -> 应用发布,然后选择 发布到本地组件库。 - 导出应用(v5):在 v5 中,进入
平台管理 -> 应用市场,选择并导出应用。您可以将应用导出为文件,以便在 v6 环境中导入。 - 导入应用到 v6 版本:在 v6 版本中,进入
平台管理 -> 应用市场,选择 导入应用;选择从 v5 导出的应用文件,将其导入到 v6 环境中,完成应用迁移。 - 数据库迁移:如果您在 v5 中部署了数据库类应用,迁移时需要手动迁移数据库数据。请根据数据库类型和配置,执行相应的数据迁移操作,确保数据在新环境中能够正常访问和使用。
最后
Rainbond v6 相较于 v5 版本,做出了显著的架构和功能优化。通过精简和优化,平台更加易于使用,且能够满足企业和开发者在不同应用场景下的需求。如果您正在考虑升级到 Rainbond v6,建议根据本文提供的迁移步骤,顺利过渡到新版本,以便享受更加稳定、灵活和高效的云原生应用管理体验。