一、行业惊雷:十亿级赛道的 AI 新战场

2026 年初,硅谷顶级投资基金 Altimeter Capital 的一则观点引发全球科技圈震动:继编程之后,电子表格正成为 AI 下一个“超级垂直领域”。这一判断并非空穴来风——公开数据显示,全球电子表格月活跃用户已达 15-16 亿,远超编程领域 2900 万开发者的规模;而软件行业 1 万亿美元市场中,近半数应用本质上都是“Excel 封装层”,从 CRM 到财务工具,从运营分析到科研数据处理,电子表格的渗透力无处不在。

更关键的是,电子表格天然具备“产品驱动增长”的基因。正如编程领域凭借“自下而上”的传播模式,诞生了 4 家年经常性收入(ARR)超 10 亿美元的巨头,电子表格用户同样拥有直接的工具选择权和预算支配权——尤其是金融行业 1.5 亿高价值从业者,他们对生产力工具的付费意愿极强,且能快速感知 AI 带来的效率提升。OpenAI、Anthropic 等巨头的加速布局,恰恰印证了这一赛道的巨大潜力。
在这里插入图片描述
在这里插入图片描述

在中国市场,这一趋势更为明显。金山 WPS 全球月活设备已达 6.32 亿,微软 Office 在中国企业市场的渗透率超 90%,加上谷歌 Workspace 的付费客户突破 1100 万,构成了全球最庞大的电子表格用户基数。但与此同时,开发者们正面临双重困境:一方面,传统表格工具的公式编写、数据分析门槛过高,非技术用户难以驾驭;另一方面,现有 AI 工具多为独立应用,缺乏与表格场景的深度融合,集成成本高、适配性差。

正是在这样的行业背景下,葡萄城 SpreadJS 推出的 AI 插件,不仅精准命中了开发者的核心痛点,更以“表格原生 AI”的创新模式,成为 AI 电子表格赛道的先行者。作为深耕表格技术 20 余年的国产化控件领军者,SpreadJS 的 AI 布局并非跟风,而是基于其强大的表格内核能力,对开发者效率的一次颠覆性重构。

二、根基所在:SpreadJS 的表格内核与 AI 基因

要理解 SpreadJS AI 插件的核心优势,首先需要明确其底层逻辑:AI 并非独立于表格的附加功能,而是深度融入表格操作全流程的“智能助手”。这一模式的实现,离不开 SpreadJS 多年积累的三大核心能力:

在这里插入图片描述

1. 国产化兼容的全功能表格内核

SpreadJS 是国内唯一实现与 Excel 高度兼容的前端表格控件,支持 450+Excel 公式、数据透视表、条件格式、图表等核心功能,同时适配 Vue、React、Angular 等所有主流前端框架,以及移动端、桌面端、云端等多终端场景。这种兼容性意味着开发者无需重构现有表格系统,即可无缝集成 AI 能力——这对于国内大量依赖 Excel 进行业务流转的企业而言,是降低迁移成本的关键。

在这里插入图片描述

2. 高度可编程的开放式架构

SpreadJS 提供完整的 API 体系和插件生态,支持自定义函数、单元格渲染、数据校验等深度定制需求。这种可编程性使其能够灵活对接各类 AI 模型(包括 OpenAI、Claude、DeepSeek 等主流模型,以及国产化大模型),开发者可根据业务需求选择合适的 AI 服务,无需受限于单一供应商。这种开放性在国产化替代浪潮中尤为重要,能够满足企业对数据安全和模型自主可控的要求。

3. 企业级的数据处理性能

针对中国企业常见的大数据场景,SpreadJS 支持百万级数据的前端渲染和实时计算,配合虚拟滚动、按需加载等优化技术,即使在复杂报表和大规模数据分析场景下,也能保持流畅的操作体验。这为 AI 功能的落地提供了性能保障——无论是批量文本翻译、复杂公式生成,还是大数据量的透视表分析,都能快速响应,避免卡顿。

正是基于这三大核心能力,SpreadJS AI 插件实现了“表格+AI”的深度融合,而非简单的功能叠加。其插件化设计让开发者可以按需集成 AI 能力,既保护了现有系统投资,又能快速提升产品竞争力,完美契合了国内企业“渐进式数字化转型”的需求。

三、核心突破:SpreadJS AI 插件的三大杀手级功能

SpreadJS AI 插件的核心价值,在于将复杂的 AI 技术转化为开发者可直接调用的“低代码工具”,覆盖公式处理、数据分析、文本处理三大核心场景,让开发者无需具备 AI 专业知识,即可快速实现智能表格应用。

1. 零代码门槛的三大 AI 内置函数

SpreadJS AI 插件提供 SJS.AI.TRANSLATE、SJS.AI.TEXTSENTIMENT、SJS.AI.QUERY 三个开箱即用的内置函数,覆盖多语言处理、情感分析、自然语言查询等高频场景,无需编写复杂逻辑,直接通过单元格公式即可调用。

在这里插入图片描述

(1)SJS.AI.TRANSLATE:多语言批量翻译

在全球化业务场景中,跨国报表本地化、多语言用户反馈处理是常见需求。传统方式需要手动复制文本到翻译工具,效率低下且易出错。SJS.AI.TRANSLATE 支持批量翻译单元格区域文本,支持 20+主流语言,且能保留原有的数据格式和排版。

应用场景:电商平台的多语言评论处理、跨国企业的财务报表本地化、外贸订单的合同条款翻译。

(2)SJS.AI.TEXTSENTIMENT:智能情感分析

用户反馈分类、舆情监测、客户满意度评估等场景,需要对大量文本进行情感判定。SJS.AI.TEXTSENTIMENT 支持自定义情感标签(如“好评/差评/中性”“积极/消极”),自动分析单元格文本的情感倾向,准确率达 95%以上。

应用场景:客服系统的用户反馈分类、电商平台的商品评价分析、企业内部的员工调研统计。

(3)SJS.AI.QUERY:自然语言数据查询

非技术用户往往难以编写复杂的 Excel 公式,而 SJS.AI.QUERY 允许通过自然语言指令直接获取数据结果,无需记忆函数语法。无论是数据统计、信息提取,还是常识查询,都能快速返回结构化结果。

应用场景:市场调研的数据快速统计、行政部门的日程查询、财务人员的基础数据计算。

这三大函数的设计遵循“零代码、高复用”原则,开发者无需关注 AI 模型的调用细节,只需像使用普通 Excel 函数一样嵌入表格,即可让非技术用户享受 AI 带来的便利。同时,函数支持批量处理和跨单元格引用,完全适配企业级的大规模数据处理场景。

2. AI 公式助手:让复杂公式“开口说话”

公式编写是表格应用的核心痛点之一。Excel 的高级函数(如 INDEX+MATCH、LET、SUMIFS 等)语法复杂、逻辑嵌套深,即使是资深开发者也需要反复调试。SpreadJS AI 插件的公式助手功能,通过“生成+解释”双向赋能,彻底降低了复杂公式的使用门槛。

(1)公式自动生成:自然语言转公式

开发者或用户只需用中文描述需求(如“找出 B6:G6 中高频出现的数字”“根据销售额大于 20000 的条件筛选区域”),AI 即可自动生成对应的表格公式,支持 450+Excel 原生函数和行业特定函数(如财务领域的 XIRR、MIRR)。生成的公式基于海量知识库训练,准确率达 98%,可直接复用或二次修改。

实战案例:某零售企业的销售数据分析系统中,开发者需要实现“筛选销售额总计大于 20000 的区域”功能。通过 SpreadJS AI 公式生成,只需输入自然语言需求,即可自动生成公式:

=FILTER(UNIQUE(销售[所属区域]),SUMIFS(销售[销售额(元)],销售[所属区域],UNIQUE(销售[所属区域]))>20000)

在这里插入图片描述

无需手动编写复杂的 FILTER 和 SUMIFS 嵌套逻辑,极大提升了开发效率。

(2)公式智能解释:复杂公式分步拆解

对于已有的嵌套公式,AI 公式助手能够自动分步拆解逻辑流程,解释变量定义、条件判断规则和返回结果含义。例如,针对成绩评级公式=LET(score,B2,IF(score>=90,"A",IF(score>=80,"B",IF(score>=70,"C",IF(score>=60,"D","F"))))),AI 会拆解为:

  1. 定义变量 score,取值为 B2 单元格的成绩;
  2. 嵌套 IF 语句判断等级:90 分及以上为“A”,80-89 分为“B”,依次类推;
  3. 60 分以下返回“F”。

这一功能不仅降低了开发者的公式学习成本,更方便团队协作中的公式复用和维护——新人无需反复询问即可理解旧代码中的复杂公式逻辑。
在这里插入图片描述

3. 对话式透视表:数据分析无需“拖拽”

数据透视表是企业数据分析的核心工具,但传统透视表需要手动拖拽行、列、值字段,操作复杂且耗时。SpreadJS AI 插件的对话式透视表功能,支持通过自然语言指令自动生成透视表,并提供智能分析能力,让数据分析像聊天一样简单。

(1)自动生成透视表

用户只需输入业务需求(如“按照销售渠道和产品类别统计华东区域的销售额”“按出游类型和组织方式统计游客数量”),AI 即可自动识别数据源中的字段关系,生成对应的透视表布局,无需手动配置字段映射。生成的透视表支持 Excel 所有原生功能,包括筛选、排序、数据钻取等。
在这里插入图片描述

(2)智能数据分析

基于生成的透视表,用户可进一步输入业务问题(如“办公用品类别中每个区域哪个渠道表现最好”“找出销售额最高的前三个产品”),AI 会自动分析数据并返回结构化结论,同时提供数据支撑。例如,针对办公用品销售数据,AI 会输出“华东区域经销商渠道表现最佳,销售额 24386 元;东北区域线下门店优势明显,销售额 11965.5 元”等结论,并列出详细数据表格。

应用场景:财务部门的月度营收分析、运营团队的渠道效果评估、市场部门的用户行为分析。对于需要快速生成决策支持数据的场景,效率提升可达 80%以上。
在这里插入图片描述

此外,透视表功能还支持视图保存与加载,开发者可将常用的分析逻辑保存为模板,后续无需重复生成,进一步提升工作效率。

四、实战落地:三大典型场景的效率革命

SpreadJS AI 插件的价值,最终体现在具体的业务场景中。以下三个典型案例,展现了其如何解决中国开发者的实际痛点,实现从“能用到好用”的跨越。

场景 1:财务报表自动化系统

行业痛点:财务人员需要处理大量 Excel 报表,包括多语言报表本地化、复杂财务公式编写(如折旧计算、税务核算)、报表数据透视分析等,工作繁琐且易出错;开发者需要为不同财务场景定制公式和报表模板,开发周期长。

SpreadJS AI 解决方案

  • 利用 SJS.AI.TRANSLATE 函数,自动将跨国公司的财务报表翻译成中文,保留原有的公式和格式,避免手动翻译导致的错误;
  • 通过 AI 公式助手,财务人员直接用自然语言描述需求(如“计算固定资产年折旧额(直线法)”),即可生成对应的财务公式,无需记忆复杂的折旧计算公式;
  • 对话式透视表自动按部门、科目统计营收数据,财务人员输入“分析各部门季度费用占比”,即可快速获取分析结论,支撑预算决策。

效果:报表处理效率提升 70%,公式编写错误率降至 1%以下,开发者的报表模板开发周期从 1 周缩短至 1 天。

场景 2:电商平台用户反馈分析系统

行业痛点:电商平台每天产生海量用户评论,需要分类统计好评、差评、中性评价,提取关键反馈(如物流慢、产品质量问题),传统方式依赖人工标注,效率低下;开发者需要定制复杂的文本处理逻辑,开发成本高。

SpreadJS AI 解决方案

  • 利用 SJS.AI.TEXTSENTIMENT 函数,批量分析用户评论的情感倾向,自动分类为“好评”“差评”“中性”,支持自定义标签(如“物流问题”“质量问题”);
  • 通过 SJS.AI.QUERY 函数,提取评论中的关键信息(如“统计提到‘物流慢’的评论数量”“找出用户最满意的产品功能”);
  • 对话式透视表按产品类别、评论情感、反馈关键词生成分析报表,运营人员输入“分析近 30 天手机类产品的主要投诉点”,即可快速获取数据支撑。

效果:用户反馈处理效率提升 90%,开发者无需编写复杂的文本处理和数据分析逻辑,系统上线周期从 1 个月缩短至 2 周。

场景 3:企业内部低代码工具平台

行业痛点:企业内部工具平台需要满足不同部门的个性化数据处理需求,非技术用户难以自行编写公式和生成报表,依赖 IT 部门支持,响应速度慢;开发者需要频繁定制功能,维护成本高。

SpreadJS AI 解决方案

  • 基于 SpreadJS 的可编程架构,将 AI 插件集成到低代码平台中,非技术用户可通过自然语言生成公式、创建透视表,无需 IT 支持;
  • 开发者通过 SpreadJS 的 API 自定义 AI 函数(如结合企业私有数据的“客户信用评级”函数),扩展 AI 能力;
  • 支持多终端适配,员工可在电脑端、移动端随时处理数据,生成分析报告。

效果:IT 部门的支持需求减少 60%,非技术用户的自助数据分析能力提升 80%,开发者的维护成本降低 50%。

五、差异化优势:为什么是 SpreadJS?

在 AI 电子表格赛道中,SpreadJS AI 插件的核心竞争力并非单一功能的领先,而是基于“开发者视角”的全流程赋能,其差异化优势体现在三个维度:

1. 原生集成,而非“外挂”

与市面上独立的 AI 表格工具不同,SpreadJS AI 插件是基于表格内核的原生功能,无需跳转至第三方平台,所有 AI 操作都在表格内部完成。这种原生集成带来两大优势:一是数据无需外泄,保障企业数据安全(尤其符合国内数据合规要求);二是操作流程无缝衔接,用户无需切换工具,学习成本低。

2. 开发者友好的低代码集成

SpreadJS AI 插件提供极简的集成方式,支持前端直接调用或服务端部署,开发者只需添加几行代码即可完成集成:

// 前端集成示例
<script src="xxxx/spread-sheets-ai-addon/dist/gc.spread.sheets.ai.min.js"></script>
// 注册AI服务
spread.injectAI(async (requestBody) => {
  requestBody.model = 'your-model-name';
  const response = await fetch('/api/queryAI', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify(requestBody)
  });
  return response;
});

同时,插件支持自定义 AI 模型对接,开发者可根据业务需求选择公有云模型或私有化部署的国产化模型,灵活适配不同场景。

3. 国产化适配与企业级服务

作为国产化表格控件领军者,SpreadJS 完全适配信创体系(包括麒麟操作系统、统信 UOS、飞腾芯片等),满足政府、金融、能源等关键行业的国产化替代需求。同时,葡萄城提供 7×12 小时的技术支持和定制化开发服务,解决开发者在集成过程中遇到的各类问题——这是国外同类产品难以比拟的优势。

4. 与行业趋势的深度契合

SpreadJS AI 插件的设计理念,完美契合了 AI 电子表格的三大发展趋势:一是“自下而上”的传播模式,通过降低开发者和用户的使用门槛,实现快速推广;二是金融行业作为核心切入点,其高价值用户群体能快速感知 AI 带来的 ROI;三是“表格即平台”的扩展潜力,通过 AI 能力将表格从数据载体升级为应用创建平台,覆盖 CRM、数据分析、内部工具等更多场景。

六、写给开发者:AI 时代的表格工具选型指南

在 AI 电子表格赛道加速爆发的今天,开发者选择工具时需要关注三个核心要素:一是兼容性,能否适配现有系统和国内主流软件生态;二是开放性,能否灵活对接不同 AI 模型和业务场景;三是实用性,能否真正解决开发痛点、提升产品价值。

SpreadJS AI 插件的推出,不仅是对这三个要素的完美回应,更提供了一种“渐进式 AI 升级”的解决方案——开发者无需重构现有系统,即可通过插件快速为表格应用注入 AI 能力,既保护了历史投资,又能快速提升产品竞争力。

对于正在布局 AI 电子表格的开发者而言,SpreadJS 的核心价值在于:它不是一个简单的“AI 工具”,而是一个“AI+表格”的完整解决方案——从表格内核到 AI 能力,从前端集成到后端部署,从标准化功能到定制化服务,全方位满足企业级应用的开发需求。

未来,随着 AI 大模型能力的持续提升,SpreadJS 还将推出更多行业定制化 AI 功能,包括财务领域的自动报表生成、科研领域的数据分析建模、教育领域的公式教学辅助等,进一步拓展 AI 电子表格的应用边界。

七、立即体验:开启你的 AI 表格效率革命

为了让开发者快速体验 AI 带来的效率提升,SpreadJS 提供了完整的 AI 插件试用方案:

  1. 下载 Demo:包含公式生成、透视表分析、文本处理等所有核心功能的可直接运行示例;
  2. 在线体验:通过葡萄城开发者官网(https://www.grapecity.com.cn/developer/spreadjs/)在线试用,无需本地部署;

在十亿级用户的 AI 电子表格赛道上,先发优势至关重要。选择 SpreadJS AI 插件,不仅能让你快速推出具备竞争力的智能表格应用,更能借助其国产化适配、企业级性能和深度定制能力,在激烈的市场竞争中占据先机。

AI 重构表格的时代已经到来,而效率革命的钥匙,就在你的手中。立即下载 SpreadJS AI 插件,开启属于你的智能开发之旅!

背景

在云原生场景中,为了最大化资源利用率,越来越多的集群采用资源超卖策略和混合部署方式。然而,这种模式在提升集群效率的同时,也显著增加了宿主机与容器化应用之间的资源竞争风险。

在资源紧张的场景中,CPU 延时和内存申请延迟(Memory Reclaim Latency)等内核级延迟问题,往往会直接传导至应用层,造成响应时间(RT)波动,甚至引发业务抖动。对于依赖低延迟和稳定性的关键业务而言,这类问题可能意味着性能瓶颈、用户体验下降,甚至业务中断。

然而,现实中由于缺乏足够的可观测性数据,工程师通常很难将应用层抖动与系统层面的延迟精确关联,排查效率低下。为了解决这一挑战,本文将结合实战案例,介绍如何在 Kubernetes 环境中使用 ack-sysom-monitor Exporter [1]对内核延迟进行可视化分析与定位,帮助你快速识别问题根因,并高效缓解由延迟引发的业务抖动。

内存申请延时

进程陷入内存分配的慢速路径往往是造成业务时延抖动的元凶之一。如下图所示,在进程内存分配的过程中,如果系统或容器内存达到了 low 水线,会触发系统内存的异步回收(kswapd 内核线程回收);如果剩余内存进一步低于 min 水线,就会进入直接内存回收(direct reclaim)和直接内存规整(direct compact)阶段,这两个动作正是可能引起长业务(进程)时间延时的罪魁祸首。

  • 直接内存回收是指进程在申请内存的过程中,由于内存紧缺,进程被迫阻塞等待内存的同步回收。

  • 直接内存规整是指进程在申请内存的过程中,由于内存碎片太多,进程被迫阻塞等待内核将内存碎片规整成连续可用的一片内存。

因为直接内存回收和规整的过程可能会消耗一定的时间,所以进程会阻塞在内核态,造成长时间的延时和 CPU 利用率的升高,从而导致系统负载飙高和(业务)进程的延时抖动。

图: Linux 内存水线

CPU 延时

CPU 延时是指从任务变为可运行状态(即它已准备好运行,不再受阻塞),到它真正被操作系统调度器选中并执行的时间间隔。长时间的 CPU 延时可能会对业务造成影响,如网络数据包到达后,业务进程没有被及时调度运行进行收包从而导致网络延时等。

延时抖动场景常见 CASE

CASE 1: 容器内存紧张导致容器内应用抖动

容器启动时设置了内存限制(Limit)。当容器内进程申请内存且容器内存使用量达到容器内存限制时,容器内进程就会发生直接内存回收和规整导致应用阻塞。

CASE 2: 宿主机内存紧张导致容器内应用抖动

虽然容器内存富余,但容器所在宿主机内存紧张。当容器内进程申请内存且节点内存可用内存低于节点 min 内存水位时,容器内进程就会发生直接内存回收。

CASE 3:  就绪队列等待时间长导致应用抖动

应用进程被唤醒进入就绪队列,但是由于就绪队列较长,当前 CPU 存在阻塞任务等原因导致长时间没有被调度至 CPU 运行导致应用抖动。

CASE 4:中断,阻塞时间长导致应用抖动

当系统资源紧张或发生资源争抢时,大量网络等软件中断或硬件中断会持续触发。此时内核处理这些中断的耗时会显著增加,导致 CPU 长时间被内核占用。应用程序在运行系统任务时需要争夺同一个锁,但此时锁资源长期被占用无法释放,最终引发进程卡死。

CASE 5:内核路径持锁阻塞引发网络抖动延时

当进程通过系统调用进入内核态执行路径后,由于路径中可能涉及访问大量系统资源从而长时间持有内核自旋锁;当某个 CPU 在持有自旋锁后便可能关闭当 CPU 中断和不再发生调度,从而导致内核 ksoftirq 软中断无法正常调度收包,从而引发网络抖动。

如何识别解决系统抖动延时

ACK 团队与操作系统团队合作推出了 SysOM(System Observer Monitoring) 操作系统内核层的容器监控的产品功能,目前为阿里云独有;通过查看 SysOM 容器系统监控 -None 和 Pod 维度中的相关大盘,可以洞悉节点和容器的抖动延时。

内存申请延时

  • 查看 SysOM 容器系统监控-容器维度中的 Pod Memory Monitor 中的 Memory Global Direct Reclaim Latency 和 Memory Direct Reclaim Latency 和 Memory Compact Latency 监控大盘,可以直观地观察到 pod/ 容器中的进程因为发生直接内存回收和直接内存规整而被阻塞的时长

  • 查看 SysOM 容器系统监控-节点维度中的 System Memory 中的 Memory Others 大盘,可以观察到节点上是否发生了直接内存回收。

具体指标解析

  • Memory Others

该大盘中的 pgscan_direct 折线表示节点中在直接内存回收阶段扫描的页数,只要该折线的数值不为 0,说明在节点中发生了直接内存回收。

  • Memory Direct Reclaim Latency

该大盘表示:当前采样点与上一采样点,由于容器内存使用量达到容器内存限制或者节点内存可用内存低于节点内存水位导致的容器中发生的直接内存回收在不同阻塞时长的次数增量(如 memDrcm_lat_1to10ms 表示直接内存回收延时时间在 1-10ms 的增量次数。memDrcm_glb_lat_10to100ms 表示直接内存回收延时时间在 10-100ms 的增量次数)。

  • Memory Compact Latency

该大盘表示:当前采样点与上一采样点,由于节点内存碎片太多导致的容器中无法申请连续内存而发生的直接内存规整次数增量。

问题解决

内存回收延时最直接的原因就是节点/容器内存资源紧张。要优化内存使用,就需要看清内存和用好内存:

  • 要看清内存,可以通过阿里云操作系统控制台推出的功能-节点 /Pod 内存全景分析[2],该功能对节点 /Pod 使用的内存进行了详细的拆解,细粒度到每个 Pod 的详细内存组成。通过 Pod Cache(缓存内存)、InactiveFile(非活跃文件内存占用)、InactiveAnon(非活跃匿名内存占用)、Dirty Memory(系统脏内存占用)等不同内存成分的监控展示,发现常见的 Pod 内存黑洞问题。

  • 要用好内存,可以通过 ACK 容器服务团队推出 Koordinator QoS 精细化调度功能[3],通过精细化调整容器的内存水线,提早进行异步回收,缓解直接内存回收带来的性能影响。

CPU 延时监控

查看 SysOM 容器系统监控-节点维度中的 System CPU and Schedule 大盘:

具体指标解析

  • WaitOnRunq Delay

该大盘表示系统中所有可运行进程在运行队列中等待运行的时间的平均值;通过该大盘,用户可以了解到系统中是否存在调度延时情况,如果存在超过 50ms 的毛刺,就可以说明系统中存在比较严重的调度延时,大部分进程都无法得到及时的调度。

  • Sched Delay Count

该大盘表示:系统没有发生调度的时间分布统计。(如 SchedDelay 100ms 表示:系统中有 100ms 没有发生调度的次数统计)。如果观察到 SchedDelay 100ms 折线发生了陡增,那么可以说明系统中发生了长时间不调度,系统上的业务进程可能因为得不到调度而受到影响。

问题解决

造成系统调度延时的原因有很多,如在 CPU 中运行的任务在内核态运行时间过长,当前 CPU 出现长时间的关中断等。如果需要进一步定位产生调度延时的具体原因,可以使用阿里云操作系统团队推出的产品-阿里云操作系统控制台中的调度抖动诊断[4]进行进一步的根因分析。

案例分析 - 快速定位由 CPU 延时导致的网络抖动

背景:

某金融行业客户在 ACK 上创建的集群中,某两个节点中业务 pod 连接 redis 经常出现连接失败报错;在经过网络同学的初步排查后,基本可以锁定是由于节点内核收包慢(延时 500ms+),导致 redis 客户端断开连接。

问题识别定位:

1. 通过查看网络抖动应时间的 Sched Delay Count 大盘,可以看到在对应的时间点中,伴随着多次 1ms 以上的 sched delay,这说明了系统中这个时间点发生多次某个 CPU 不发生调度 500ms 以上,那么很有可能 ksoftirq 得不到调度从而引发了网络延时抖动。

2. 通过操作系统控制台的节点异常详情,我们可以看到发生了调度抖动异常和 cgroup 泄漏异常:

3. 查看操作系统控制台中的调度抖动诊断的诊断报告,获得了如下图的诊断报告:

4. 结合抖动诊断和 cgroup 泄漏异常基本可以确定是 memory cgroup 泄漏且 kubelt 访问 memory cgroup 的 memory.numa_stat 文件时,由于 numa_stat 中的数据在 Alinux2 内核中多次遍历 cgroup 层级导致调度抖动进而影响 softirq 收包。

5. 最后结合操作系统团队的 memory cgroup 泄漏工具分析,可以确定由于客户使用 cronjob 定时拉起容器读取日志导致 cgroup 泄漏(容器创建时会创建一个新的 mem cgroup,读取文件会产生 page cache 并统计在该 cgroup 中,容器退出后由于 page cache 未释放使当前 cgroup 处于僵尸状态,未被完全清除)。

问题解决:

所以问题从解决网络抖动变为了解决 memory cgroup 泄漏问题:

1、临时止血方法:通过 drop cache 回收 page cache,从而使对应的僵尸 cgroup 被正常清除。

2、使用 Alinux 的自研特性,开启僵尸 cgroup 回收功能;具体使用可参考[5]中“回收 zombie memcgs”章节。

您在使用操作系统控制台功能的过程中,有任何疑问和建议,可以加入钉钉群(群号:94405014449)反馈,欢迎大家入群交流。

操作系统控制台钉钉交流群

参考链接:

[1]SysOM 内核层容器监控:

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/sysom-kernel-level-container-monitoring?spm=5176.12818093_47.console-base_help.dexternal.5adc2cc9tyH8cM&scm=20140722.S_help%40%40%E6%96%87%E6%A1%A3%40%402560259.S_BB2%40bl%2BRQW%40ag0%2BBB1%40ag0%2Bos0.ID_2560259-RL_acksysom-LOC_console~UND~help-OR_ser-PAR1_2150446b17585225858645349e5d87-V_4-P0_0-P1_0

[2]操作系统控制台内存全景分析:

https://help.aliyun.com/zh/alinux/user-guide/memory-panorama-analysis-function-instructions?spm=a2c4g.11186623.help-menu-2632541.d_2_0_1_0_0_0.38175c4dMUXuc5&scm=20140722.H_2848894._.OR_help-T_cn~zh-V_1

[3]容器内存 QoS:

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/memory-qos-for-containers

[4]阿里云操作系统控制台调度抖动诊断:

https://help.aliyun.com/zh/alinux/user-guide/scheduling-jitter-diagnosis?spm=a2c4g.11186623.help-menu-2632541.d_2_0_1_0_3_0.2020583fVqI7fU&scm=20140722.H_2848564._.OR_help-T_cn~zh-V_1

[5]龙蜥操作系统资源隔离使用简介:

https://openanolis.cn/sig/Cloud-Kernel/doc/659601505054416682

[6]阿里云操作系统控制台 PC 端链接:

https://alinux.console.aliyun.com/

使用托管数据库部署 Coreflux MQTT 代理

MQTT 代理 通过发布-订阅消息模式连接物联网设备和应用程序,使其成为现代 物联网 基础设施的重要组成部分。Coreflux 是一个 低代码 MQTT 代理,增加了实时数据处理和转换功能,让你可以直接与 DigitalOcean 托管数据库(包括 MongoDBPostgreSQLMySQLOpenSearch)集成,而无需编写自定义集成代码。

你将学到什么: 本教程将引导你部署一个完整的物联网数据管道——从在 DigitalOcean 上设置托管数据库集群和 Coreflux MQTT 代理,到配置安全的 VPC 网络、使用 Coreflux 的物联网语言 (LoT) 构建数据转换模型,以及自动将处理后的物联网数据存储到你选择的数据库中。最终你将获得一个可用于生产环境的设置,能够处理物联网应用的实时消息传递和持久存储。

关键要点

在深入了解分步部署过程之前,以下是你将学到的关键点:

  • 在 DigitalOcean 上部署托管数据库集群(PostgreSQL、MongoDB、MySQL 或 OpenSearch),用于可扩展的物联网数据存储。
  • 使用 Marketplace 镜像或 Docker 在 DigitalOcean Droplet (DigitalOcean的VPC)上设置 Coreflux MQTT 代理。
  • 创建安全的 VPC 网络以连接你的 MQTT 代理和数据库,无需公开暴露。
  • 使用 Coreflux 的物联网语言 (LoT) 构建实时数据管道,实现低代码物联网自动化。
  • 自动转换和存储物联网数据,从 MQTT 主题到数据库表、集合或索引。
  • 验证端到端数据流,从模拟传感器通过转换模型到数据库存储。

本教程为需要实时消息传递结合持久数据存储以及搜索、分析或关系查询等高级功能的物联网应用提供了一个可用于生产环境的基础。

你将构建什么

在本教程结束时,你将得到:

  • 一个用于可扩展存储托管数据库集群(PostgreSQLMongoDBMySQLOpenSearch
  • 一台运行 Coreflux MQTT 代理DigitalOcean Droplet
  • 一个用于安全 物联网通信的虚拟私有云 (VPC) 网络
  • 使用 LoT Notebook 扩展进行的实时数据模拟
  • 低代码数据转换模型和数据库集成路由
  • 用于 物联网自动化 的完整 数据集成与转换 管道

Coreflux 与 DigitalOcean 合作

Coreflux 通过物联网语言编程语言在 DigitalOcean 云平台上提供轻量级 MQTT 代理和数据管道工具,以实现高效的物联网通信。

什么是 MQTT?

MQTT(消息队列遥测传输)是一种轻量级的、发布-订阅网络协议,在物联网生态系统中被广泛采用。专为受限设备和低带宽、高延迟或不稳定的网络设计,MQTT 能够在带宽受限的环境中实现高效、实时的消息传递。

关于 Coreflux

Coreflux 提供了一个轻量级 MQTT 代理,以促进物联网设备与应用程序之间的高效、实时通信,包括每个用例所必需的实时数据转换功能。为可扩展性和可靠性而构建,Coreflux 专为低延迟和高吞吐量至关重要的环境量身定制。

无论你是构建一个小型物联网项目还是部署工业监控系统,Coreflux 都能处理设备之间的消息路由和数据流。

在 DigitalOcean 云平台上使用 Coreflux,你将获得:

数据处理: 在你的数据所在之处集中处理你的数据处理需求,确保实时数据处理。
数据集成: 轻松与其他 DigitalOcean 服务(如托管数据库 PostgreSQL、MongoDB、MySQL 或 OpenSearch)集成,确保为你的所有数据需求提供一个单一且简单的生态系统。
可扩展性: 轻松处理不断增长的数据和设备数量,而不会影响性能。
可靠性: 确保在所有连接的设备之间进行一致且可靠的消息传递。

Coreflux MQTT 和托管数据库架构概述

准备工作

在开始本 MQTT 代理 部署教程之前,你需要:

  • 一个 DigitalOcean 帐户,可在DigitalOcean.com注册,支持绑定信用卡、支付宝或数字货币
  • 了解 MQTT 协议概念和 物联网 架构
  • Visual Studio Code(用于 LoT Notebook 扩展)

预计时间: 本教程大约需要 30-45 分钟完成,具体取决于数据库配置时间(通常每个数据库集群需要 1-5 分钟)。

步骤 1 — 为物联网自动化创建网络基础设施

为安全的 MQTT 通信创建 VPC 网络

首先,你将创建一个虚拟私有云 (VPC),以确保你的 物联网 服务和 MQTT 代理 之间的安全通信,无需公开访问。

  1. 登录你的 DigitalOcean 控制面板
  2. 从左侧导航栏进入 网络VPC
  3. 点击 创建 VPC 网络

DigitalOcean VPC 创建屏幕

  1. 物联网自动化配置你的 VPC:

    • 名称:coreflux-integrations-vpc(或你的 VPC 名称)
    • 数据中心区域:选择法兰克福(或你首选的区域)
    • IP 范围:使用默认值或根据需要配置
    • 描述:为你的 MQTT 代理和数据库 网络添加有意义的描述
  2. 点击 创建 VPC 网络

VPC 将为你所有的物联网资源提供隔离的网络,确保 Coreflux MQTT 代理托管数据库 之间的安全通信。有关 VPC 配置的更多详细信息,请参阅我们关于创建 VPC 网络的教程。

步骤 2 — 为可扩展存储设置托管数据库

根据你的物联网应用需求,选择以下数据库选项之一:

  • PostgreSQL:适用于需要关系查询、ACID 合规性和复杂关系的结构化数据
  • MySQL:适用于结构化工作负载和具有强一致性及广泛工具支持的事务性查询
  • MongoDB:适用于具有可变模式的灵活文档存储和快速开发
  • OpenSearch:适用于高级搜索、分析、日志分析和时间序列数据可视化

设置 PostgreSQL 托管数据库

当你的物联网工作负载需要关系模式强一致性高级 SQL 分析,并由自动备份、监控和维护支持时,DigitalOcean 上的托管 PostgreSQL 是一个很好的选择。

DigitalOcean 托管 PostgreSQL 集群设置

  1. DigitalOcean 控制面板,导航到 数据库
  2. 点击 创建数据库集群
  3. 物联网自动化配置你的 PostgreSQL 集群:

    • 数据库引擎:选择 PostgreSQL
    • 版本:选择最新的稳定版本
    • 数据中心区域:选择法兰克福(与你的 VPC 相同)
    • VPC 网络:选择你创建的 coreflux-integrations-vpc
    • 数据库集群名称:postgresql-coreflux-test
    • 项目:选择你的目标项目
  4. 根据你的 物联网 需求选择你的计划:

    1. 对于开发:基础 计划,1 GB RAM
    2. 对于生产:通用型 或更高,用于可扩展存储
  5. 点击 创建数据库集群

托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

为 MQTT 代理集成配置 PostgreSQL 数据库访问

系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

  1. 点击 开始使用 来配置你的 PostgreSQL 数据库
  2. (可选操作)限制入站连接:

    • 添加你本地计算机的 IP 以进行管理访问
    • droplet 将通过 VPC 网络自动获得允许

PostgreSQL 入站访问和 VPC 规则

对于连接详细信息,你将看到两个选项 - 公共网络和 VPC 网络。第一个用于像 DBeaver 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

PostgreSQL 公共和 VPC 连接详细信息

  1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

    • 主机:你的数据库主机名
    • 用户:默认管理员用户
    • 密码:自动生成的安全密码
    • 数据库:身份验证数据库名称
测试 PostgreSQL 数据库连接

你可以使用提供的连接参数,使用公共访问凭证通过 DBeaver 测试 PostgreSQL 连接:

在 DBeaver 中测试 PostgreSQL 连接

创建 PostgreSQL 应用程序数据库和用户(可选)

为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 DBeaver 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

  1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
  2. 创建用户

    • 用户名:coreflux-broker-client
    • 密码:自动生成
  3. 创建数据库

    • 数据库名称:coreflux-broker-data

注意: 你可能需要更改数据库内的用户权限,以便能够创建表、插入和选择数据。对于 PostgreSQL,使用 GRANT CREATE, INSERT, SELECT ON DATABASE coreflux-broker-data TO coreflux-broker-client; 授予必要的权限。对于 MySQL,使用 GRANT CREATE, INSERT, SELECT ON coreflux-broker-data.* TO 'coreflux-broker-client'@'%';。

设置 MySQL 托管数据库

当你想要熟悉的 SQL、广泛的生态系统支持以及处理备份、更新和监控的完全托管服务时,DigitalOcean 上的托管 MySQL结构化、事务性物联网数据的理想选择。

DigitalOcean 托管 MySQL 集群设置

  1. DigitalOcean 控制面板,导航到 数据库
  2. 点击 创建数据库集群
  3. 物联网自动化配置你的 MySQL 集群:

    • 数据库引擎:选择 MySQL
    • 版本:选择最新的稳定版本
    • 数据中心区域:选择法兰克福(与你的 VPC 相同)
    • VPC 网络:选择你创建的 coreflux-integrations-vpc
    • 数据库集群名称:mysql-coreflux-test
    • 项目:选择你的目标项目
  4. 根据你的 物联网 需求选择你的计划:

    • 对于开发:基础 计划,1 GB RAM
    • 对于生产:通用型 或更高,用于可扩展存储
  5. 点击 创建数据库集群

托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

为 MQTT 代理集成配置 MySQL 数据库访问

系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

  1. 点击 开始使用 来配置你的 MySQL 数据库
  2. (可选操作)限制入站连接:

    • 添加你本地计算机的 IP 以进行管理访问
    • droplet 将通过 VPC 网络自动获得允许

MySQL 入站访问和 VPC 规则

对于连接详细信息,你将看到两个选项 - 公共网络和 VPC 网络。第一个用于像 DBeaver 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

MySQL 公共和 VPC 连接详细信息

  1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

    • 主机:你的数据库主机名
    • 用户:默认管理员用户
    • 密码:自动生成的安全密码
    • 数据库:身份验证数据库名称
测试 MySQL 数据库连接

你可以使用提供的连接参数,使用公共访问凭证通过 DBeaver 测试 MySQL 连接。

注意: 你可能需要更改 DBeaver 的驱动程序设置——设置 allowPublicKeyRetrieval = true。

在 DBeaver 中测试 MySQL 连接

创建 MySQL 应用程序数据库和用户(可选)

为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 DBeaver 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

  1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
  2. 创建用户

    • 用户名:coreflux-broker-client
    • 密码:自动生成
  3. 创建数据库

    • 数据库名称:coreflux-broker-data

设置 MongoDB 托管数据库

托管 MongoDB 非常适合灵活或不断演变的物联网负载,让你能够存储异构的传感器文档,而无需严格模式,同时平台处理复制、备份和监控。

创建托管 MongoDB 集群

  1. DigitalOcean 控制面板,导航到 数据库
  2. 点击 创建数据库集群
  3. 物联网自动化配置你的 MongoDB 集群:

    • 数据库引擎:选择 MongoDB
    • 版本:选择最新的稳定版本
    • 数据中心区域:选择法兰克福(与你的 VPC 相同)
    • VPC 网络:选择你创建的 coreflux-integrations-vpc
    • 数据库集群名称:mongodb-coreflux-test
    • 项目:选择你的目标项目
  4. 根据你的 物联网 需求选择你的计划:

    • 对于开发:基础 计划,1 GB RAM
    • 对于生产:通用型 或更高,用于可扩展存储
  5. 点击 创建数据库集群

托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

为 MQTT 代理集成配置 MongoDB 数据库访问

系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

  1. 点击 开始使用 来配置你的 MongoDB 数据库
  2. (可选)限制入站连接:

    • 添加你本地计算机的 IP 以进行管理访问
    • droplet 将通过 VPC 网络自动获得允许

为 MQTT 代理集成配置数据库访问

对于连接详细信息,你将看到两个选项:公共网络和 VPC 网络。第一个用于像 MongoDB Compass 这样的工具进行外部访问,而第二个将由 Coreflux 服务用于访问数据库。

MongoDB 连接详细信息

  1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

    • 主机:你的数据库主机名
    • 用户:默认管理员用户
    • 密码:自动生成的安全密码
    • 数据库:身份验证数据库名称
测试 MongoDB 数据库连接

你可以使用 MongoDB Compass 或提供的连接字符串,使用公共访问凭证测试 MongoDB 连接:

mongodb://username:password@mongodb-host:27017/defaultauthdb?ssl=true

测试数据库连接

创建 MongoDB 应用程序数据库和用户(可选)

为了更好的安全性和组织性,为你的 物联网自动化 应用程序创建一个专用用户和数据库。这也可以通过 MongoDB Compass 或 CLI 完成,但 DigitalOcean 提供了一种用户友好的方法:

  1. 转到你的 托管数据库 集群中的 用户与数据库 选项卡
  2. 创建用户

    • 用户名:coreflux-broker-client
    • 密码:自动生成
  3. 创建数据库

    • 数据库名称:coreflux-broker-data

设置 OpenSearch 托管数据库

托管 OpenSearch 专为高容量物联网数据的搜索、日志分析和时间序列仪表板而设计,该服务为你管理集群健康、扩展和索引存储。

创建托管 OpenSearch 集群

  1. DigitalOcean 控制面板,导航到 数据库
  2. 点击 创建数据库集群
  3. 物联网自动化配置你的 OpenSearch 集群:

    • 数据库引擎:选择 OpenSearch
    • 版本:选择最新的稳定版本
    • 数据中心区域:选择法兰克福(与你的 VPC 相同)
    • VPC 网络:选择你创建的 coreflux-integrations-vpc
    • 数据库集群名称:opensearch-coreflux-test
    • 项目:选择你的目标项目
  4. 根据你的 物联网 需求选择你的计划:

    1. 对于开发:基础 计划,1 GB RAM
    2. 对于生产:通用型 或更高,用于可扩展存储
  5. 点击 创建数据库集群

托管数据库 创建过程通常需要 1-5 分钟。完成后,你将被重定向到数据库概览页面,在那里你可以查看连接详细信息并执行管理操作。

为 MQTT 代理集成配置 OpenSearch 数据库访问

系统将提示你进行入门步骤,显示你的连接详细信息,你可以配置入站访问规则(建议限制为你的 IP 和仅 VPC)。

  1. 点击 开始使用 来配置你的 OpenSearch 数据库
  2. (可选)限制入站连接:

    • 添加你本地计算机的 IP 以进行管理访问
    • droplet 将通过 VPC 网络自动获得允许

配置数据库访问

对于连接详细信息,你将看到两个选项:公共网络和 VPC 网络。第一个用于工具的外部访问,而第二个将由 Coreflux 服务用于访问数据库。你还将看到访问 OpenSearch 仪表板的 URL 和参数。

连接详细信息

  1. 记下提供的连接详细信息,包括公共访问和 VPC 访问(每种都有不同的详细信息):

    • 主机:你的数据库主机名
    • 用户:默认管理员用户
    • 密码:自动生成的安全密码
    • 数据库:身份验证数据库名称
测试 OpenSearch 数据库连接

你可以使用提供的凭证通过 OpenSearch 仪表板测试 OpenSearch 连接:

测试数据库连接

步骤 3 — 在 DigitalOcean Droplet 上部署 Coreflux MQTT 代理

创建 DigitalOcean Droplet

  1. 在你的 DigitalOcean 控制面板中导航到 Droplets
  2. 点击 创建 Droplet

创建新的 DigitalOcean Droplet

  1. MQTT 代理 部署配置你的 droplet

    • 选择区域:法兰克福(与你的托管数据库相同)
    • VPC 网络:选择 coreflux-integrations-vpc
    • 选择镜像:转到 Marketplace 选项卡
    • 搜索 “Coreflux” 并从 Marketplace 中选择 Coreflux

从 Marketplace 选择 Coreflux

  1. 为你的 物联网 工作负载选择大小

    • 对于开发:基础 计划,2 GB 内存
    • 对于生产:基础通用型 计划,4+ GB 内存以获得可扩展性能
  2. 选择身份验证方法

    • SSH 密钥:推荐用于提高安全性

      1. 可以使用 ssh-keygen 在本地创建密钥
    • 密码:备选方案
  3. 最终确定详细信息

    • 主机名:coreflux-test-broker
    • 项目:选择你的项目
    • 标签:为 DevOps 组织添加相关标签
  4. 点击 创建 Droplet
  5. 查看 Droplet 主页并等待其完成部署

Droplet 部署进行中

替代方案 - 在Docker镜像Droplet上使用Docker安装Coreflux MQTT代理

采用与Coreflux Droplet相同的方法,选择Docker作为市场应用镜像。

一旦你的droplet运行起来,通过已定义的认证方法或Droplet主页上提供的Web控制台,使用SSH连接到它:

ssh root@your-droplet-ip

SSH连接到Coreflux droplet

使用Docker运行Coreflux MQTT代理

docker run -d \
  --name coreflux \
  -p 1883:1883 \
  -p 1884:1884 \
  -p 5000:5000 \
  -p 443:443 \
  coreflux/coreflux-mqtt-broker-t:1.6.3

这个Docker命令:

  • 以分离模式运行容器 (-d)
  • 将容器命名为 coreflux
  • 暴露MQTT和Web界面所需的端口
  • 使用最新的Coreflux镜像

验证MQTT代理是否在运行:

docker ps

你应该看到一个正在运行的容器:

Docker中运行的Coreflux容器

通过使用默认值连接到MQTT代理来验证部署

你可以通过MQTT客户端(如MQTT Explorer)访问MQTT代理,以验证对代理的访问,无论采用何种部署方法。

MQTT Explorer连接到Coreflux代理

步骤4 — 为安全的物联网通信配置防火墙规则(可选)

对于生产环境的物联网自动化部署,配置防火墙规则以限制访问:

  1. 导航到网络防火墙
  2. 点击创建防火墙
  3. 配置MQTT代理安全的入站规则:

    • SSH:来自你IP的端口22
    • MQTT:来自你的物联网应用程序源的端口1883
    • 带TLS的MQTT:用于安全的带TLS的MQTT的端口1884
    • WebSocket:用于通过WebSocket的MQTT的端口5000
    • 带TLS的WebSocket:用于通过带TLS的WebSocket的MQTT的端口443
  4. 将防火墙应用到你的droplet

关于详细的防火墙配置,请参考DigitalOcean的防火墙快速入门教程。生产提示: 将MQTT端口1883限制在特定的源IP或VPC范围,并且对于外部设备连接,优先使用端口1884(带TLS的MQTT)。如果你需要额外的安全层,请考虑使用带有私有网络的DigitalOcean应用平台。

步骤5 — 使用Coreflux的Language of Things设置物联网数据集成

安装LoT Notebook扩展

用于Visual Studio Code的LoTLanguage of ThingsNotebook扩展提供了一个集成的低代码开发环境,用于MQTT代理编程和物联网自动化。了解更多关于Coreflux的Language of Things (LoT)用于低代码物联网自动化的信息。

  1. 打开Visual Studio Code
  2. 转到扩展(Ctrl+Shift+X)
  3. 搜索"LoT Notebooks"
  4. 安装由Coreflux提供的LoT VSCode Notebooks扩展

Visual Studio Code中的LoT Notebook扩展

连接到你的MQTT代理

配置与你的Coreflux MQTT代理的连接,当在顶部栏提示时或通过点击底部左侧栏的MQTT按钮时,使用默认凭据:

  • 用户:root
  • 密码:coreflux

假设没有错误,你将在底部左侧栏看到与代理的MQTT连接状态。

VS Code中的Coreflux MQTT连接状态

步骤6 — 通过Actions在MQTT代理中创建数据

对于这个用例,我们将通过一个转换管道将原始数据集成到数据库中。然而,由于在演示中没有连接到任何MQTT设备,我们将利用LoT的能力,并使用一个Action来模拟设备数据。

在LoT中,Action是一种可执行的逻辑,由特定事件触发,例如定时间隔、主题更新或其他操作或系统组件的显式调用。Actions允许与MQTT主题、内部变量和负载进行动态交互,促进复杂的物联网自动化工作流。

因此,我们可以使用一个以定义的时间间隔在特定主题中生成数据的Action,然后由我们将在下面定义的管道的其余部分使用。

你可以下载包含示例项目的github仓库。

生成模拟物联网数据

使用低代码LoTLanguage of Things)界面创建一个Action来生成模拟传感器数据:

DEFINE ACTION RANDOMIZEMachineData
ON EVERY 10 SECONDS DO
    PUBLISH TOPIC "raw_data/machine1" WITH RANDOM BETWEEN 0 AND 10
    PUBLISH TOPIC "raw_data/station2" WITH RANDOM BETWEEN 0 AND 60

在提供的Notebook中,你还有一个Action可以执行递增计数器来模拟数据,作为提供Action的替代方案。

运行LoT操作以生成模拟物联网数据

当你运行这个Action时,它将:

  • 自动部署到MQTT代理
  • 每10秒生成一次模拟的物联网传感器数据
  • 实时数据发布到特定的MQTT主题
  • LoT Notebook界面中显示同步状态

    • 此状态显示LoT Notebook上的代码是否与代理中运行的代码不同,或者是否完全缺失

步骤7 — 为实时处理创建数据转换模型

使用Language of Things定义数据模型

Coreflux中的模型用于转换、聚合和计算来自输入MQTT主题的值,并将结果发布到新主题。它们是创建适用于你多个数据源的UNS - 统一命名空间 - 的基础。

因此,通过该模型,你可以定义原始物联网数据的结构与转换方式,适用于单个设备,也支持同时处理多个设备(借助通配符+实现)。模型还作为用于可扩展存储托管数据库的关键数据模式。

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"

    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER

    ADD "energy_wh" WITH (energy * 1000)

    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")

    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)

    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)

    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)

    ADD "timestamp" WITH TIMESTAMP "UTC"

这个低代码模型:

  • 使用通配符+自动应用到所有机器
  • 通过乘以1000将能量转换为瓦时(energy_wh)
  • 根据能量阈值确定生产状态
  • 跟踪生产计数和停机事件
  • 向所有实时数据点添加时间戳
  • 从主题结构中提取机器ID
  • 将结构化数据发布到Simulator/Machine/Data主题(将+替换为每个匹配触发器/源数据格式的主题)

由于我们使用Action生成了两个模拟传感器/机器,我们可以看到模型结构自动应用于两者,同时生成了一个json对象和各个单独的主题。

Coreflux模型发布的转换后的MQTT数据

步骤8 — 为可扩展存储设置数据库集成

选择与你在步骤2中选择的数据库相匹配的数据库集成部分。

PostgreSQL集成

在本节中,你将学习如何将处理后的物联网数据存储到DigitalOcean上的PostgreSQL托管数据库中。

要将处理后的物联网数据存储到PostgreSQL托管数据库中,你需要在Coreflux中定义一个Route。Route使用简单、低代码的配置指定数据如何从你的MQTT代理发送到你的PostgreSQL集群:

DEFINE ROUTE PostgreSQL_Log WITH TYPE POSTGRESQL

    ADD SQL_CONFIG

        WITH SERVER "db-postgresql.db.onmyserver.com"

        WITH PORT 25060

        WITH DATABASE "defaultdb"

        WITH USERNAME "doadmin"

        WITH PASSWORD "AVNS_pass"

        WITH USE_SSL TRUE

        WITH TRUST_SERVER_CERTIFICATE FALSE

使用来自DigitalOcean的你自己的PostgreSQL连接详细信息替换,并在你的LoT Notebook中运行该Route重要提示: 为了更好的安全性和更低的延迟,请使用VPC连接详细信息(而非公共连接)。VPC主机名和端口与公共连接字符串不同 - 请检查你的数据库集群的连接详细信息页面以获取这两个选项。

为PostgreSQL数据库存储更新模型

修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

STORE IN "PostgreSQL_Log"

    WITH TABLE "MachineProductionData"

此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"

    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER

    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"

    ADD "energy_wh" WITH (energy * 1000)

    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")

    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)

    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)

    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)

    ADD "timestamp" WITH TIMESTAMP "UTC"

    STORE IN "PostgreSQL_Log"

        WITH TABLE "MachineProductionData"

部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

MySQL集成

MySQL是一种广泛使用的关系数据库管理系统,非常适合大规模存储和分析物联网数据。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管MySQL数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到MySQL数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

DEFINE ROUTE MySQL_Log WITH TYPE MYSQL
    ADD SQL_CONFIG
        WITH SERVER "db-mysql.db.onmyserver.com"
        WITH PORT 25060
        WITH DATABASE "defaultdb"
        WITH USERNAME "doadmin"
        WITH PASSWORD "AVNS_pass"
        WITH USE_SSL TRUE
        WITH TRUST_SERVER_CERTIFICATE FALSE

使用来自DigitalOcean的你自己的MySQL连接详细信息替换,并在你的LoT Notebook中运行该Route重要提示: 为了更好的安全性和更低的延迟,请使用VPC连接详细信息(而非公共连接)。如果你遇到连接问题,请验证TRUST_SERVER_CERTIFICATE是否已为你的MySQL版本正确设置 - 某些版本需要TRUE,而其他版本则使用FALSE

为MySQL数据库存储更新模型

修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

STORE IN "MySQL_Log"
    WITH TABLE "MachineProductionData"

此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "MySQL_Log"
        WITH TABLE "MachineProductionData"

部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

MongoDB集成

MongoDB是一种NoSQL数据库,非常适合存储和查询具有灵活模式的物联网数据。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管MongoDB数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到MongoDB数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

DEFINE ROUTE mongo_route WITH TYPE MONGODB
    ADD MONGODB_CONFIG
        WITH CONNECTION_STRING "mongodb+srv://<username>:<password>@<cluster-uri>/<database>?tls=true&authSource=admin&replicaSet=<replica-set>"
        WITH DATABASE "admin"

