StarRocks 物化视图创建与刷新全流程解析
最近在为 StarRocks 的物化视图增加多表达式支持的能力,于是便把物化视图(MV)的创建刷新流程完成的捋了一遍。
之前也写过一篇:StarRocks 物化视图刷新流程和原理,主要分析了刷新的流程,以及刷新的条件。
这次从头开始,从 MV 的创建开始来看看 StarRocks 是如何管理物化视图的。
创建物化视图
1 | CREATE |
最近在为 StarRocks 的物化视图增加多表达式支持的能力,于是便把物化视图(MV)的创建刷新流程完成的捋了一遍。
之前也写过一篇:StarRocks 物化视图刷新流程和原理,主要分析了刷新的流程,以及刷新的条件。
这次从头开始,从 MV 的创建开始来看看 StarRocks 是如何管理物化视图的。
1 | CREATE |
原文链接:[ On | No ] syntactic support for error handling
关于 Go 语言最有争论的就是错误处理:
1 | x, err := call() |
if err != nil
类似于这样的代码非常多,淹没了其余真正有用的代码。这通常发生在进行大量API调用的代码中,其中错误处理很普遍,只是简单地返回错误,有些最终的代码看起来像这样:
1 | func printSum(a, b string) error { |
最近我们在使用 StarRocks 的时候碰到了一些小问题:
而提交的 PR 是有发布流程的,通常需要间隔一段时间才会发布版本,但是我们线上又等着用这些修复,没办法就只有在本地打包了。
好在社区已经考虑到这种场景了,专门为我们提供了打包的镜像。
前段时间申请成为了 OpenTelemetry 的 Member 通过了,算是完成了一个阶段性目标;从 24 年的 2 月份的第一个 issue 到现在刚好一年的时间。
前段时间升级了生产环境的 StarRocks
,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下。
因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部署在 kubernetes 里的,所以没法按照官方的流程进入虚拟机手动启停对应的服务。
只能使用 operator 提供的方案手动修改对应组件的镜像版本,后续的升级操作交给 operator 去完成。
这些年我一直都是按照农历新年来写年终总结的,都说不出正月都是年,前些年一直都比较规律,今年确实是时间超了一些。
主要原因还是年末接了个活,需要在年初上线,导致这段时间都没太多时间写内容。
最近事情终于告一段落后才开始码字。
前段时间碰到一个 StarRocks 物化视图的 bug: https://github.com/StarRocks/starrocks/issues/55301
但是这个问题只能在存算分离的场景下才能复现,为了找到问题原因我便尝试在本地搭建一个可以 Debug 的存算分离版本。
之前也分享过在本地 Debug StarRocks,不过那是存算一体的版本,而存算分离稍微要复杂一些。
这里提到的本地 Debug 主要是指可以调试 FE,而 CN/BE 则是运行在容器环境,避免本地打包和构建运行环境。
前段时间有朋友问我如何在 kubernetes 里搭建监控系统,恰好在公司也在维护内部的可观测平台,正好借这个机会整理下目前常见的自建监控方案。
一个完整的监控系统通常包含以下的内容:
对于 k8s 的监控通常分为两个部分:
最近这段时间一直在做服务网格(Istio)相关的工作,背景是我们准备自建 Istio,首先第一件事情就是要安装。
我这里直接使用官网推荐的 istioctl 进行安装:
1 | $ cat <<EOF > ./my-config.yaml |
这里我使用的 profile 是 minimal,它只会安装核心的控制面,具体差异见下图: