opencurve / curve

Curve is a sandbox project hosted by the CNCF Foundation. It's cloud-native, high-performance, and easy to operate. Curve is an open-source distributed storage system for block and shared file storage.
https://opencurve.io
Apache License 2.0
2.32k stars 521 forks source link

client如何支持热升级? #9

Closed wangmj17 closed 4 years ago

wangmj17 commented 4 years ago

请问“Client还支持热升级,可以在用户无感知的情况下进行底层版本变更”是如何实现的?是client分为两个进程(一个轻量的只有接口的light client,一个有实际逻辑的core client)吗?

wu-hanqing commented 4 years ago

是的,现在的方案是这种形式实现的,相关代码在nebd目录下。相关文档还在整理,后续会陆续发布出来。

热升级模块分为两个部分:

  1. part1:对应你说的light client部分,这部分与qemu/nbd进行对接,将qemu/nbd下发的请求转发到part2,并且只在特定的情况下进行重试处理。
  2. part2:接受并处理part1请求,并管理卷状态等。

part1是以库的形式提供给qemu/nbd,part2需要起单独的进程。 在升级的场景下,事先安装好新版的nebd/part2,然后停止part2进程,并重新拉起即可完成升级。

wangmj17 commented 4 years ago

请问client升级场景下,对IO延迟会有多大的影响?

wu-hanqing commented 4 years ago

请问client升级场景下,对IO延迟会有多大的影响?

测试阶段主要关注的是iops掉0,然后恢复的过程,这个时间在1~5s内。