使用来自DigitalOcean的你自己的MongoDB连接详细信息替换,并在你的LoT Notebook中运行该Route。重要提示: 当可用时,请使用VPC连接字符串格式。连接字符串应包括tls=trueauthSource=admin参数。有关MongoDB连接故障排除,请参阅我们关于连接MongoDB的教程。

为MongoDB数据库存储更新模型

修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

STORE IN "mongo_route"
    WITH TABLE "MachineProductionData"

此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "mongo_route"
        WITH TABLE "MachineProductionData"

部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

OpenSearch集成

OpenSearch是一种分布式搜索和分析引擎,专为大规模数据处理和实时分析而设计。在本节中,你将学习如何将你的Coreflux MQTT代理连接到DigitalOcean上的托管OpenSearch数据库,以便你的实时设备数据能够安全可靠地持久化,用于分析、报告或与其他应用程序集成。

要启用此集成,你必须在Coreflux的LoT(Language of Things)中定义一个Route,指示处理后的数据应该发送到哪里以及如何发送。下面是路由数据到OpenSearch数据库所需的低代码格式。请务必根据需要替换你自己的连接详细信息:

DEFINE ROUTE OpenSearch_log WITH TYPE OPENSEARCH
    ADD OPENSEARCH_CONFIG
        WITH BASE_URL "https://my-opensearch-cluster:9200"
        WITH USERNAME "myuser"
        WITH PASSWORD "mypassword"
        WITH USE_SSL TRUE
        WITH IGNORE_CERT_ERRORS FALSE

使用来自DigitalOcean的你自己的OpenSearch连接详细信息替换,并在你的LoT Notebook中运行该Route。重要提示: 当可用时,请使用VPC基础URL(而非公共URL)。基础URL格式通常为https://your-cluster-hostname:9200。对于OpenSearch仪表板访问,请使用数据库集群详细信息中提供的单独的仪表板URL。有关更多详细信息,请参阅我们的OpenSearch快速入门。

为OpenSearch数据库存储更新模型

修改你的LoT模型以使用数据库路由进行可扩展存储,通过将此添加到模型的末尾:

STORE IN "OpenSearch_Log"
    WITH TABLE "MachineProductionData"

此外,添加一个带有主题的参数,以便在你的托管数据库中为每个条目提供唯一标识符。

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "OpenSearch_Log"
        WITH TABLE "MachineProductionData"

部署此更新后的操作后,所有数据在更新时应自动存储在数据库中。

步骤9 — 验证完整的物联网自动化管道

监控实时数据流

  1. MQTT Explorer:使用MQTT客户端验证实时数据发布
  2. 数据库客户端:连接以验证数据的存储(PostgreSQL使用DBeaver,MongoDB使用MongoDB Compass,OpenSearch使用OpenSearch Dashboards)

验证PostgreSQL存储

使用DBeaver连接到你的PostgreSQL托管数据库以验证可扩展存储

  1. 使用来自你的DigitalOcean数据库的连接字符串
  2. 导航到 coreflux-broker-data 数据库(或你为数据库指定的名称)
  3. 检查 MachineProductionData 表中存储的记录

显示存储的物联网记录的PostgreSQL表

正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

带有实时机器数据的MQTT主题

验证MongoDB存储

使用MongoDB Compass连接到你的MongoDB托管数据库以验证可扩展存储

  1. 使用来自你的DigitalOcean数据库的连接字符串
  2. 导航到 coreflux-broker-data 数据库(或你为数据库指定的名称)
  3. 检查 MachineProductionData 集合中存储的文档

检查数据库存储

你应该看到具有类似结构的实时数据文档:

{
  "_id": {
    "$oid": "68626dc3e8385cbe9a1666c3"
  },
  "energy": 36,
  "energy_wh": 36000,
  "production_status": "active",
  "production_count": 31,
  "stoppage": 0,
  "maintenance_alert": false,
  "timestamp": "2025-06-30 10:58:11",
  "device_name": "station2"
}

正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

验证MySQL存储

使用DBeaver连接到你的MySQL托管数据库以验证可扩展存储:

  1. 使用来自你的DigitalOcean数据库的连接字符串
  2. 导航到coreflux-broker-data数据库(或你为数据库指定的名称)
  3. 检查MachineProductionData表中存储的记录

验证MySQL中存储的物联网记录

与其他集成一样,所有数据也可在MQTT代理中用于其他用途和下游集成。

监控实时数据流

验证OpenSearch存储

使用提供的URL和凭据打开OpenSearchDashboards

  1. 打开菜单并选择索引管理选项

    1. 在菜单中选择索引选项,查看你的表名是否出现在列表中

检查数据库存储

  1. 返回主页并在菜单中选择发现选项

    1. 按照提供的步骤创建索引模式
    2. 返回到发现页面,你应该会看到你的数据

检查数据库存储

正如我们之前看到的,所有数据都可在MQTT代理中用于其他用途和集成。

检查数据库存储

步骤10 - 扩展你的用例和集成

测试LoT能力

  • 发布示例数据:使用MQTT Explorer将示例数据集发布到你的Coreflux代理。尝试不同的负载结构和不同的模型/操作,查看它们如何处理并存储到你选择的数据库中。
  • 数据验证:验证你数据库中的数据与你发布的有效负载是否匹配。使用你的数据库客户端(PostgreSQL使用DBeaver,MongoDB使用MongoDB Compass,OpenSearch使用OpenSearch Dashboards)检查一致性和准确性,确保你的物联网自动化集成按预期工作。比较时间戳、字段转换和数据类型,以验证你的实时数据管道。
  • 实时监控:使用另一个MQTT数据源(例如具有MQTT连接功能的简单传感器)设置连续的实时数据馈送。观察Coreflux和你的数据库如何处理传入的物联网数据流,并探索数据检索和查询的响应时间。

构建分析和可视化

  • 创建仪表板:与Grafana等可视化工具集成,创建显示你的物联网数据的仪表板,从实时MQTT主题和历史数据库查询中提取数据。跟踪指标,如设备正常运行时间、传感器读数、生产计数或来自你自动化系统的维护警报。了解如何使用我们的教程设置DigitalOcean托管数据库与Prometheus和Grafana的监控。对于实时仪表板,直接订阅MQTT主题;对于历史趋势和聚合,查询你的数据库。
  • 趋势分析:利用你数据库的能力来分析随时间变化的趋势:

    • PostgreSQL:使用SQL查询进行复杂的关系分析
    • MongoDB:使用聚合框架进行基于文档的分析
    • OpenSearch:使用高级分析和搜索能力进行全文搜索和时间序列分析
  • 多数据库集成:探索集成其他托管数据库,如用于非结构化数据的MongoDB,用于关系数据的PostgreSQL,用于结构化查询的MySQL,或用于高级分析和搜索的OpenSearch。使用Coreflux路由将数据同时发送到多个目的地。

优化和扩展你的物联网基础设施

  • 负载测试:使用LoT Notebook或自动化脚本通过同时发布多条消息来模拟高流量。监控你的Coreflux MQTT代理和数据库集群如何处理负载,并识别你的数据管道中的任何瓶颈。
  • 扩展DigitalOcean提供垂直和水平扩展选项。随着你的物联网数据需求增长,增加droplet资源(CPU、RAM或存储)。扩展你的托管数据库集群以处理更大的数据集,并配置自动扩展警报,以便在接近资源限制时通知你。

常见问题解答

1. 如何将Coreflux MQTT代理与托管数据库集成?

你通过定义指向目标服务(PostgreSQL、MySQL、MongoDB或OpenSearch)的LoTRoute来将Coreflux MQTT代理与托管数据库集成。每个路由使用适当的连接参数(服务器或连接字符串、端口、数据库名称、用户名、密码和SSL/TLS选项),并自动将MQTT消息有效负载持久化到表、集合或索引中。一旦定义好路由,你就使用STORE IN指令将其附加到Model,这样每个处理后的消息都会被写入你选择的数据库。

2. 我能否在不编写自定义集成代码的情况下将MQTT数据直接保存到数据库?

可以。Coreflux设计为一个低代码集成层,因此你无需编写应用程序代码或外部ETL作业来持久化数据。对于每种数据库类型,你配置一个LoT路由(例如,PostgreSQL_LogMySQL_Logmongo_routeOpenSearch_Log),然后使用STORE IN "<route_name>" WITH TABLE "MachineProductionData"扩展你的模型。Coreflux处理连接池、重试和错误处理,因此你可以专注于建模主题和转换,而不是样板数据库代码。

3. 我应该为MQTT物联网数据存储选择哪种托管数据库?

你的MQTT物联网数据的最佳托管数据库取决于你的数据结构、查询需求和分析目标。使用下面的比较表来帮助你决定:

数据库最适合示例用例
PostgreSQL强一致性、关系模式、复杂的SQL查询工业传感器网络、事务性事件、需要跨连接数据集的分析
MySQL关系数据、结构化查询、广泛的兼容性库存系统、生产指标、传统业务记录
MongoDB灵活、不断演进的模式;文档存储具有可变负载的互联设备、具有变化格式的物联网遥测
OpenSearch全文搜索、分析、仪表板、日志索引时间序列分析、监控、事件日志、物联网搜索和可视化

提示: 你可以通过配置多个Coreflux路由同时使用多个托管数据库。这使得可以从同一个MQTT流中,将结构化的物联网数据存储在PostgreSQL或MySQL中,在OpenSearch中聚合日志和指标,并在MongoDB中收集非结构化或无模式数据。

4. 这种架构如何处理实时和历史分析?

Coreflux将所有处理后的值保留在MQTT主题上,供实时消费、仪表板或额外管道使用,而Routes则将相同的建模数据持久化到你的数据库中,用于历史查询。在实践中,你可以订阅主题以进行即时反应(警报、控制回路),并查询PostgreSQL/MySQL/MongoDB/OpenSearch以进行聚合、趋势和长期分析。这种双路径设计反映了MQTT和物联网数据集成教程中的常见模式,其中代理提供实时消息传递,而数据库提供持久存储和分析。

5. Coreflux和托管数据库之间的连接有多安全?

当部署在DigitalOcean上时,你可以使用VPC网络来保持Coreflux MQTT代理和数据库之间的所有通信私密。VPC将你的资源与公共互联网访问隔离开来,并且DigitalOcean托管数据库支持连接的TLS加密。此外,你可以为你的Coreflux应用程序创建具有有限权限的专用数据库用户,遵循最小权限原则。

6. 这个设置是否适用于生产环境物联网部署?

是的。这种架构反映了生产环境中MQTT和数据库集成所使用的模式,其中代理前端处理设备流量,而托管数据库层提供持久性和分析。DigitalOcean托管数据库提供自动备份、高可用性和监控,而Coreflux MQTT代理可以水平扩展以处理高消息吞吐量。对于生产环境,你还应该配置防火墙规则、使用强凭据、为MQTT和数据库连接启用TLS,并根据预期的消息量来调整你的droplet和集群大小。

7. 我能否在没有公共互联网访问的情况下,或在混合环境中运行MQTT代理?

可以。MQTT代理通常部署在私有网络或边缘环境中,公共资源一致指出,只要客户端可以访问代理,MQTT就可以在没有公共互联网的情况下工作。使用DigitalOcean,你可以将Coreflux和你的数据库保持在VPC内部,并且只暴露绝对必要的内容(例如,VPN、堡垒主机或有限的防火墙规则)。如果你需要混合或多站点架构,你还可以将选定的主题与其他代理或云区域同步。

8. 在物联网数据中使用MQTT和数据库是否存在任何限制或权衡?

MQTT针对轻量级、事件驱动的消息传递进行了优化;数据库则针对存储和查询进行了优化。存储每一条原始消息可能会变得昂贵或嘈杂,因此最佳实践建议仔细建模数据(例如,聚合指标、过滤主题或降采样)。极低功耗设备或超受限网络可能难以维持持久连接或处理TLS开销,在这种情况下,你可能需要调整QoS级别、批处理和保留策略。只要你在设计中考虑到这些权衡,MQTT加上托管数据库对于大多数物联网场景都能很好地工作。

9. 我如何为我的物联网项目在PostgreSQL、MySQL、MongoDB和OpenSearch之间做出选择?

你应该根据物联网数据结构、可扩展性以及你希望如何查询设备数据来选择托管数据库。下表总结了每个选项的优势:

数据库当...时最佳典型用例关键优势
PostgreSQL你需要复杂的关系查询、强一致性和事务完整性(ACID支持)。工业传感器网络、将设备数据与生产相关联、需要对连接的数据集进行分析关系模式、高级SQL、一致性
MySQL你的工作负载是结构化的,具有广泛的工具和兼容性需求。库存跟踪、传统业务系统、生产指标更简单的关系需求、广泛支持
MongoDB你的设备负载和模式不断演变,或者你希望使用灵活的、基于文档的存储进行快速原型设计。具有可变格式的物联网遥测、快速开发、半结构化数据灵活的模式、易于扩展、快速原型设计
OpenSearch你需要分析、搜索或对大容量的物联网数据(日志、时间序列、事件)进行仪表板展示。搜索传感器数据、日志分析、可视化、基于关键字/时间的查询搜索、全文、分析、快速聚合

结论

将Coreflux MQTT代理与DigitalOcean的托管数据库服务(PostgreSQL、MongoDB、MySQL或OpenSearch)集成,为你提供了实时物联网数据处理和存储的完整设置。按照本教程,你已经使用低代码开发实践构建了一个收集、处理和存储物联网数据的自动化管道。

借助Coreflux的架构和你选择的数据库的存储特性,你可以处理大量的实时数据并查询它以获取洞察。无论你是监控工业系统、跟踪环境传感器还是管理智慧城市基础设施,这种设置都让你能够基于实时MQTT主题和历史数据库查询做出数据驱动的决策。

了解更多关于DigitalOcean托管数据库的信息,以及DigitalOcean 针对 IoT行业的产品服务支持,可咨询 DigitalOcean 中国区独家战略合作伙伴卓普云AI Droplet(aidroplet.com)

你可以尝试提供的用例或使用Coreflux和DigitalOcean实现你自己的用例。你还可以在DigitalOcean Droplet市场或通过Coreflux网站获取免费的Coreflux MQTT代理

突发奇想,因为平时都是 claude code, codex, gemini 混着一起用,改不同的模块,就在想能不能统计各种 AI Cli 工具在项目里“真正写进代码库”的贡献量。大概调研了一下发现确实可以,所以实现了一个版本,执行下面的命令可以直接扫描代码库

npx ai-credit

工作原理是扫描各类 AI 工具的本地会话日志,提取实际产生的 file diff ,然后和当前工作区逐行匹配,输出每个工具/模型的新增、删除行数和文件列表。所有操作全部在本地,不会做任何上传,代码开源。

官网: https://ai-credits.vercel.app

repo: https://github.com/debugtheworldbot/ai-credit

欢迎试用、提建议、补充更多 cli 🙌

看到帖子询问威海本地美食,

想起来, 周末女朋友要来找我玩

平常也不出门, 想问问有没有青岛人, 或者来青岛玩过的朋友, 有没有推荐的好吃的馆子

上上周, 吃过一个双合园饺子, 戳子肉, 禾斗自助都感觉一般, 可能价钱还不到位

刷到视频说海鲜要去市场买, 让别人加工更好? 有推荐的吗

最好是市南市北, 其他地方真的有点远

Flux: 自动化GitOps好帮手

说在前面

推荐阅读:GitOps | GitOps is Continuous Deployment for cloud native applications

什么是 GitOps

GitOps 是一种实现云原生应用持续部署的方法。核心是使用我们熟知的 Git 工具,在一个包含了我们应用的基础设施的声明性描述(比如 k8s deployment.yaml))的 Git 仓库中,完成自动化流程部署;在我们需要在集群上部署新应用或更新现有应用时,就只需要在 Git 仓库上提交就行了。

为什么要搭建 GitOps

  1. 让你的部署更快并且还可以让你更频繁地执行部署

    • 采用 GitOps 的独到之处就是你不需要来回切换工具来部署应用
  2. 更简单更快的错误恢复

    • 错误恢复只需要使用 Git 进行回退还原即可
  3. 更便捷的证书部署管理

    • 你不需要真正访问到部署环境中才能管理
  4. 自文档化部署

    • GitOps 规范要求对任何环境的每次更改都必须通过 Git 完成,这样你不需要通过 ssh 登录到服务器,直接通过查看主分支就能知道服务器都运行了什么
  5. 团队知识共享

    • Git 仓库中包含了所有应用的基础设施完整描述,团队中的每个人可以随时快捷的了解变化

Flux 介绍

官方地址: Flux

Flux 是一个用于保持 k8s 集群和配置源(如 Git 仓库)同步的工具,它能够在新代码推送到仓库后自动更新集群上部署的应用

Flux应用示例

前置条件

  • 已部署 k8s 或 k3s 集群(我将以 k3s 为例)
  • 可访问的 Git 仓库(Github, Gitlab 或 Gitea, 下面将以我自己部署的 Gitea 仓库为例,公开仓库:Zpekii/go-example)

安装 Flux Cli 工具

通过 Bash 安装(适用于Linux)

curl -s https://fluxcd.io/install.sh | sudo bash

检查是否满足所需依赖

flux check --pre

执行后输出形如:

► checking prerequisites
✔ Kubernetes 1.34.3+k3s1 >=1.32.0-0
✔ prerequisites checks passed

将 Flux 安装到集群

flux bootstrap git \
    --url=$URL \
    --branch=$BRANCH \
    --username=$USER_NAME \
    --token-auth=true \
    --path=./clusters/app

其中$URL$BRANCH$USER_NAME需要替换成实际的 git 仓库地址、分支(一般是mainmaster主分支)以及拥有访问 git 仓库的账号名

我的例子:

flux bootstrap git \
    --url=https://git.0orz.top/Zpekii/go-example.git \
    --branch=main \
    --username=Zpekii \
    --token-auth=true \
    --path=./clusters/app

执行后,需要输入 git 账号密码,如果通过校验,则会输出形如:

