[GLCC2024] Nacos支持BETA灰度发布配置的历史变更记录

mftmpeh8  于 4个月前  发布在  Nacos
关注(0)|答案(3)|浏览(106)

GitLink编程夏令营(GLCC),是在CCF中国计算机学会指导下,由CCF开源发展委员会(CCF ODC)举办的面向全国高校学生的暑期编程活动。活动将覆盖近千所高校,并联合各大开源基金会、开源企业、开源社区、开源专家,旨在鼓励青年学生通过参加真实的开源软件开发,提升自身技术能力,为开源社区输送优秀人才。为青年学生提供开放友好的交流平台,希望进一步推动国内开源社区的繁荣发展。

Nacos将会作为指导组织参加本次的 “GitLink编程夏令营(GLCC)”

背景

当前配置历史 his_config_info 记录了配置的正式版本配置内容的新增,更新及删除,以提供用户查看配置的变更历史。功能当前存如下问题:

  • 历史记录仅保存了正式版本的配置变更记录,没有对灰度历史进行记录,beta的发布,停止beta的记录,当前增量对账的逻辑基于变更历史,因为灰度没有变更历史,在服务端节点重启时对beta的变更推送一致性也存在无法推送的问题,当前op_type的取值为新增- I,更新-U,删除-D, 需要添加字段区分配置类型config_type, 正式版本-formal,灰度版本-beta。
  • 基于配置变更历史中的beta发布及beta停止记录,实现对beta发布增量对账功能,对beta的一致性进行完善补充。
  • 历史记录保存信息不全,比如c_use,c_desc,effect,type,c_schema参数,需要在历史记录中保存,新增ext_info字段json格式,将附属信息放入json中回滚时也需要将这些附属信息一起回滚,(非正式版本历史暂不支持回滚)

目标

对历史记录功能进行补充完善,增加灰度类型的变更历史,完善历史记录字段,基于变更历史完善灰度类型的一致性对账机制。

难度

基础

导师

柳遵飞
liuzunfei@gmail.com

产出要求

  • 梳理当前配置变更的全链路流程,包括正式发布,灰度发布的流程;
  • 梳理基于配置变更历史的功能,包括增量对账机制,配置回滚机制;
  • 完成灰度变更历史,灰度增量堆栈,配置变更历史信息的补充完善
  • 添加相关文档,提供用户升级指引

能力要求

  • 熟悉Java编程语言
  • 良好的逻辑思维能力
  • 熟悉Markdown

GitLink Programming Summer Camp (GLCC) is a summer programming activity for college students nationwide, under the guidance of the China Computer Federation (CCF) and organized by the CCF Open Source Development Committee (CCF ODC). The event will cover nearly a thousand colleges and universities, and will unite various open source foundations, enterprises, communities, and experts with the aim of encouraging young students to participate in real open source software development, enhancing their technical skills, and providing outstanding talent for the open source community. GLCC also provides an open and friendly platform for young students to communicate and hopes to further promote the prosperity and development of the domestic open source community.

Nacos will participate as a guiding organization in “GitLink Programming Summer Camp (GLCC)” .

Background

The his_config_info table currently records additions, updates, and deletions of the formal configuration versions, allowing users to view the history of configuration changes. However, it has the following issues:

  • Incomplete History for Beta Configurations:
    The history table only records changes for formal versions but does not track the history of gray (beta) configurations. Actions like beta publishing and stopping beta are not recorded. Since the current reconciliation logic is based on the change history, there are issues with pushing consistent beta changes upon server node restarts due to the lack of beta change history. The current values of op_type are Insert - I, Update - U, and Delete - D. We need to add a field to distinguish configuration types , config_type , with values formal for formal versions and beta for beta versions.
  • Beta Incremental Reconciliation:
    Based on the configuration change history, including beta publishing and stopping beta records, we need to implement incremental reconciliation for beta publishing and improve the completeness of beta consistency.
  • Incomplete Historical Records:
    The historical records lack some important information, such as c_use, c_desc, effect, type, and c_schema parameters. This information needs to be included in the history. We need to add an ext_info field in JSON format to store auxiliary information. This auxiliary information should also be restored during rollback (note: rollback for non-formal versions is not supported).

Target

Enhance the configuration history functionality by adding change history for beta (gray) configurations, improving historical record fields, and refining the consistency reconciliation mechanism based on the change history for beta configurations.

Difficulty

Basic

Mentor

Zunfei Liu
( liuzunfei@gmail.com )

Output Requirements

  • Document the entire configuration change process, including both formal and beta releases.
  • Document functionalities based on configuration change history, including the incremental reconciliation mechanism and configuration rollback mechanism.
  • Implement change history for beta configurations, incremental reconciliation for beta changes, and improve the completeness of configuration change historical information.
  • Add relevant documentation and provide an upgrade guide for users.

Technical Requirements

  • Proficiency in the Java programming language
  • Strong logical thinking skills
  • Familiarity with Markdown
z18hc3ub

z18hc3ub1#

您好,我对这个项目很感兴趣,请问这个项目目前有候选人了吗

qnakjoqk

qnakjoqk2#

您好,我对这个项目很感兴趣,请问这个项目目前有候选人了吗

同学,可以通过glcc报名参加

frebpwbc

frebpwbc3#

您好,我对这个项目很感兴趣,请问这个项目目前有候选人了吗

同学,可以通过glcc报名参加

嗯嗯,已经报名了,给导师发邮件了,但是导师没回复

相关问题