首页 > 其他分享 >Trino418版本动态加载catalog不需要重启集群修改思路及实现2

Trino418版本动态加载catalog不需要重启集群修改思路及实现2

时间:2024-04-18 19:44:06浏览次数:26  
标签:数据源 Worker Trino418 Coordinator catalog Catalog 节点 加载

     原来没事的时候改了一个这样的功能,当时也没有仔细研究,后来也没继续弄。详细可以参考 https://www.cnblogs.com/liuzx8888/p/17635913.html

当时有1个问题:新增数据源需要每一个节点都去调取API注册,这样非常麻烦,最近闲下来又研究了一下,在原先的基础上做了一些改造。

具体流程:

 

 

 

具体的流程:

        1.新增注册、删除 Catalog的需要的一些Api接口对外提供服务

        2.通过 Coordinator 节点 API 注册新的数据源同时将相关的数据源信息保存到数据库,状态Status=2

        3.新增 WorkerCatalogSyncTask,Worker节点同步功能,参考了Trino 里面的 CatalogPruneTask功能,通过Coordinator定时任务捕获到新增数据源[Status=2]通知到所有的Worker节点进行注册

        4.所有的Worker注册完毕后,修改数据源状态为0

        5.让Worker节点启动的时候也能跟Coordinator 一样加载是有数据源 【DynamicCatalogManageMoudle 模式、文件模式本来就可以加载的】

 

     这样的改造好处就是所有的Catalog存储在数据库不容易丢失,无论哪个节点失败了或者新增节点都能从数据库获取到最近的Catalog目录,保证每个节点的Catalog都是最新的。

 

具体的一些代码实现截图给大家参考下,前前后后调试了很多,写的有点乱。

 

这些具体的可以参照前面的文章,Github 2个推送已经实现了基本的功能,我这里截图我自己实现的一部分:

1.让Worker 跟 Coordinator 一样有加载catalog目录的功能,新增WorkerDynamicCatalogManager 这个参考 CoordinatorDynamicCatalogManager 实现,基本一样,

把Worker跟Coordinator 一样的服务启动的时候注入,让Worker跟Coordinator有一样的功能,不然Worker初始化不会自动加载数据源。

 

2.WorkerCatalogSyncTask,参考CatalogPruneTask ,只要API的部分改造完成,这个地方就很好弄了,仿照一个就可以自动固定时间去访问各个Worker节点的API信息进行注册,这样就只需要跟Coordinator 通信就可以了

 

 

 

实践效果:

 定时获取是否有新增的数据源

 

API注册

 Coordinator:数据库会捕获到新增了1个Catalog,Worker注册完,数量从1变成0

 Worker:新增了相同的Catalog

 

 

标签:数据源,Worker,Trino418,Coordinator,catalog,Catalog,节点,加载
From: https://www.cnblogs.com/liuzx8888/p/18144271

相关文章

  • browserless 对于延迟加载图片的处理
    日常中大家为了提高web的性能基于可见区的图片加载基本常见,但是对于基于puppeteer的快照以及pdf生成就不太方便了,以下是一个解决方法,核心是过去内容的高度,基于代码进行滚动,模拟人的操作实现资源的加载参考实现constexpress=require("express");constpuppeteer=r......
  • 前端【小程序】04-小程序基础篇【分包加载】
    一、分包加载官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages.html​分包加载是优化小程序加载速度的一种手段。1.1为什么?​微信平台对小程序单个包的代码体积限制为2M,超过2M的情况下可以采用分包来解决即使小程序代码体积没......
  • 解决加载GPT2(Tensorflow预训练模型)的Linear权重到PyTorch的Linear权重 形状不匹配(互为
    解决报错内容:RuntimeError:Error(s)inloadingstate_dictforPyTorchBasedGPT2:sizemismatchfortransformer.h.0.attn.c_attn.weight:copyingaparamwithshapetorch.Size([768,2304])fromcheckpoint,theshapeincurrentmodelistorch.Size([2304,768]).........
  • 常见问题——VS调试出现:未加载mscorlib.pdb 的页面
    问题:VS在调试程序的时间,出现单独一个报错页面:未加载mscorlib.pdbmscorlib.pdb包含查找模块mscorlib.dll的源文件所需的调试信息解决方法:点击调试=>选项=>调试=>勾选:常规点击启用我的代码=》勾选:启用时若没有用户代码则发出警告(仅限托管)参考:https://www.cnblogs.com/Can-da......
  • JVM性能优化 —— 类加载器,手动实现类的热加载
    一、类加载的机制的层次结构每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的cl......
  • Visual Studio 工具箱报错:未能加载工具箱项,将从项目中移除(转)
    未能加载工具箱项1篇文章0订阅订阅专栏我是在使用AnyCpu模式下,出现上面的错误,因为我目标平台设置的是X64解决办法:只需要把【项目名称右键->属性->生成->目标平台】设置成AnyCpu,一开始我设置的X64,因为有些第三方Nuget包不允许在X86下运行,所以为了使程序在X64下运行,把目标平台......
  • SSM使用自定义ConditionalOnProperty实现按需加载spring bean
    SSM使用自定义ConditionalOnProperty实现按需加载springbean背景:公司提供的系统框架是SSM架构,SSM架构是没有springboot的ConditionalOnProperty注解的,而我们的系统是在很多区县部署的,每个区县会有一些定制化需求,其中有一个类只在一个区县里用得到,所以打算采用按需加载bean的......
  • 纯前端实现发版版本变化后页面重新加载
    0.原理通过在前端静态文件目录下维护一个版本,首次进入页面存储当前版本,轮询查询静态文件版本是否发生变化,如果变化则重新加载页面,如果未变化,则继续轮询1.优点比通过后端维护在数据库版本进行查询消耗更小,不需要查询数据库,也不用走到后台代码层,只需要访问到ngxin/......
  • video 分片加载
    API使用:MediaSource+SourceBufferhttpRangeseek进度跳转client.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=devic......
  • typmorm 类似ef的懒加载
    typmorm类似ef的懒加载在TypeORM中,可以通过设置关系的eager:false属性来实现类似于EntityFrameworkCore(EF)的懒加载功能。这意味着关联的实体将默认不会立即加载,而是在访问它们时才加载。以下是一个简单的例子,演示如何在TypeORM中实现懒加载:  import{Enti......