► connecting to github.com
✔ repository created
✔ repository cloned
✚ generating manifests
✔ components manifests pushed
► installing components in flux-system namespace
deployment "source-controller" successfully rolled out
deployment "kustomize-controller" successfully rolled out
deployment "helm-controller" successfully rolled out
deployment "notification-controller" successfully rolled out
✔ install completed
► configuring deploy key
✔ deploy key configured
► generating sync manifests
✔ sync manifests pushed
► applying sync manifests
◎ waiting for cluster sync
✔ bootstrap finished

这个过程将会:

  • (如果你填写的 git 仓库地址还没有创建,那么它会帮你创建)
  • 在你的 git 仓库添加 Flux 组件(通过向你的仓库发起一个提交进行变更, 组件将会保存到项目根目录clusters/app下,这个由--path参数决定)
  • 在你的集群上部署 Flux 组件
  • 配置 Flux 组件跟踪仓库上的 clusters/app 路径(由--path参数决定)

克隆你的仓库

git clone $URL

请替换$URL为你实际的仓库地址,我的例子:

git clone https://git.0orz.top/Zpekii/go-example.git

创建 kustomize 目录来保存你的部署配置文档

cd $PRJ_PATH && mkdir -p kustomize

$PRJ_PATH替换为拉取仓库到服务器本地文件系统后的项目路径,我的例子:

cd go-example && mkdir -p kustomize

编写集群部署配置文档

使用 vim 创建和编辑文档

vim kustomize/deployment.yaml

按下 Insert 键,根据自己的实际情况编写吧,可以参考我的例子:

apiVersion: v1
kind: Namespace
metadata:
  name: helloapp
---
apiVersion: v1
kind: Service
metadata:
  name: go-example
  namespace: helloapp
spec:
  selector:
    app: go-example
  ports:
    - port: 8800
      targetPort: 8800
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-example
  namespace: helloapp
spec:
  selector:
    matchLabels:
      app: go-example
  replicas: 3
  template:
    metadata:
      labels:
        app: go-example
    spec:
      containers:
        - name: go-example
          image: harbor.0orz.top/go-example/go-example:8b5d44399e523027840a68ce17249d9ecfd5c094
          imagePullPolicy: IfNotPresent
          resources:
            requests:
              memory: "5Mi"
              cpu: "10m"
            limits:
              memory: "50Mi"
              cpu: "100m"
          ports:
            - containerPort: 8800
          volumeMounts:
            - name: config-volume
              mountPath: /config
            - name: helloapp-test-key
              mountPath: /certs
          command: ["/helloapp"]
          args: ["-f", "/config/.linux-config.yaml"]
      volumes:
        - name: config-volume
          configMap:
            name: go-example-config
        - name: helloapp-test-key
          secret:
            secretName: helloapp-test-key # 需要事先创建该 Secret 
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: go-example-config
  namespace: helloapp
data:
  .linux-config.yaml: |
    server:
      port: 8800
    certs:
      testKeyPath: /certs/test.key

我都配置了什么:

  • 创建了一个helloapp命名空间用来单独和管理我部署的应用
  • 创建了一个Service来暴露我的应用,让外部可以访问
  • 声明了我的应用Deployment信息,需要哪些资源、使用哪个镜像、创建几个副本,以及使用哪些配置和密钥
  • 创建了一个ConfigMap来声明我的应用配置

按下 Esc 键退出编辑,然后输入保存并退出 vim 编辑

:wq

将仓库源添加到 Flux 中

在 Flux 中创建一个git source

flux create source git $SOURCE_NAME \
  --url=$URL \
  --branch=$BRANCH \
  --interval=1m \
  --export > ./clusters/app/$SOURCE_NAME-source.yaml

请根据实际替换相应的变量,我的例子:

flux create source git go-example \
  --url=https://git.0orz.top/Zpekii/go-example.git \
  --branch=main \
  --interval=1m \
  --export > ./clusters/app/go-example-source.yaml

执行后,输出形如:

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: go-example
  namespace: flux-system
spec:
  interval: 1m
  ref:
    branch: main
  url: https://git.0orz.top/Zpekii/go-example.git

将部署信息添加到 Flux 中

在 Flux 中创建一个 Kustomization ,让 Flux 知道从哪个源读取部署配置文档,然后应用并部署到集群中

flux create kustomization $SOURCE_NAME \
  --target-namespace=$TARGET_NAMESPACE \
  --source=$SOURCE_NAME \
  --path=$CONFIG_PATH \
  --prune=true \
  --wait=true \
  --interval=30m \
  --retry-interval=2m \
  --health-check-timeout=3m \
  --export > ./clusters/app/$SOURCE_NAME-kustomization.yaml

请根据实际替换相应的变量(注意$CONFIG_PATH是填写前面创建的kustomize目录路径),我的例子:

flux create kustomization go-example \
  --target-namespace=helloapp \
  --source=go-example \
  --path="./kustomize" \
  --prune=true \
  --wait=true \
  --interval=30m \
  --retry-interval=2m \
  --health-check-timeout=3m \
  --export > ./clusters/app/go-example-kustomization.yaml

执行后,输出形如:

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: go-example
  namespace: flux-system
spec:
  interval: 30m0s
  path: ./kustomize
  prune: true
  retryInterval: 2m0s
  sourceRef:
    kind: GitRepository
    name: go-example
  targetNamespace: helloapp
  timeout: 3m0s
  wait: true

将修改提交到仓库

git add . && git commit -m "chore: add GitRepository and  Kustomization"
git push

查看 Flux 应用同步状况

flux get kustomizations --watch

输出形如:

NAME            REVISION                SUSPENDED       READY   MESSAGE
flux-system     main@sha1:bea43605      False           True    Applied revision: main@sha1:bea43605
go-example      main@sha1:bea43605      False           True    Applied revision: main@sha1:bea43605

查看应用部署情况

kubectl get all -n $TARTGET_NAMESPACE

$TARTGET_NAMESPACE请替换成实际的部署命名空间,我的例子:

kubectl get all -n helloapp

输出形如:

NAME                             READY   STATUS    RESTARTS   AGE
pod/go-example-6d6f47fd6-5w4xw   1/1     Running   0          23h
pod/go-example-6d6f47fd6-gj249   1/1     Running   0          23h
pod/go-example-6d6f47fd6-kwxg5   1/1     Running   0          23h

NAME                 TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
service/go-example   LoadBalancer   10.43.64.67   10.0.0.16     8800:32615/TCP   24h

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/go-example   3/3     3            3           24h

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/go-example-59996666bf   0         0         0       24h
replicaset.apps/go-example-6d6f47fd6    3         3         3       23h

最后

恭喜你🎉,你现在拥有了一套完全自动化的、基于 Flux 的 GitOps 持续部署流水线!如有疑问或任何想交流的内容,欢迎评论和留言😄


author: Smoothcloud-润云 Zpekii

Flux: 自动化GitOps好帮手

说在前面

推荐阅读:GitOps | GitOps is Continuous Deployment for cloud native applications

什么是 GitOps

GitOps 是一种实现云原生应用持续部署的方法。核心是使用我们熟知的 Git 工具,在一个包含了我们应用的基础设施的声明性描述(比如 k8s deployment.yaml))的 Git 仓库中,完成自动化流程部署;在我们需要在集群上部署新应用或更新现有应用时,就只需要在 Git 仓库上提交就行了。

为什么要搭建 GitOps

  1. 让你的部署更快并且还可以让你更频繁地执行部署

    • 采用 GitOps 的独到之处就是你不需要来回切换工具来部署应用
  2. 更简单更快的错误恢复

    • 错误恢复只需要使用 Git 进行回退还原即可
  3. 更便捷的证书部署管理

    • 你不需要真正访问到部署环境中才能管理
  4. 自文档化部署

    • GitOps 规范要求对任何环境的每次更改都必须通过 Git 完成,这样你不需要通过 ssh 登录到服务器,直接通过查看主分支就能知道服务器都运行了什么
  5. 团队知识共享

    • Git 仓库中包含了所有应用的基础设施完整描述,团队中的每个人可以随时快捷的了解变化

Flux 介绍

官方地址: Flux

Flux 是一个用于保持 k8s 集群和配置源(如 Git 仓库)同步的工具,它能够在新代码推送到仓库后自动更新集群上部署的应用

Flux应用示例

前置条件

  • 已部署 k8s 或 k3s 集群(我将以 k3s 为例)
  • 可访问的 Git 仓库(Github, Gitlab 或 Gitea, 下面将以我自己部署的 Gitea 仓库为例,公开仓库:Zpekii/go-example)

安装 Flux Cli 工具

通过 Bash 安装(适用于Linux)

curl -s https://fluxcd.io/install.sh | sudo bash

检查是否满足所需依赖

flux check --pre

执行后输出形如:

► checking prerequisites
✔ Kubernetes 1.34.3+k3s1 >=1.32.0-0
✔ prerequisites checks passed

将 Flux 安装到集群

flux bootstrap git \
    --url=$URL \
    --branch=$BRANCH \
    --username=$USER_NAME \
    --token-auth=true \
    --path=./clusters/app

其中$URL$BRANCH$USER_NAME需要替换成实际的 git 仓库地址、分支(一般是mainmaster主分支)以及拥有访问 git 仓库的账号名

我的例子:

flux bootstrap git \
    --url=https://git.0orz.top/Zpekii/go-example.git \
    --branch=main \
    --username=Zpekii \
    --token-auth=true \
    --path=./clusters/app

执行后,需要输入 git 账号密码,如果通过校验,则会输出形如:

► connecting to github.com
✔ repository created
✔ repository cloned
✚ generating manifests
✔ components manifests pushed
► installing components in flux-system namespace
deployment "source-controller" successfully rolled out
deployment "kustomize-controller" successfully rolled out
deployment "helm-controller" successfully rolled out
deployment "notification-controller" successfully rolled out
✔ install completed
► configuring deploy key
✔ deploy key configured
► generating sync manifests
✔ sync manifests pushed
► applying sync manifests
◎ waiting for cluster sync
✔ bootstrap finished

这个过程将会:

  • (如果你填写的 git 仓库地址还没有创建,那么它会帮你创建)
  • 在你的 git 仓库添加 Flux 组件(通过向你的仓库发起一个提交进行变更, 组件将会保存到项目根目录clusters/app下,这个由--path参数决定)
  • 在你的集群上部署 Flux 组件
  • 配置 Flux 组件跟踪仓库上的 clusters/app 路径(由--path参数决定)

克隆你的仓库

git clone $URL

请替换$URL为你实际的仓库地址,我的例子:

git clone https://git.0orz.top/Zpekii/go-example.git

创建 kustomize 目录来保存你的部署配置文档

cd $PRJ_PATH && mkdir -p kustomize

$PRJ_PATH替换为拉取仓库到服务器本地文件系统后的项目路径,我的例子:

cd go-example && mkdir -p kustomize

编写集群部署配置文档

使用 vim 创建和编辑文档

vim kustomize/deployment.yaml

按下 Insert 键,根据自己的实际情况编写吧,可以参考我的例子:

apiVersion: v1
kind: Namespace
metadata:
  name: helloapp
---
apiVersion: v1
kind: Service
metadata:
  name: go-example
  namespace: helloapp
spec:
  selector:
    app: go-example
  ports:
    - port: 8800
      targetPort: 8800
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-example
  namespace: helloapp
spec:
  selector:
    matchLabels:
      app: go-example
  replicas: 3
  template:
    metadata:
      labels:
        app: go-example
    spec:
      containers:
        - name: go-example
          image: harbor.0orz.top/go-example/go-example:8b5d44399e523027840a68ce17249d9ecfd5c094
          imagePullPolicy: IfNotPresent
          resources:
            requests:
              memory: "5Mi"
              cpu: "10m"
            limits:
              memory: "50Mi"
              cpu: "100m"
          ports:
            - containerPort: 8800
          volumeMounts:
            - name: config-volume
              mountPath: /config
            - name: helloapp-test-key
              mountPath: /certs
          command: ["/helloapp"]
          args: ["-f", "/config/.linux-config.yaml"]
      volumes:
        - name: config-volume
          configMap:
            name: go-example-config
        - name: helloapp-test-key
          secret:
            secretName: helloapp-test-key # 需要事先创建该 Secret 
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: go-example-config
  namespace: helloapp
data:
  .linux-config.yaml: |
    server:
      port: 8800
    certs:
      testKeyPath: /certs/test.key

我都配置了什么:

  • 创建了一个helloapp命名空间用来单独和管理我部署的应用
  • 创建了一个Service来暴露我的应用,让外部可以访问
  • 声明了我的应用Deployment信息,需要哪些资源、使用哪个镜像、创建几个副本,以及使用哪些配置和密钥
  • 创建了一个ConfigMap来声明我的应用配置

按下 Esc 键退出编辑,然后输入保存并退出 vim 编辑

:wq

将仓库源添加到 Flux 中

在 Flux 中创建一个git source

flux create source git $SOURCE_NAME \
  --url=$URL \
  --branch=$BRANCH \
  --interval=1m \
  --export > ./clusters/app/$SOURCE_NAME-source.yaml

请根据实际替换相应的变量,我的例子:

flux create source git go-example \
  --url=https://git.0orz.top/Zpekii/go-example.git \
  --branch=main \
  --interval=1m \
  --export > ./clusters/app/go-example-source.yaml

执行后,输出形如:

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: go-example
  namespace: flux-system
spec:
  interval: 1m
  ref:
    branch: main
  url: https://git.0orz.top/Zpekii/go-example.git

将部署信息添加到 Flux 中

在 Flux 中创建一个 Kustomization ,让 Flux 知道从哪个源读取部署配置文档,然后应用并部署到集群中

flux create kustomization $SOURCE_NAME \
  --target-namespace=$TARGET_NAMESPACE \
  --source=$SOURCE_NAME \
  --path=$CONFIG_PATH \
  --prune=true \
  --wait=true \
  --interval=30m \
  --retry-interval=2m \
  --health-check-timeout=3m \
  --export > ./clusters/app/$SOURCE_NAME-kustomization.yaml

请根据实际替换相应的变量(注意$CONFIG_PATH是填写前面创建的kustomize目录路径),我的例子:

flux create kustomization go-example \
  --target-namespace=helloapp \
  --source=go-example \
  --path="./kustomize" \
  --prune=true \
  --wait=true \
  --interval=30m \
  --retry-interval=2m \
  --health-check-timeout=3m \
  --export > ./clusters/app/go-example-kustomization.yaml

执行后,输出形如:

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: go-example
  namespace: flux-system
spec:
  interval: 30m0s
  path: ./kustomize
  prune: true
  retryInterval: 2m0s
  sourceRef:
    kind: GitRepository
    name: go-example
  targetNamespace: helloapp
  timeout: 3m0s
  wait: true

将修改提交到仓库

git add . && git commit -m "chore: add GitRepository and  Kustomization"
git push

查看 Flux 应用同步状况

flux get kustomizations --watch

输出形如:

NAME            REVISION                SUSPENDED       READY   MESSAGE
flux-system     main@sha1:bea43605      False           True    Applied revision: main@sha1:bea43605
go-example      main@sha1:bea43605      False           True    Applied revision: main@sha1:bea43605

查看应用部署情况

kubectl get all -n $TARTGET_NAMESPACE

$TARTGET_NAMESPACE请替换成实际的部署命名空间,我的例子:

kubectl get all -n helloapp

输出形如:

NAME                             READY   STATUS    RESTARTS   AGE
pod/go-example-6d6f47fd6-5w4xw   1/1     Running   0          23h
pod/go-example-6d6f47fd6-gj249   1/1     Running   0          23h
pod/go-example-6d6f47fd6-kwxg5   1/1     Running   0          23h

NAME                 TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
service/go-example   LoadBalancer   10.43.64.67   10.0.0.16     8800:32615/TCP   24h

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/go-example   3/3     3            3           24h

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/go-example-59996666bf   0         0         0       24h
replicaset.apps/go-example-6d6f47fd6    3         3         3       23h

最后

恭喜你🎉,你现在拥有了一套完全自动化的、基于 Flux 的 GitOps 持续部署流水线!如有疑问或任何想交流的内容,欢迎评论和留言😄


author: Smoothcloud-润云 Zpekii

看到同学发的文章,是 Obsidian 的 CEO 每年问自己的 40 个问题。刚好我也在用 Obsidian 写笔记,刚好我也还欠着 2025 年度回顾没写 (最近光顾着玩游戏了,更新都是靠存稿撑着哈哈),而且感觉问题清单很不错,于是也来跟风自问自答一篇。


1. 你有没有遵守年初时和自己许下的约定?

年初没有设定太具体的目标,只有个大概期望:一方面是工作顺遂,另一方面是大幅减重。

基本都做到了,工作经历了一些波折和焦灼之后重新恢复到稳定状态,体重更是回到了 20 年前大学时代的水平,体检各项指标也有显著改善,超出预期了。

2. 你今年做了哪些之前从未做过的事?

开设了公众号,之前只在微信读书发书评,以及朋友圈和 Facebook 的一些笔记,现在有了一个固定的长内容输出平台,瞬间激发了中年老男人无处安放的分享欲啊~ 🤣🤣🤣

而且从 11 月开始,还尝试挑战「日更不辍」每天发文,基本也都坚持下来了,给自己在读书和游戏之外,找到了新的乐趣来源。

3. 你的性格是什么?

我的 MBTI 人格测试 结果是 ESTJ (偶尔 ENTJ),但我始终觉得自己本质上是个 I 人,并没有太多的线下社交的需求,也不喜欢「现充」的生活状态,更喜欢安静的独处,看书、玩游戏 (而且只玩单机,不玩网游和手游)、再加上新的写作爱好才是我最舒服的美好时光。

只是可能有一点「表演型人格」的因素 (我在 PDP 性格测试 中是一只超级大 孔雀 哈哈),所以和任何人相处的时候都能够挥洒自如,所以大家都认为我是社交达人,其实那不是内心深处的我。

但我是个 J 人绝对没错!不仅是工作,就连生活也都有计划,提前 1-2 周就把时间都 Mark 到日程表上了 (而且对于非预约的突然来访、未提前通知的会议、临时起意召集的聚会等行径都极其厌烦,因为打乱了我的既定安排)

4. 你今年买过的最好的东西是什么?

安装全屋暖气系统,以及更换预埋网线升级全屋千兆 Wi-Fi 7 网络,这两件事非常值得,我也写了专门的攻略文章分享:

告别湿冷!在上海过冬也能穿短袖?全屋墙暖 yyds~

这 5000 元花的太香了!更换装修预埋网线,重构全屋千兆网络

唯一后悔的点是动手太晚了,应该早几年就折腾起来的。

640

5. 你去了哪些城市/州/国家?

自从疫情三年之后,护照就被收走了,也懒得麻烦借用,就一直没再出国。

今年出差也比前几年少了很多,大概只是常去的几个城市:北京、广州、杭州、武汉、苏州、常州、厦门、宁德、重庆这些吧。

另外 9 月份休假去了贵州和广西,都是之前出差去过但没时间玩的地方,换个心情去旅游确实有完全不一样的体验。

6. 你最害怕的是什么?

害怕父母会太早离开我们。

年初老爸复诊发现一个疑似转移,当时非常紧张,我研究了很多内容还写了分析笔记,甚至预先规划好可能的几种备选方案。后来经过两家最好医院的专家分别检查诊断,确认只是虚惊一场才放下心来。刚写到这里又回去翻了一下当时的笔记,那种慌乱和恐惧的情绪还历历在目。

7. 今年的哪些日子会铭刻在你的记忆中,为什么?

6 月 1 日,给黑妞儿过 20 周岁生日! 🎂🎂🎂

我们提前挑选了很多照片打印出来,准备了彩色纸张组成大字横幅,然后用鱼线悬挂起来布置了客厅,给我们的第一只猫也是最老的猫庆祝 20 周岁生日 (相当于人类 100 岁左右)。从 2005-2025 年,黑妞儿一起经历了我们生活过的每一个家,从杭州到上海,从租房到买房到换房,希望他还能继续多陪伴我们几年~

640 (1)

8. 现在的你会给十年前的你一些什么建议?

十年前就是 2015 年,我们在那一年当中一口气买了 3 套房子,还买了一辆 60+ 万的车,买东西更是直接选最贵的,5 万的除湿机、2 万的冰箱、1 万的电视、8000 的洗衣机,甚至直到现在看着家里那台 6000 元的电风扇也觉得当初过于丧心病狂了 —— 那时候正是我们自信心过度膨胀到顶点的时刻。

如果能给当时的自己一点建议,只希望能够提前清醒过来:人生的收入曲线并不是永远上升的,房价不会永远涨,经济大环境也不会永远那么好。

9. 你希望十年之后,什么发生了变化?

希望十年之后,自己的心态能够更加平和,笑看人生,云淡风轻。

不是现在这样,面对逆境只是强行让自己苟住。而是到那个时候,国家统一了、世界和平了、经济回暖了、事业更好了,自然而然就会放松下来,信心满满,游刃有余。

10. 你希望十年之后,什么依旧保持一致?

希望十年之后,全家 6 口人还是好好的生活在一起!

11. 若拥有亿万财富,你会做什么?

我应该会做点没有负担没有压力的工作,以便让自己有更多的时间读书、写作、玩游戏吧~ (梦里啥都有哈哈哈)

12. 你今年最大的失败是什么?

有些事情,不是自己需要负责的范畴,就应该第一时间坚决果断的拒绝,而不是碍于情面虚与委蛇,最后反而被拉扯进去,不得不硬着头皮处理一些很消耗情绪价值的破事。

13. 你最厌恶别人的特质是什么?

厌蠢! 😡😡😡

我宁愿和坏人斗智斗勇,也讨厌和蠢人打交道。无知、固执、反智、低效,这些卑劣的特质居然可以在一个人身上同时显现,真是令人憎恶。。。

14. 在你心中什么是最完美的幸福?

对于 J 人来说,事情能够按照自己的预期规划顺利进行,就是幸福。

善战者无赫赫之功,最好不要有任何意外来彰显我的应急能力。

15. 今年你大部分的钱都花到哪里去了?

今年基本清空了全部房贷,还剩下一点保留抵税,并且已经可以用公积金完全覆盖了。还换了一辆 MPV 电车。

16. 有什么事让你感到超级、超级、超级兴奋?

貌似没有。

17. 与去年的这个时候相比,你是:感到更快乐还是更悲伤了?变得更瘦还是更胖了?变得更富还是更穷了?

情绪上稳定乐观吧,没什么悲伤,但是经济大环境让人快乐不起来。

体型上更瘦了,这个非常明显,体重从 194 斤减到 135 斤,全部衣服裤子都换了,就连腰带都刚重新买了一条更短的。。。

经济上算是负债大幅降低,去杠杆任务基本完成了。

18. 什么是最痛苦的?

焦虑,而又无力解决,然后更加焦虑。

有一段时间压力很大,失眠很严重,不得不靠吃药才能调节,还好后来事情回归平稳状态,情绪也慢慢舒缓下来了。

19. 你希望自己能做得更多的是什么?

持续阅读,持续学习,持续思考,持续输出。

20. 你希望自己能做得更少的是什么?

无效社交,减少非必要的应酬,尽可能不喝酒,把时间留给自己。

同时减少噪音干扰,卸载抖音,屏蔽视频号,大量取消关注的人,避免信息过载,把更多时间留给读书和写作。

21. 你是如何度过节假日的?

全家人终于都长住上海了,而且都在同一个小区,节假日就是宅在家里不出门啊!(最近《Diablo IV》预售 DLC2 开放新角色圣骑士,更是没日没夜刷游戏了哈哈哈~) 🎮🎮🎮

旅游都是错峰休假出行,坚决远离人多的时间和地方。

22. 你最想培养的特质是什么?

学会拒绝别人。

放下助人情结,尊重他人命运。

23. 你是否有讨厌某个你去年此时不觉得讨厌的人呢?

没有。

讨厌的人一直都是那么讨厌,只需要「再也不见」就好了。

24. 你今年最喜欢的电视节目是什么?

不看电视。

25. 你今年读过最好的一本书是什么?

《毛泽东选集》,经典永远是经典! 伟人近一百年前写的文章,其中很多内容时至今日仍是至理。

围绕着重读《毛选》的感悟,今年还写了好多篇读书笔记。

26. 你今年发现的最好听的一首歌是什么?

在我的每月随笔中,陆续推荐过几首歌:郁可唯《再见的,不见的》、王优秀《想某人 (DJ 舞曲版)》、石岩《蜉蝣志》、徐佳莹《我经过风暴》、张碧晨《我不原谅》、任素汐《亲爱的你啊》。

其中还写了两篇听歌笔记:
一曲《蜉蝣志》:唱的不是修仙,而是我们凡人
不是情歌!从《亲爱的你啊》听到了我们每一个咬牙坚持的追梦人

如果只能选一首的话,我投票给《亲爱的你啊》。

27. 你最喜欢的电影是什么?

也不看电影。

28. 你最喜欢的一餐是什么?

在北京南站吃了一碗久违的李先生牛肉面。

为此还专门写了一篇笔记:
记忆的味道:一碗牛肉面的时光叙事

29. 有什么是你想要且得到了的?

全家人都在一起,工作稳定且比较顺利,身体健康。

30. 有什么是你想要却没有得到的?

哪怕是最低限度的财富自由。

31. 你在生日那天做了什么?

上班同事送给我一个非常好吃的小蛋糕,回家太太送给我一台 5080 游戏本 (所以我最近玩游戏的时间明显增多了哈哈哈) ~ 🎁🎁🎁

640 (2)

32. 有什么还未发生的事,如果发生了,会让你的这一年变得无比满足?

花了很多时间精力,跟进了整整一年的全新业务板块,最终还是没能赶在年底前正式落地,首单产出只能等到 1 月份了,实在是有点遗憾。

33. 是什么让你保持理智?

我知道自己在人多混乱的地方就会情绪暴躁,那么就要提前回避这样的场景出现,宁可这顿饭不去吃、这个景点不去玩、这个东西不去买。

同理,已经 40 多岁的中年老登了,应该能对自己有一定的预见性,遇到破事提前做好心理建设吧 (情绪稳定的太太绝对是我的灭火器) ~ 🧯🧯🧯

34. 你最想去什么地方生活?

夏天去东北或烟台避暑,冬天去大理或者海南,春秋在上海与朋友们小聚,每年 3 月和 9 月刚开学又没有长假的时间错峰出行旅游。

35. 你欣赏男人身上的气质是什么?

三观正,有逻辑,遇事不慌,中正平和。

36. 你欣赏女人身上的气质是什么?

善良,独立 (不仅仅是经济上独立,还包括独立生活能力),情绪稳定。

37. 你最钦佩哪位名人/公众人物?

毛泽东 (原因参见第 25 个问题)

38. 你收到的最好的赞美是?

你懂的真多 / 你讲得真好 / 你思路真清楚 / 你写的文章好看 / 给你点赞! 👍👍👍

39. 今年你学到了什么有价值的人生教训?

有理不在声高。

这也是我今年写的一篇笔记:

有理不在声高

40. 用一句话总结你这一年?

人生从不是一场必须夺冠的竞赛,而是一段体验的旅程。

这同样是今年的一篇笔记:

内求诸己,不假外物:学会与自己和解,才是人生的归宿


2026 继续前行!但求无愧于心,过好自己的生活就足够了~ 💪💪💪

今天凌晨,马斯克的商业帝国又发生巨变:

计划在今年 IPO 的 SpaceX收购了 xAI。新公司估值达 1.25 万亿美元(约合人民币 8.68 亿元),差不多是 xAI 估值(目前约 2500 亿美元)的五倍。 

有意思的是,据彭博社消息,知情人士透露,这笔交易是全股票交易,合并公司的股票预计每股价格为 526.59 美元。

另据路透社消息,在本次收购中,xAI 的投资者,每持有 1 股 xAI,可兑换 0.1433 股 SpaceX 股票;部分高管还可选择按每股 75.46 美元现金退出。

合并之后,这个巨大的“SpaceX Plus 版”,一口气拥有了:火箭、太空互联网、通信、AI、还有社交平台——去年 3 月,xAI 以 330 亿美元收购了 X 平台。

马斯克亲自写下一篇博客,阐明他的“太空 AI 算力”路线:

“这不仅是 SpaceX 与 xAI 使命的下一个篇章,而是下一本书:通过规模化,打造一颗“有意识的太阳”,以理解宇宙,并将意识之光延伸至群星之间。

当下,AI 的进步高度依赖于地面的大型数据中心,而这些设施需要极其庞大的电力与制冷能力。

全球范围内,为 AI 提供算力所需的电力需求,即便在短期内,也无法仅靠地面方案来满足,否则势必会对社区与环境造成沉重负担。

从长期来看,基于太空的 AI 是唯一可行的规模化路径。哪怕只利用太阳能量的百万分之一,所需的能量规模,也将超过人类文明当前总能耗的一百万倍。

因此,唯一合乎逻辑的解决方案,就是将这些高度消耗资源的计算活动,转移到一个拥有充足空间与能量的地方......”

不过虽然总体上“合二为一”了,但公司还向员工发了份内部备忘录,称 SpaceX 和 xAI 的品牌、工作目前暂时保持独立:

xAI 的员工未经批准不得直接访问 SpaceX 的内部数据库,也不能和这家火箭公司的员工直接合作;但是嘛,SpaceX 的员工,或许可以访问 xAI 的内部工具。

##AI+航天,“垂直整合型创新引擎”

这篇博客的开头,气势就直接拉满了:“SpaceX 已完成对 xAI 的收购,目标是打造一个在地球之上、也在地球之外,最雄心勃勃的垂直整合型创新引擎”

马斯克还在博文中笑称:“太空之所以叫'space',本来就是因为那里有足够的空间。”,还抛出一个大胆的预判:

“未来两到三年内,AI 计算成本最低的地方,会在太空。”

此话看起来很玄乎,但它并不是一句完全脱离工程现实的“马斯克式豪言”。

首先,在马斯克看来,AI 发展的“硬约束”不是芯片,而是电力和散热;而太空确实具备一些地面数据中心不容易同时满足的条件:

近地轨道是真空环境,散热在理论上更有优势;太阳能获取几乎不受昼夜限制,还基本不存在土地、电网接入、地方审批这些隐性成本。

如果算力直接部署在轨道上,还可以与卫星通信网络形成更紧密的耦合,把“感知—计算—传输”压进同一个系统里。

另外,他比较乐观假设了星舰(Starship)会把“发射成本”压到极低。

他表示,今年,将开始由星舰,把能力更强的 V3 星链卫星送入轨道。星舰单次发射所增加的系统容量,将超过当前 Falcon 发射 V2 版星链卫星的 20 倍

他随后给出了一个更直观的“算术题”:

如果每年向轨道发射 100 万吨卫星,每吨可提供 100 千瓦的计算能力,那么每年就能新增 100 吉瓦(GW)的 AI 算力,而且几乎不需要持续的运营或维护。从长期来看,存在一条每年向轨道部署 1 太瓦(TW)算力的路径

这是什么水平?

已知:1 太瓦(TW) = 1,000 吉瓦(GW),而一个大型核电站的发电功率才 1–1.5GW,而今天全球全部 AI 数据中心的用电规模,也就大致在数十 GW 量级。

而且马斯克不止嘴上说说,已经开始大举行动了。1 月 30 日,SpaceX 向美国联邦通信委员会(FCC)提交了一份文件,计划发射 100 万颗卫星,在近地轨道打造一个“轨道数据中心系统”,消息直接炸穿了航天圈。

总而言之,马斯克认为太空算力更便宜,并不是因为今天的技术有多么成熟,而是基于这三个前提能否同时兑现

  • 星舰可以把发射成本压到工业级

  • 太阳能可以提供近乎无限的长期电力

  • AI 算力的主要成本最终会集中在能源和散热上

但是现实的问题也清晰且棘手

首先是任务类型:推理或许还能容忍一定延迟,但大规模模型训练对同步性、带宽和稳定性的要求极高,把它搬到轨道上是否合适,本身就是一个问号。

其次是维护与可靠性:地面数据中心可以随时换板、换机、扩容,在轨硬件一旦出问题,几乎没有快速补救手段。 再往下是辐射、寿命和算力密度这些航天级约束,本来就和“把算力堆到极限”的 AI 逻辑存在天然冲突。

还有绕不开的问题:。无论是发射、替换,还是在轨运行,短期内都很难被称为“低成本”。

另外,截至目前,Starlink 依然是一个明确以通信为核心目标的系统。公开信息里,并没有任何已经成规模运行的“在轨算力”或“轨道数据中心”实验被披露。

这意味着,所谓“太空算力”,至少在现在,更像是一种方向判断,而不是已经跑通的工程方案。

正是在“太空算力还没闭环、地面模型公司又烧不动”的夹缝里,xAI 的定位开始转向

单独看 xAI,其问题其实挺清楚:模型研发和推理成本极高,每月烧钱在十亿美元量级;Grok 还没有形成稳定、可复制的商业模式;而且在与 OpenAI、谷歌等大厂的竞争中,大模型公司已经被拖入一场算力和资本的消耗战。

与 SpaceX 合并之后,xAI 不再只是“再做一个模型的公司”。它被放进了一个覆盖通信网络、轨道资源、能源与算力入口的系统里,AI 开始承担的是系统级能力

这也可能会改变 Grok 的潜在去向:它不再只是聊天机器人,而更可能成为星链终端的智能层、航天等场景中的信息处理系统,甚至是面向真实世界的实时世界模型。

##一场为 IPO 铺路的重构

如果说技术与产业路径解释了“这件事是否合理”,那么资本层面的变化,或许可以解释一下为什么是现在

这次交易背后,有一组清晰的数字:SpaceX 的内部估值约为 1 万亿美元,xAI 约为 2500 亿美元,合并后的整体估值约 1.25 万亿美元。

另据路透社消息,SpaceX 可能在 2026 年中推进 IPO、募资规模最高达 500 亿美元、估值目标可能到 1.5 万亿美元左右。不过 SpaceX 方目前对此还没给出回复。

把这些数字放在一起看,SpaceX 合并 xAI,就像是把两本厚薄悬殊的账,摊在同一张桌子上重新算:

xAI 的财务压力非常大,外界此前就多次报道其现金消耗速度接近“每月 10 亿美元量级”,并出现持续亏损。

相比之下,SpaceX 的“现金流”不仅持续,还逐年增长。其 2023 年总收入为 87 亿美元,2024 年增长至 131 亿美元,而据路透社消息,SpaceX 在 2025 年长到了 150 亿美元,其中 Starlink 的贡献比例约 50%–80%,经营利润(EBITDA 口径)约 80 亿美元。

从某种可以说,这次合并,是把高风险资产并入一个现金流更稳定、确定性更强的主体之中。

与此同时,这也完成了一次 IPO 叙事的升级

即将上市的主体,不再只是“一家火箭公司”,而是被包装为一个同时覆盖 AI、太空与通信基础设施的系统级公司。

对于投资人而言,这一步还回应了一个现实的问题:xAI 持续烧钱,谁来兜底?——给出的答案是:由一个已经具备基础设施属性、且现金流正在增强的主体来兜底。

当然,公开市场并不会为宏大叙事本身买单。

真正决定这次合并能否在 IPO 中站得住脚的,仍然是几个极为现实的指标:

不过还有一点需要说明:公开市场不会只听故事。真到了 IPO 关口,这些指标依然关键,比如:

  • Starlink 的收入和现金流能否持续;

  • AI 训练与数据中心投入会不会把主业的盈利“吃回去”;

  • 一个横跨航天、AI、社交平台等的公司,治理结构、信息披露与监管边界是否会变得更复杂。

总而言之,在笔者看来,在 IPO 预期升温的节点上,这次合并很像一次提前做结构调整的尝试;能不能被市场买账,还得看后续财务表现和治理。

参考链接:

https://x.com/SpaceX/status/2018440335140024383

https://www.spacex.com/updates#xai-joins-spacex

https://www.bloomberg.com/news/articles/2026-02-02/elon-musk-s-spacex-said-to-combine-with-xai-ahead-of-mega-ipo

我的 Google 账号以前填写过中国地址,导致我付费开通 Google One 以后,无法使用任何 AI 功能,唯一有用的功能就是 100GB 储存空间。

而且现在 Google 不给我退钱,请问我还有办法通过什么操作,把 AI 功能找回来吗?

本文首发于 Aloudata 官方技术博客:《选型对比:Apache Atlas vs 商业元数据平台存储过程解析能力实测》转载请注明出处。

摘要:本文针对金融、制造等行业中 DB2、Oracle 存储过程解析的治理难题,深度对比了 Apache Atlas 与 Aloudata BIG 等商业平台的技术差异。核心聚焦于表级/列级血缘与算子级血缘的本质分野,并通过实测场景展示高精度解析如何驱动自动化资产盘点、主动风险防控及 DataOps 协同等核心治理场景,为企业数据治理选型提供决策依据。

演进背景:为何存储过程成为元数据管理的“硬骨头”?

在金融、制造业等传统行业,核心业务逻辑往往被封装在成千上万的 DB2、Oracle 存储过程中。这些存储过程不仅是数据加工的关键环节,更是监管指标口径的最终承载者。然而,它们却成为数据血缘治理中最难啃的骨头,原因在于其三大特性:

  1. 封闭性:逻辑封装在数据库内部,与外部ETL调度系统解耦,传统采集器难以触达。
  2. 动态性:大量使用临时表、游标、动态 SQL 拼接,数据路径在运行时才确定。
  3. 方言多样性:不同数据库的 PL/SQL、DB2 SQL PL 等方言语法各异,私有函数和语法糖层出不穷。

正如行业观察所指出的:“传统解析器一碰到存储过程、DBLINK、同义词像迷宫一样彼此引用...轻则血缘断链,重则错配跨库连接。” 这直接导致了企业数据链路“看不清”的核心痛点:面对监管报送(如 EAST 报表)要求,数据团队需要耗费数周甚至数月进行人工指标口径溯源与盘点,效率低下且准确率无法保证。

核心困境:如果无法精准解析存储过程,那么基于血缘的影响分析、故障溯源、合规审计都将建立在沙丘之上。

核心差异:表级/列级血缘 vs 算子级血缘的本质分野

面对存储过程解析的挑战,不同技术路线的能力差异本质上是血缘解析粒度的差异。这直接构成了开源/传统工具与先进商业平台之间的技术分水岭。

对比维度Apache Atlas (代表开源/传统)Aloudata BIG (代表先进商业平台)
解析范式被动元数据管理,依赖 Hook 采集主动元数据平台,主动解析与感知
解析粒度表级、列级为主算子级 (Operator-level)
技术原理基于正则或简单语法匹配字段名基于 AST(抽象语法树)的编译器级深度解析
存储过程支持有限支持,通常依赖外部Hook或手动标注原生深度解析,支持 PL/SQL、DB2 SQL PL 等方言
解析准确率复杂场景下通常低于 80%>99% (基于核心能力)
核心衍生能力资产目录、基础血缘视图行级裁剪、白盒化口径提取、动态 SQL 穿透

关键概念澄清:

  • 表级/列级血缘:回答“数据来自哪些表/字段”。它像一张只标明了城市和街道的地图,无法知晓街道内的交通规则(过滤条件)和立交桥(多表关联逻辑)。
  • 算子级血缘:回答“数据经过怎样的加工(过滤、连接、聚合)而来”。它像一张高精度导航图,能清晰展示每一个路口(算子)的逻辑,这是实现后续精准治理的技术基石。

精度实测对比:从“有没有”到“准不准”的能力代差

在存储过程解析上,真正的代差不仅在于“能否解析”,更在于“解析得是否精准、是否理解复杂逻辑”。这直接决定了基于血缘的治理动作是“精准手术”还是“粗放轰炸”。我们通过三个典型场景进行对比:

场景一:复杂逻辑覆盖(DB2 存储过程)

  • 挑战:一个 DB2 存储过程,内部包含临时表循环写入、基于游标的动态数据分派、以及使用EXECUTE IMMEDIATE执行的动态 SQL。
  • Apache Atlas:可能仅能捕获存储过程的输入表和最终输出表,中间复杂的临时表转换和动态逻辑链路完全丢失,血缘图出现断点。
  • Aloudata BIG:凭借算子级血缘引擎,能像编译器一样穿透临时表、解析动态 SQL 字符串,将整个存储过程的完整逻辑还原为包含 Filter、Join、Aggregation 等算子的精细化图谱,保证链路连续、准确。

场景二:监管口径追溯(EAST 报表指标)

  • 挑战:业务人员需要追溯某个 EAST 报表中“贷款减值准备”指标的具体计算口径。
  • Apache Atlas:可能只能给出该指标最终关联的物理表名列表(如 table_atable_b),业务人员仍需人工翻阅大量存储过程代码来理解WHERE条件、CASE WHEN逻辑。
  • Aloudata BIG:可通过白盒化口径提取功能,自动将穿透多层视图和存储过程的复杂 SQL 逻辑,压缩成一段可读的、近似于原始业务逻辑的 SQL 语句,清晰展示过滤条件、关联关系和计算规则,实现“一键溯源”。

场景三:变更影响分析

  • 挑战:修改某个存储过程中关于“客户等级=‘VIP’”的过滤条件。
  • Apache Atlas:基于列级血缘,影响分析会简单粗暴地波及所有下游使用该存储过程输出结果的表和报表,导致大量误报,需要人工逐一筛选。
  • Aloudata BIG:基于行级裁剪技术,能精准识别该WHERE条件,并分析出只有那些依赖“客户等级=‘VIP’”这个特定数据子集的下游任务才会真正受影响。可将评估范围降低 80% 以上,实现精准、高效的影响评估。

实证案例:浙江农商联合银行在引入 Aloudata BIG 后,对其核心系统中的 DB2 存储过程进行血缘解析,实现了 99% 的解析准确率(数据来源:浙江农商联合银行案例实践),为后续的自动化治理奠定了可靠基础。

场景能力对比:解析之后,如何驱动自动化治理?

高精度解析是强大的“武器”,但唯有与业务场景结合,才能转化为真正的“战斗力”。在解析能力之上的自动化应用水平,是开源与商业平台另一个显著的差距。

治理场景Apache Atlas (典型状态)Aloudata BIG (典型能力)核心价值
自动化资产盘点需手动配置采集器,关联业务含义,大量人工确认。“一键溯源”:自动生成监管报送指标的完整加工口径。浙江农商联合银行案例显示,监管指标盘点从数月缩短至 8 小时,人效提升 20 倍。应对监管合规,提效降本。
主动风险防控缺乏事前事中评估能力,通常在故障发生后用于链路查看。“事前事中”:在存储过程代码上线前,自动评估变更对下游核心报表的影响。中国民生银行借此构建了变更协作机制,保障核心链路。规避资损风险,保障数据服务 SLA。
主动模型治理可发现表级依赖,但难以深入逻辑层识别问题。识别存储过程中的“坏味道”(如循环依赖、重复计算),并辅助生成模型重构或数据库迁移(如Oracle转国产库)的建议代码。招商银行在数仓迁移中,利用相关能力节省了 500+ 人月工作量。优化架构,降低存储计算成本。
DataOps 协同作为静态资产目录,难以驱动流程。作为 DataOps 的“控制流”,将精准血缘融入测试用例生成、发布审批、故障定位等环节。招商银行实践表明,其代码上线前评估时间缩短 50%。提升研发运维协同效率,加速数据价值交付。

选型避坑指南:根据你的企业现状做决策

选择开源还是商业平台,不应是单纯的技术偏好或成本博弈,而应基于企业数据现状和治理目标的理性决策。

适合 Apache Atlas 的情况:

  • 技术栈:以 Hadoop、Hive、Spark 等开源大数据生态为主。
  • 数据复杂度:存储过程较少或逻辑简单,血缘需求以数据资产发现、目录化管理和基础链路可视化为目标。
  • 团队能力:拥有较强的内部研发和运维团队,能够承担Atlas的部署、定制开发、插件编写和长期维护成本。
  • 治理阶段:处于数据治理初期,对自动化治理场景要求不高。

必须考虑商业平台(如 Aloudata BIG)的情况:

  • 核心系统:大量核心业务逻辑封装在 DB2、Oracle、GaussDB 等传统数据库的存储过程中。
  • 合规压力:面临 EAST、1104 等严格的监管报送要求,对指标口径溯源的自动化、准确性、时效性有极高要求。
  • 风险容忍度:无法承受因上游变更导致下游报表错误或数据资损的风险,需要建立事前事中防控机制。
  • 战略项目:正在进行数仓重构、国产化替代、或深度推行 DataOps,需要元数据作为“控制流”驱动自动化协同。

核心提醒:切勿因初期授权成本而选择无法解决核心痛点的工具。一旦在复杂存储过程解析上“失准”,后续所有治理动作都可能失效,导致项目推倒重来,其隐性成本(时间、机会、风险) 远超工具本身差价。

常见问题 (FAQ)

Q1: Apache Atlas 完全不能解析存储过程吗?

不完全正确。Apache Atlas 可以通过自定义 Hook 或解析器插件来捕获存储过程的执行信息,但其原生、开箱即用的深度解析能力有限。特别是对于 DB2、Oracle 中复杂的 PL/SQL 逻辑(如动态 SQL、游标循环),很难做到高精度、自动化的算子级解析,通常需要大量人工编写规则、补全和维护血缘,可持续性和准确性面临挑战。

Q2: 存储过程解析准确率 >99% 是如何实现的?

这依赖于算子级血缘技术。平台会像编译器一样,基于抽象语法树(AST)深度解析 SQL 和存储过程代码,理解每一个操作符(如 Filter, Join, Aggregation)的语义和逻辑关系,而非简单进行表名字段名的文本匹配。同时,结合对多种数据库方言(如 DB2 SQL PL)的深度支持和动态 SQL 的穿透分析能力,从而在复杂场景下仍能保证极高的解析准确率。

Q3: 除了存储过程,商业元数据平台还有哪些关键优势?

核心优势在于将高精度血缘转化为自动化治理能力。例如:1) 行级裁剪实现精准影响分析,减少误报;2) 自动化监管指标盘点,将人效提升数十倍;3) 事前事中变更风险防控,避免资损;4) 作为 DataOps 的“控制流”,驱动测试、发布、运维的自动化协同。这些体系化的、开箱即用的场景化能力,是开源工具需要大量定制才能部分实现的。

Q4: 中小企业是否也需要为存储过程解析投入商业平台?

取决于业务对数据的依赖程度和风险承受能力。如果企业的核心业务逻辑和财务报表严重依赖存储过程,且数据错误会导致直接业务损失或合规风险,那么这项投资具有高必要性。反之,如果存储过程简单、变更不频繁,且对血缘的实时性、准确性要求不高,可先利用开源工具结合人工管理进行过渡,但需评估未来业务增长带来的复杂度提升风险。

维护个边缘项目,摸了一年鱼,搞了健身,上班没事看看书学学新东西,就也还行……😂😂😂

年后看看换换了……

https://ceceya.net

TqFSyqr2LP5Iqb7QhYAMfXc5OdMkBGot.webp

测测鸭 | 发现你的职业潜能

职业测评科学原理 与应用白皮书

科学驱动 · 数据赋能 · 职业未来


1. 引言:新一代职业发展导航系统

在数字化转型的浪潮下,职业形态正经历着前所未有的剧变。新兴职业的涌现与传统岗位的迭代,使得现代职场人在职业选择上面临着巨大的不确定性与迷茫感。

测测鸭 (Ceceya) 作为新一代职业发展导航系统,正是在这一背景下应运而生。我们的使命是通过科学严谨的心理学模型与先进的数据分析技术,消除职业规划中的信息不对称与认知盲区。不同于传统的经验主义咨询,Ceceya 坚持 "循证决策" (Evidence-Based Decision Making) 的理念,构建了以经典心理学理论为基石、以大数据算法为引擎的测评体系。我们致力于将复杂的个人特质转化为可视化的数据洞察,帮助用户从 "直觉选择" 转向 "科学决策",实现个人价值与社会需求的精准匹配。


2. 核心理论一:霍兰德职业兴趣模型 (RIASEC)

测测鸭的职业兴趣评估模块基于著名的霍兰德职业兴趣理论 (Holland's Theory of Vocational Personalities)。该理论由美国心理学家约翰·霍兰德 (John Holland) 于 1959 年提出,是目前全球应用最广泛、实证效度最高的职业指导理论之一。

RIASEC 六大核心类型

  • R 现实型 (Realistic) — 崇尚实干,喜欢操作工具、机械,偏好具体而非抽象的任务。

  • I 研究型 (Investigative) — 善于思考,喜欢探索、分析与解决科学问题,追求知识与真理。

  • A 艺术型 (Artistic) — 富有想象力,追求创新与自我表达,具有独特的审美与直觉。

  • S 社会型 (Social) — 热衷助人,擅长人际沟通、教育与服务,具备同理心。

  • E 企业型 (Enterprising) — 追求权力与成就,善于领导、劝说与管理,目标导向明确。

  • C 常规型 (Conventional) — 注重细节,喜欢有序、规范的数据处理工作,责任心强。

> RIASEC 不仅仅是简单的分类,它构建了一个严谨的六边形结构。位置相邻的类型(如 R 和 I)在心理特质上具有较高的相关性(一致性);而相对位置的类型则差异最大。Ceceya 的算法利用这一几何关系计算用户与特定职业的适配度。


3. 核心理论二:舒伯职业价值观体系

如果说兴趣决定了**"你会喜欢做什么",那么价值观则决定了"你为什么而工作"。Ceceya 引入了舒伯工作价值观量表 (Work Values Inventory, WVI)** 作为评估体系的第二大支柱。

Ceceya 的价值观测评覆盖了舒伯体系中的 15 项核心维度,分为内在价值观(如利他主义、美感、智力激发)和外在价值观(如经济报酬、声望、工作环境)。通过分析这些驱动力,我们帮助用户找到能带来长期满足感和稳定性的职业环境。


4. 测测鸭测评体系的技术实现

01 全量测评

严格遵循霍兰德架构,通过活动、能力、职业偏好、自我评价四个维度交叉验证,确保结果的深度与准确性。

02 快速速测

针对碎片化时间设计,精选 60 道核心题目,利用自适应逻辑在 10 分钟内快速锁定 RIASEC 优势代码。

03 可视化引擎

采用动态雷达图与柱状图呈现结果,精准计算标准分 (Z-Score),直观展示维度均衡度与突出优势。


5. 测评结果解读与应用指南

一份高质量的测评报告不仅要呈现数据,更要指导行动。Ceceya 的报告解读遵循 "特质识别—综合分析—决策支持" 的逻辑路径。

兴趣与价值观的"双轨决策"

我们建议用户在解读报告时,将**霍兰德代码(兴趣)舒伯核心价值观(需求)**进行交叉比对。例如,同样的兴趣代码在不同的价值观驱动下,可能指向完全不同的职业细分领域(如"利他主义"指向教育咨询,而"经济报酬"指向销售管理)。


结语

职业生涯是一场长跑,而非百米冲刺。测测鸭 (Ceceya) 致力于通过科学的测评工具,帮助每一位用户建立清晰的自我认知。未来,我们将继续深化 AI 技术在职业规划领域的应用,赋能每一个个体实现潜能的最大化。

https://ceceya.net

测测鸭的师兄: https://boboji.org

在数字化转型浪潮下,企业对客户关系管理(CRM)的需求早已突破“单纯管客户”的边界,延伸至订单、库存、采购、生产的全业务链一体化管控。本文选取超兔一体云、SugarCRM、HubSpot CRM、SuiteCRM、 EC (腾讯EC)、励销云、腾讯企点CRM、神州云动CloudCC、浪潮CRM9款主流产品,围绕销售机会管理、订单管理、产品与库存管理、采购管理、生产管理五大核心模块展开专业横向对比,为企业选型提供决策依据。

一、整体能力雷达图评分(满分10分)

品牌销售机会管理订单管理产品与库存采购管理生产管理综合评价
超兔一体云9.5109.599全模块原生一体化,覆盖全业务链
SugarCRM96433销售能力成熟,后端需插件/集成
HubSpot CRM9.25.53.532.5营销-销售一体化,后端依赖生态集成
SuiteCRM7.5543.53开源高定制,需技术团队支撑落地
EC(腾讯EC)84111社交化销售管控,后端能力缺失
励销云8.56.5554.5中小B2B全流程覆盖,需部分集成
腾讯企点CRM74.5211腾讯生态前端协同,后端能力薄弱
神州云动CloudCC7.55.5511销售+AI能力突出,后端需集成
浪潮CRM56666集团级集成底座,原生能力需依赖ERP

二、分模块深度对比

(一)销售机会管理:从获客到转化的核心战场

销售机会管理是CRM的核心模块,直接决定企业获客效率与转化成功率。以下从获客能力、跟单模型、生命周期管理、AI/数据分析四大维度展开对比:

1. 核心能力对比表

品牌获客能力跟单模型适配客户生命周期管理AI/数据分析支持
超兔一体云百度/巨量引擎/官网/微信/工商搜客等多渠道集客;线索一键转化为客户/订单;市场活动成本自动均摊三一客(小单快单)、商机阶段(中长单)、多方项目(多主体业务)3种原生模型;节点化推进自动分类需求培养/有需求/成功等多客池;支持客户画像自定义、视图布局个性化配置低门槛自定义AI智能体嵌入视图;同比环比引擎、多表聚合引擎;嵌入式Coze工作流
SugarCRM多渠道线索接入;线索自动去重与分配精细化销售漏斗分层;按线索优先级动态调整跟单策略线索全生命周期状态追踪;客户标签化管理AI驱动线索评分与优先级排序;销售趋势分析报表
HubSpot CRM营销自动化获客;表单/落地页线索自动采集拖拽式可视化销售漏斗;AI自动生成跟进序列(邮件/通话/会议)客户分阶段生命周期管理;互动数据自动关联客户画像AI线索分配;销售活动ROI分析;营销-销售数据联动分析
SuiteCRM开源可定制获客渠道接入;线索批量导入与分配自定义销售管道;支持按业务场景定制跟单节点客户全生命周期跟踪;自定义报价/合同模块联动开源报表引擎;可集成第三方AI工具实现智能跟单
EC(腾讯EC)微信/QQ/电话/邮件全沟通渠道线索自动捕捉基于沟通轨迹的智能化跟进提醒;潜在销售机会自动识别客户沟通轨迹全记录;社交互动数据关联客户状态销售工作数据自动统计(客户增长/联系次数);客户互动热度分析
励销云AI智能搜客/外呼机器人;工商数据精准筛客智能线索分配;销售漏斗全流程跟踪;从线索到回款的闭环管理客户标签化分类;跟进状态自动更新AI客户意向评分;销售转化漏斗分析;获客成本统计
腾讯企点CRM微信/QQ社交触点线索采集;潜在客户互动追踪潜在客户状态动态更新;减少客户流失客户社交互动数据全记录;客户分层管理销售过程数据统计;客户转化趋势分析
神州云动CloudCC多渠道线索接入;AI智能体线索识别业务机会全流程管理;活动提醒与历史跟踪;合同审批联动客户全生命周期管理;标签化分类AI智能体辅助跟单;销售绩效分析
浪潮CRM依托ERP集成实现线索与后端业务联动(原生能力需扩展)集团级客户分层跟单;按业务单元定制跟进策略集团客户全生命周期管理;数据跨业务单元联动集团级销售数据汇总分析;业务趋势预测

2. 典型流程可视化:超兔一体云销售机会管理全流程

flowchart LR
    A[多渠道获客<br>百度/微信/工商搜客] --> B[线索智能处理<br>一键转化+归属地识别+自动分配]
    B --> C[多模型跟单<br>三一客/商机/多方项目适配]
    C --> D[客户生命周期运营<br>多客池分类+画像自定义]
    D --> E[AI+数据分析<br>智能体决策支持+趋势分析]
    E --> F[销售机会转化<br>签约/回款+数据沉淀]

3. 核心优势总结

  • 全流程闭环标杆:超兔一体云实现从获客到转化的全链路管控,多跟单模型适配不同业务场景,AI与数据分析能力直接嵌入业务流程,无需额外集成。
  • 社交化销售翘楚:EC/腾讯企点CRM依托腾讯生态,自动记录全沟通轨迹,适合依赖微信/QQ获客的服务型企业。
  • AI获客先锋:励销云的AI搜客+外呼机器人组合,大幅降低B2B中小企业获客成本。
  • 定制化王者:SuiteCRM开源架构允许100%自定义,适合有技术团队的特殊业务场景。

(二)订单管理:履约效率的核心保障

订单管理是连接销售与后端供应链的枢纽,其能力直接影响企业履约效率与客户满意度。

1. 核心能力对比表

品牌订单模型支持全流程管控能力跨模块协同能力
超兔一体云6大类30种原生订单模型,覆盖B2C/B2B/O2O;支持标准/批发/定制/套餐/租赁/维修等场景订单工作流/待办/锁库/采购计划自动触发/供应商直发;全渠道订单统一管理与MES无缝对接自动排程;与采购模块联动自动补货;与财务模块实现应收/开票/回款三角联动
SugarCRM支持标准/批发/服务型订单;需插件扩展非标/租赁等模型订单状态跟踪;订单锁库;部分流程自动化需插件集成ERP实现库存/财务联动
HubSpot CRM基于Sales Hub实现智能报价/电子签名/订单归档;需集成ERP扩展订单模型Quote-to-Cash全流程自动化;订单状态实时同步依赖生态集成ERP实现库存/履约联动
SuiteCRM基础订单模块支持多币种/多语言;需二次开发实现订单拆分/分批发货等复杂场景订单流程跟踪;自定义审批流需定制开发实现与后端系统联动
EC(腾讯EC)未原生支持复杂订单模型;需结合销售沟通记录跟踪订单进度订单状态与客户沟通数据关联;手动更新订单进度无原生跨模块协同能力
励销云支持标准订单创建/审批/交付跟踪;需行业模板配置扩展批发/定制等模型订单状态实时同步;与客户数据联动需集成ERP实现库存/采购联动
腾讯企点CRM依托社交触点实现订单前端协同跟踪;原生订单模型简单订单状态与客户互动数据关联;客户可通过社交渠道查询进度无原生后端协同能力
神州云动CloudCC销售订单模块支持流程跟踪;需扩展实现复杂订单模型订单审批流;状态实时更新可集成ERP实现后端联动
浪潮CRM依托ERP集成支持全类型订单模型;原生订单能力需依赖ERP集团级订单全流程管控;跨区域订单协同与浪潮ERP深度集成,实现全业务链联动

2. 典型流程可视化:超兔一体云订单全流程协同

flowchart LR
    A[多类型订单创建<br>30种模型适配场景] --> B[订单全流程管控<br>待办/锁库/采购计划触发]
    B --> C[跨模块联动<br>生产排程/采购直发/财务应收]
    C --> D[订单履约完成<br>发货/开票/回款闭环]

3. 核心优势总结

  • 全能订单管理标杆:超兔OMS支持30种订单模型,原生实现从创建到回款的全流程闭环,跨模块协同能力无需额外集成,是唯一真正的“全能型订单管理系统”。
  • 轻量级履约工具:HubSpot的Quote-to-Cash适合海外企业,轻量化易上手,但需依赖ERP完成后端履约。
  • 集团级集成能力:浪潮CRM依托ERP底座,实现集团级订单协同,适合大型集团企业。
    • *

(三)产品与库存管理:供应链效率的核心支撑

产品与库存管理直接影响企业库存周转率与资金占用率,是制造、批发、零售等行业的核心需求。

1. 核心能力对比表

品牌产品管理能力库存管控能力智能补货能力
超兔一体云多级分类/多价格策略/产品BOM/套餐/非标定制;支持SKU转换/速建;销量分析(现金牛/毛利产品)500个仓库管理;序列号/批次溯源;库存上下限预警;手机扫码出入库;库存流水/台账全记录自动计算“订单需交付量-现有库存-在途量”;智能匹配供应商;支持以销定采/采购直发/购销分离
SugarCRM基础产品目录管理;需插件扩展BOM/套餐/非标等模型需插件实现库存出入库/预警;无原生溯源能力需集成ERP实现智能补货
HubSpot CRM基础产品库;需第三方插件(如QuickBooks)实现库存同步无原生库存管控能力;依赖集成无原生补货能力;依赖ERP
SuiteCRM基础产品管理;需社区插件/定制开发扩展BOM/库存功能需定制实现库存出入库/预警/溯源需定制开发补货逻辑
EC(腾讯EC)无原生产品与库存管理能力
励销云商品管理模块关联订单;需行业模板配置扩展产品分类/BOM库存动态监控;需集成ERP实现出入库/溯源需集成ERP实现智能补货
腾讯企点CRM无原生产品与库存管理能力
神州云动CloudCC产品库功能支持分类/价格手册/批量导入;需扩展BOM等模型无原生库存管控能力;需集成ERP
浪潮CRM依托ERP集成支持产品BOM/分类/价格管理;原生能力需依赖ERP依托ERP实现库存管控/溯源/预警;集团级库存协同依托ERP实现智能补货

2. 典型流程可视化:超兔一体云智能库存补货时序图

sequenceDiagram
    participant 销售订单系统
    participant 库存系统
    participant 采购系统
    participant 供应商
    销售订单系统->>库存系统: 提交订单需交付量
    库存系统->>库存系统: 计算缺口=需交付量-现有库存-在途量
    库存系统->>采购系统: 触发采购需求
    采购系统->>采购系统: 智能匹配最优供应商(价格/交期)
    采购系统->>供应商: 发送采购单
    供应商->>库存系统: 发货(采购直发/入库)
    库存系统->>销售订单系统: 库存更新,通知履约

3. 核心优势总结

  • 精细化库存管控标杆:超兔PSI系统实现产品全生命周期管理与库存精细化管控,智能补货逻辑原生集成,无需依赖第三方系统,适合制造、批发、零售等库存敏感型行业。
  • 集成型解决方案:SugarCRM/HubSpot/SuiteCRM需通过插件或定制实现库存管理,适合已有ERP系统的企业做补充。
  • 集团级库存协同:浪潮CRM依托ERP底座,实现跨区域集团库存协同,适合大型制造/流通集团。

(四)采购管理:成本控制的核心环节

采购管理直接影响企业采购成本与供应链稳定性,是B2B企业的核心需求之一。

1. 核心能力对比表

品牌供应商管理采购模型适配全流程管控能力
超兔一体云供应商独立权限管理;询价/比价/评级全记录;雷达图展示供应商评级多订单缺口采购、总缺口采购、以订单采购、供应商直发4种原生模型;智能计算采购量询价-比价-下单-收货-付款-开票全流程;三流合一对账;采购成本自动核算
SugarCRM基础供应商信息管理;需集成ERP实现深度管理无原生采购模型;需集成ERP实现无原生全流程管控;需集成ERP
HubSpot CRM无原生供应商管理;依赖生态集成无原生采购模型;依赖生态集成无原生全流程管控;依赖生态集成
SuiteCRM需定制开发供应商管理模块需定制开发采购模型需定制开发全流程管控
EC(腾讯EC)无原生采购管理能力
励销云供应商数据对接;基础供应商信息管理支持采购需求提报;适配中小B2B采购场景采购订单跟踪;与订单/库存联动(需集成ERP)
腾讯企点CRM无原生采购管理能力
神州云动CloudCC无原生采购管理能力
浪潮CRM依托ERP集成实现供应商全生命周期管理;集团级供应商协同依托ERP实现多类型采购模型依托ERP实现全流程管控;集团级采购协同

2. 典型流程可视化:超兔一体云采购全流程

flowchart LR
    A[采购需求触发<br>订单缺口/库存预警] --> B[询价比价<br>OpenCRM模块实现]
    B --> C[采购单创建<br>智能匹配供应商]
    C --> D[全流程跟踪<br>收货/质检/入库]
    D --> E[财务对账<br>三流合一(订单/入库/发票)]

3. 核心优势总结

  • 全流程采购管控标杆:超兔SRM系统实现从需求到对账的全流程闭环,4种采购模型适配不同业务场景,智能算法降低采购决策成本,适合中大型制造、批发企业。
  • 中小 B2B 轻量采购:励销云的采购管理模块适配中小B2B场景,可快速落地。
  • 集团级采购协同:浪潮CRM依托ERP底座,实现集团跨区域采购协同,适合大型集团企业。

(五)生产管理:制造型企业的核心刚需

生产管理是制造型企业的核心刚需,要求CRM与MES/ERP深度联动,实现销售-生产-供应链的闭环。

1. 核心能力对比表

品牌生产排程与派工进度管控与可视化物料管理与配送生产报工与质检跨模块协同能力
超兔一体云正排/倒排两种排程方式;支持最快时间/最小班组策略;自动生成生产任务表甘特视图展示订单/工序进度;车间大屏实时监控关键指标;超期自动标注依据BOM自动计算物料需求;建议领料数量避免超领;领料/退料同步CRM库存小组计件报工;自动计算工时/良品率;逐工序质检记录;不良品趋势分析与CRM订单自动同步;MES领料/退料联动CRM库存;报工/质检数据回传CRM;自动触发采购补料
SugarCRM无原生能力;需通过API与ERP(如SAP)联动实现间接排程无原生可视化;依赖ERP系统展示无原生能力;依赖ERP物料管理无原生能力;依赖ERP报工质检需集成ERP实现生产与销售的间接协同
HubSpot CRM无原生能力;需通过生态(如Shopify)间接对接轻量级生产流程无原生可视化;依赖第三方工具无原生能力;依赖集成ERP无原生能力;依赖第三方工具仅支持轻量级业务的间接联动,适合非生产型企业
SuiteCRM无原生能力;需通过API与MES/ERP集成;可定制生产任务模块无原生可视化;需定制开发或集成第三方工具无原生能力;需集成ERP物料系统无原生能力;需定制开发报工模块开源架构支持深度定制集成,适合有技术能力的生产企业
EC(腾讯EC)无原生生产管理能力
励销云需与ERP系统集成;通过CRM数据辅助排产决策依赖ERP系统实现进度可视化需集成ERP实现物料管理需集成ERP实现报工质检实现客户订单与生产计划联动,适配中小生产型企业
腾讯企点CRM无原生生产管理能力
神州云动CloudCC无原生生产管理能力可集成ERP实现生产与销售数据联动
浪潮CRM依托ERP集成实现集团级智能排程;支持多工厂协同排产集团级生产进度可视化大屏;跨工厂进度监控依托ERP实现集团级物料统一管理与配送依托ERP实现标准化报工与质检与浪潮ERP深度集成,实现销售-生产-供应链全集团闭环

2. 典型流程可视化:超兔一体云生产全流程协同

flowchart LR
    A[CRM销售订单同步] --> B[MES自动生成生产BOM与任务单]
    B --> C[智能排程/派工<br>正排/倒排策略]
    C --> D[物料精准配送<br>按BOM计算领料量]
    D --> E[生产报工/质检<br>实时数据回传CRM]
    E --> F[成品入库/履约发货<br>库存与订单同步更新]

3. 核心优势总结

  • 原生生产闭环标杆:超兔MES系统与CRM深度联动,实现从销售订单到生产交付的全流程原生闭环,智能排程、进度可视化、物料管控等能力无需额外集成,适合中制造型企业。
  • 集成型生产协同:SugarCRM/SuiteCRM需通过API与MES/ERP集成实现生产管理,适合已有成熟ERP系统的制造企业。
  • 集团级生产管控:浪潮CRM依托ERP底座,实现多工厂协同排产与集团级生产管控,适合大型制造集团。
  • 轻量级生产联动:励销云可实现订单与生产计划的基础联动,适合中小生产型B2B企业。

这几天观察路由器的流量日志,我发现一个名为 Aliexpress 的应用跑了大量的上传,而且都在 0 点之后才开始
这习性跟耗子没两样了,我愿称之为,耗子 app

在 PCDN 这个风声鹤唳的时代,这简直要了亲命
而且我真的玩 PT

MAC 地址看是家属的手机,问了下,果然有一个叫阿里巴巴的 app

防火墙写了规则,这个 app 就不通了

家属说,她也忘了这个 app 是干嘛的,什么时候装的,自然也没啥用

果断删之

image

过去一年,国漫市场持续“破圈”。猫眼专业版数据统计,2025年国产动画电影(含合拍片)总票房达192.8亿元,在全部动画电影票房中占比75.7%,是2011年以来最高的一年。众多植根于东方美学的国漫作品,正以其独特的文化叙事,构筑起一代人的共同记忆。近期,合合信息旗下扫描全能王正式发起“国漫记忆守护计划”,鼓励用户从传统文化中挖掘国漫元素,为国漫创作提供灵感源泉。

传统文化是国漫创作的宝藏。从不拘天命的哪吒,到照见普通人悲喜的浪浪山小妖怪,这些角色成功唤醒了观众骨子里的文化亲近感。国漫这座“宝藏”仍有诸多领域静待挖掘,如今,越来越多的创作者正在从古籍插画、民俗文化中捕捉灵感,并通过扫描全能王记录保存,让碎片化的灵感沉淀为可随时取用的创作素材。

AI扫描技术为国漫存档“创意底片”

许多惊艳银幕的国漫作品,往往从一张手绘稿开始。艺术博主“参十川”(化名)在社交媒体平台分享了自己绘制的哪吒连环画系列。博主表示,当初为了理解这个经典角色,她专门前往图书馆查阅原著小说,最终将心中的“哪吒”落于纸上。借助AI扫描技术,这份9年前的作品能够以高清数字形态留存,成为国漫创作路上的珍贵印记。

图片

                   图说:扫描全能王优化处理哪吒连环画系列作品

在国漫的视觉语言中,非遗文化同样是灵感“富矿”。英歌舞是潮汕地区的国家级非物质文化遗产,舞者脸谱以浓墨重彩区分忠奸善恶,为国漫创作提供了新的美学范式。设计师“羊言不会画画”(化名)受此启发,以细腻的线条勾勒出繁复的脸谱纹样。经过AI扫描技术处理后,这份诠释非遗文化的作品能够以最真实的模样被更多人欣赏。

图片

                  图说:扫描全能王优化处理英歌舞脸谱创意绘画作品


基于AI扫描“黑科技”,扫描全能王能够将易磨损的纸质手稿、线条复杂的非遗纹样转化为高清的“数字档案”,让根植于传统的优秀创意被留存、被更多人看见,记录下一个国漫“爆款”的成长之路。

AI“提取线稿”从生活中汲取创作素材

国漫的生命力,不仅来源于专业创作者,更来自大众参与。扫描全能王致力于让国漫成为人人都可“DIY”的素材。无论是泛黄的小人书,还是张贴的国风海报,用户只需随手一拍,扫描全能王可一键生成清晰的黑白线稿,方便用户临摹、填色。

图片

                           图说:扫描全能王精准提取线稿


年文化是国漫的重要表现内容,也是中小学生美学教育的组成部分。马年新春将至,艺术创作博主“小阳醒醒”(化名)将生肖马、中国结、葫芦等传统元素巧妙融合,创作出了一幅细节丰富的新春主题手抄报,作品分享到社交媒体平台后,不少家长和学生纷纷表示“寒假手抄报作业有救了”。

图片

                     图说:扫描全能王高清记录手抄报创作细节

手抄报创作是学生的日常任务,却成了不少家庭的共同困扰。找素材费时、构图设计困难、手绘功底不足等问题让这项亲子活动变得压力重重。依托扫描全能王 “智能高清滤镜”“提取线稿” 等功能,家长只需拍摄手抄报参考模板,即可一键提取清晰线稿,为孩子的手抄报作业提供丰富的美学素材。

作为传统文化的重要载体,国漫的“破圈”,本质上源于其对神话、诗词、非遗等文化基因的成功解码与现代表达。扫描全能王将持续为用户带来AI扫描“黑科技”功能体验,将散落在创作草图、民间藏品中的文化灵感数字化,为艺术创作提供源源不断的灵感源泉,让传统文化与现代科技在融合中焕发新的生命力。