2026年2月

1. 库的概览与核心价值

想象一下,在构建智能应用时,如果缺少一个能高效处理复杂数学计算的框架,就像试图用算盘来计算卫星轨道一样举步维艰。TensorFlow 正是为解决大规模机器学习与深度学习计算而生的问题而生的工具。

TensorFlow 是由 Google Brain 团队开发的开源机器学习平台,它通过灵活的数据流图机制,让开发者能够轻松构建、训练和部署各种机器学习模型。在 Python 生态中,TensorFlow 占据着不可替代的地位——它不仅支持从简单的线性回归到复杂的深度神经网络的各类模型,还能在 CPU、GPU、TPU 等多种硬件上高效运行,甚至可以部署到移动设备和浏览器端。

其核心价值体现在三个方面:首先,它提供了从研究到生产的完整工具链,包括数据处理、模型构建、训练优化到部署上线的全流程支持;其次,tf.keras 高级 API 让初学者能够快速上手,而底层 API 则为高级研究者提供了充分的定制空间;最后,强大的生态系统(如 TensorBoard 可视化、TensorFlow Lite 移动端部署、TensorFlow Serving 生产服务)使其成为企业级 AI 应用的首选平台。

2. 环境搭建与 "Hello, World"

安装说明

在开始使用 TensorFlow 之前,需要先配置 Python 环境。TensorFlow 支持 Python 3.7 及以上版本,推荐使用虚拟环境来隔离项目依赖。

使用 pip 安装(推荐)

# 升级 pip
pip install --upgrade pip

# 安装 CPU 版本(适合学习和调试)
pip install tensorflow

# 安装 GPU 版本(需要 NVIDIA 显卡和 CUDA 支持)
pip install tensorflow[and-cuda]

使用 conda 安装

# 创建虚拟环境
conda create -n tf_env python=3.9
conda activate tf_env

# 安装 TensorFlow
conda install tensorflow

常见安装问题

  • 如果安装速度慢,可以使用国内镜像源:

    pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
  • GPU 版本需要提前安装对应版本的 CUDA 和 cuDNN,请查阅官方文档的版本对应表

最简示例

下面是一个简单的 TensorFlow 程序,它演示了张量的创建和基本运算:

import tensorflow as tf

# 创建两个常量张量
a = tf.constant(2.0)
b = tf.constant(3.0)

# 执行加法运算
result = tf.add(a, b)

# 打印结果
print(f"a = {a}")
print(f"b = {b}")
print(f"a + b = {result}")

逐行解释

  • import tensorflow as tf: 导入 TensorFlow 库,并使用别名 tf,这是 TensorFlow 编程的惯例
  • a = tf.constant(2.0): 创建一个值为 2.0 的常量张量。张量是 TensorFlow 中最基本的数据结构,类似于 NumPy 数组,但可以在 GPU 上运行
  • b = tf.constant(3.0): 创建另一个常量张量,值为 3.0
  • result = tf.add(a, b): 执行张量加法运算。TensorFlow 提供了丰富的数学运算函数
  • print(f"a + b = {result}"): 使用 f-string 格式化输出结果。在 TensorFlow 2.x 的 Eager Execution 模式下,张量的值可以直接打印

预期输出

a = 2.0
b = 3.0
a + b = 5.0

3. 核心概念解析

TensorFlow 的核心概念围绕张量和计算展开,理解这些概念是掌握 TensorFlow 的基础。

张量

张量是 TensorFlow 中最基本的数据结构,可以将其理解为多维数组。标量(0 阶张量)、向量(1 阶张量)、矩阵(2 阶张量)以及更高维度的数组都是张量的特例。

# 创建不同类型的张量
scalar = tf.constant(42)           # 标量
vector = tf.constant([1, 2, 3])   # 向量
matrix = tf.constant([[1, 2], [3, 4]])  # 矩阵

print(scalar.shape)   # 输出: ()
print(vector.shape)   # 输出: (3,)
print(matrix.shape)   # 输出: (2, 2)

张量的两个重要属性是 shape(形状)和 dtype(数据类型)。形状描述了张量的维度,而数据类型则定义了张量中元素的类型,如 tf.float32tf.int32 等。

变量

变量是一种特殊的张量,用于存储模型的可训练参数(如神经网络的权重和偏置)。与普通张量不同,变量的值在训练过程中会被更新。

# 创建一个变量
weights = tf.Variable(tf.random.normal([2, 3]))

# 访问和修改变量的值
print(weights)
weights.assign(tf.ones([2, 3]))  # 修改变量的值

Eager Execution

TensorFlow 2.x 默认启用 Eager Execution(即时执行模式),这意味着操作会立即执行并返回结果,就像普通的 Python 代码一样。这与 TensorFlow 1.x 的静态图模式(先定义计算图,再通过 Session 执行)形成鲜明对比。

# 在 Eager Execution 模式下,操作立即执行
x = tf.constant([1, 2, 3])
y = tf.constant([4, 5, 6])
print(x + y)  # 立即输出结果

计算图与 tf.function

虽然 Eager Execution 便于调试,但对于大型模型,其性能不如静态图。tf.function 装饰器可以将 Python 函数编译成高效的计算图,实现性能优化。

@tf.function
def compute(x):
    return x * x + 2

# 首次调用时会构建计算图
result = compute(tf.constant(5.0))
print(result)  # 输出: 27.0

自动微分

自动微分是深度学习的核心机制,它自动计算函数的导数,用于反向传播算法。TensorFlow 通过 tf.GradientTape 实现自动微分。

# 创建一个变量
x = tf.Variable(3.0)

# 记录计算过程
with tf.GradientTape() as tape:
    y = x * x + 2

# 计算梯度
grad = tape.gradient(y, x)
print(grad)  # 输出: 6.0 (dy/dx = 2x = 2*3 = 6)

核心概念关系图

graph TD
    A[张量 Tensor] --> B[数据载体]
    A --> C[基本运算单元]
    D[变量 Variable] --> A
    D --> E[可训练参数]
    D --> F[训练过程更新]
    G[Eager Execution] --> H[即时执行模式]
    G --> I[便于调试]
    J[tf.function] --> K[计算图编译]
    J --> L[性能优化]
    M[自动微分] --> N[梯度计算]
    M --> O[反向传播]
    P[tf.GradientTape] --> M

4. 实战演练:解决一个典型问题

让我们通过构建一个手写数字识别模型来体验 TensorFlow 的完整工作流程。这个项目将使用经典的 MNIST 数据集,它包含 60000 张训练图像和 10000 张测试图像,每张图像是 28×28 像素的灰度手写数字(0-9)。

需求分析

我们的目标是构建一个神经网络模型,能够自动识别手写数字的类别(0-9)。这是一个典型的图像分类问题,需要完成以下步骤:

  1. 加载并预处理 MNIST 数据集
  2. 构建一个多层神经网络模型
  3. 训练模型并评估性能
  4. 使用模型进行预测

方案设计

我们将使用 tf.keras 高级 API 来构建模型,它提供了简洁的接口来定义网络结构。模型将采用以下架构:

  • 输入层:展平 28×28 的图像为 784 维向量
  • 隐藏层:包含 128 个神经元的全连接层,使用 ReLU 激活函数
  • Dropout 层:以 0.2 的概率丢弃神经元,防止过拟合
  • 输出层:10 个神经元的全连接层,使用 Softmax 激活函数输出每个类别的概率

代码实现

import tensorflow as tf
import numpy as np

# 1. 加载 MNIST 数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 预处理数据:将像素值归一化到 [0, 1] 范围
x_train, x_test = x_train / 255.0, x_test / 255.0

# 2. 构建模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),  # 展平图像
    tf.keras.layers.Dense(128, activation='relu'),   # 隐藏层
    tf.keras.layers.Dropout(0.2),                    # Dropout 层
    tf.keras.layers.Dense(10, activation='softmax')  # 输出层
])

# 编译模型:指定优化器、损失函数和评估指标
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 3. 训练模型
print("开始训练模型...")
history = model.fit(x_train, y_train, epochs=5, 
                    validation_split=0.1)

# 4. 评估模型性能
print("\n评估模型性能:")
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"测试集准确率: {test_acc:.4f}")

# 5. 进行预测
print("\n进行预测示例:")
predictions = model.predict(x_test[:5])
for i in range(5):
    predicted_label = np.argmax(predictions[i])
    true_label = y_test[i]
    print(f"图像 {i+1}: 预测={predicted_label}, 真实={true_label}")

# 保存模型
model.save('mnist_model.keras')
print("\n模型已保存为 mnist_model.keras")

运行说明

将上述代码保存为 mnist_classifier.py 并运行:

python mnist_classifier.py

程序会输出训练过程中的损失值和准确率,最终在测试集上的准确率通常能达到 97% 以上。

预期输出示例

开始训练模型...
Epoch 1/5
1688/1688 [==============================] - 3s 2ms/step - loss: 0.2958 - accuracy: 0.9141 - val_loss: 0.1483 - val_accuracy: 0.9578
Epoch 2/5
1688/1688 [==============================] - 3s 2ms/step - loss: 0.1426 - accuracy: 0.9578 - val_loss: 0.1084 - val_accuracy: 0.9667
...
Epoch 5/5
1688/1688 [==============================] - 3s 2ms/step - loss: 0.0990 - accuracy: 0.9707 - val_loss: 0.0928 - val_accuracy: 0.9725

评估模型性能:
313/313 - 0s - loss: 0.0911 - accuracy: 0.9723
测试集准确率: 0.9723

进行预测示例:
图像 1: 预测=7, 真实=7
图像 2: 预测=2, 真实=2
图像 3: 预测=1, 真实=1
图像 4: 预测=0, 真实=0
图像 5: 预测=4, 真实=4

模型已保存为 mnist_model.keras

5. 最佳实践与常见陷阱

常见错误

错误 1: 混淆张量和变量的使用

# ❌ 错误做法:试图修改常量张量
x = tf.constant([1, 2, 3])
x[0] = 10  # 会抛出错误

# ✅ 正确做法:使用变量存储需要更新的数据
x = tf.Variable([1, 2, 3])
x[0].assign(10)  # 正确

错误 2: 忽略数据类型转换

# ❌ 错误做法:数据类型不匹配导致计算错误
a = tf.constant([1, 2], dtype=tf.int32)
b = tf.constant([1.5, 2.5], dtype=tf.float32)
c = a + b  # 可能产生意外结果

# ✅ 正确做法:显式转换数据类型
a = tf.cast(a, tf.float32)
c = a + b  # 正确

错误 3: 滥用 Eager Execution 导致性能下降

# ❌ 错误做法:在训练循环中直接调用函数(性能差)
def train_step(x, y):
    # ... 训练逻辑
    pass

for epoch in range(100):
    train_step(x_batch, y_batch)

# ✅ 正确做法:使用 tf.function 优化性能
@tf.function
def train_step(x, y):
    # ... 训练逻辑
    pass

for epoch in range(100):
    train_step(x_batch, y_batch)

最佳实践

1. 使用 tf.data.Dataset 构建高效数据管道

# 使用 tf.data.Dataset 提高数据加载效率
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=10000)
train_dataset = train_dataset.batch(32)
train_dataset = train_dataset.prefetch(tf.data.AUTOTUNE)

# 在训练中使用 dataset
model.fit(train_dataset, epochs=5)

2. 使用 Callback 监控训练过程

# 使用 ModelCheckpoint 保存最佳模型
checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(
    'best_model.keras',
    monitor='val_accuracy',
    save_best_only=True,
    mode='max'
)

# 使用 EarlyStopping 防止过拟合
early_stop_callback = tf.keras.callbacks.EarlyStopping(
    monitor='val_loss',
    patience=3,
    restore_best_weights=True
)

model.fit(x_train, y_train, 
          epochs=100,
          validation_split=0.2,
          callbacks=[checkpoint_callback, early_stop_callback])

3. 合理使用 GPU 加速

# 检查 GPU 是否可用
gpus = tf.config.list_physical_devices('GPU')
if gpus:
    try:
        # 限制 GPU 内存使用,避免占用全部显存
        for gpu in gpus:
            tf.config.experimental.set_memory_growth(gpu, True)
        print(f"发现 {len(gpus)} 个 GPU 设备")
    except RuntimeError as e:
        print(e)
else:
    print("未发现 GPU 设备,将使用 CPU")

4. 使用 TensorBoard 可视化训练过程

# 创建 TensorBoard 回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='./logs',
    histogram_freq=1
)

# 训练时启用 TensorBoard
model.fit(x_train, y_train,
          epochs=10,
          validation_split=0.2,
          callbacks=[tensorboard_callback])

# 在终端启动 TensorBoard
# tensorboard --logdir=./logs

注意事项

  • 版本兼容性:TensorFlow 不同版本的 API 可能有差异,务必查阅对应版本的官方文档
  • GPU 配置:使用 GPU 版本时,确保 CUDA 和 cuDNN 版本与 TensorFlow 版本匹配
  • 内存管理:处理大型数据集时,使用生成器或 tf.data.Dataset 避免内存溢出
  • 模型保存:推荐使用 .keras 格式保存模型,它包含完整的模型架构和权重

6. 进阶指引

高级功能

TensorFlow 提供了许多高级功能,满足不同场景的需求:

  • 自定义层和模型:通过继承 tf.keras.layers.Layertf.keras.Model 创建自定义组件
  • 分布式训练:使用 tf.distribute.Strategy 在多 GPU 或多机器上加速训练
  • 混合精度训练:通过 tf.keras.mixed_precision 在保持精度的同时提升性能和节省显存
  • TensorFlow Lite:将模型部署到移动设备和嵌入式系统
  • TensorFlow.js:在浏览器中运行模型,实现端到端的 Web AI 应用

生态扩展

TensorFlow 拥有丰富的生态系统:

  • TensorFlow Hub:预训练模型库,可以直接使用或微调
  • TensorFlow Datasets:大量标准数据集,方便快速实验
  • TensorFlow Probability:概率建模和贝叶斯推理工具
  • TensorFlow Extended (TFX):生产级机器学习流水线工具

学习路径

掌握了基础知识后,你可以按照以下路径继续深造:

  1. 深入学习:阅读《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》
  2. 官方文档:深入研读 TensorFlow 官方文档,了解底层 API 和高级特性
  3. 项目实践:参与 Kaggle 竞赛或在 GitHub 上开源项目
  4. 关注社区:关注 TensorFlow Blog 和 GitHub 仓库,了解最新动态
  5. 探索研究:阅读顶级会议论文,使用 TensorFlow 实现前沿算法

TensorFlow 是一个功能强大且不断演进的平台,保持学习和实践是掌握它的关键。祝你在这个充满可能性的 AI 领域探索愉快!

在公有云时代,多可用区(Multi-AZ)部署已成为企业保障业务高可用的标配。但近年来,AWS、Azure、阿里云等平台均出现过跨可用区故障(如网络分区、电力中断、存储集群崩溃),导致业务中断数小时甚至更久。如何从架构层面彻底降低这种风险?本文结合10年云架构经验,拆解6大核心策略,助你构建“反脆弱”的云原生架构。

一、为什么多可用区≠绝对安全?先破除3个认知误区

误区1:“跨可用区部署=自动容灾”

现实:多数公有云的可用区物理距离仅几十公里,可能共享同一城市电网、光纤运营商或自然灾害风险(如洪水、地震)。
案例:2021年某云厂商华东区因光缆故障导致3个可用区同时断连,依赖跨AZ同步的业务全军覆没。

误区2:“同步复制=数据零丢失”

现实:强同步复制(如RDS Multi-AZ)在极端场景下可能因网络延迟或主备节点同时故障导致数据不一致。
数据:某金融客户测试显示,跨AZ同步复制的延迟在高峰期可达50ms以上,对高频交易系统不可接受。

误区3:“负载均衡能自动切换流量”

现实:传统负载均衡(如CLB)依赖健康检查,若后端服务因数据库连接池耗尽或缓存雪崩“假死”,可能误判为健康,导致流量持续涌入故障节点。

二、架构层降险6大策略:从被动容灾到主动防御

策略1:地理分布式部署——跨Region替代跨AZ

核心逻辑:将关键服务部署在不同Region(如华东+华北),而非同一Region内的多个AZ。Region间物理隔离(距离通常>500公里),可规避城市级灾难。
实施要点:
使用全局负载均衡(如GSLB)或DNS轮询实现Region级流量切换;
数据库采用异步复制+冲突解决机制(如CockroachDB、TiDB的跨Region部署);
缓存层通过多Region同步(如Redis Cluster的跨Region节点)降低冷启动延迟。
案例:某电商平台将订单系统拆分为“写入Region(华东)”和“只读Region(华北+华南)”,在2022年上海光纤故障时,华北Region自动承接全部读请求,业务仅中断3分钟。

策略2:单元化架构——拆解“鸡蛋放在一个篮子”的风险

核心逻辑:将业务按用户ID、地域等维度拆分为多个独立单元(Cell),每个单元包含完整的前端、应用、数据库和缓存,且单元间无依赖。
实施要点:
单元内采用本地强一致(如本地事务),跨单元采用最终一致(如消息队列+事件溯源);
通过路由层(如API Gateway)将用户请求定向到对应单元,避免跨单元调用;
单元故障时,仅影响部分用户,其他单元不受影响。
案例:某社交App将用户按省份划分为100个单元,2023年某单元因数据库主从切换故障时,仅影响该省用户,整体SLA保持99.99%。

策略3:混沌工程实践——提前暴露跨AZ隐藏故障

核心逻辑:通过主动注入故障(如网络延迟、节点宕机、数据分区),验证系统在极端场景下的容错能力。
实施要点:
定期执行跨AZ故障演练(如关闭一个AZ的全部EC2实例);
监控关键指标(如请求成功率、数据库连接数、缓存命中率)的波动范围;
使用工具如Chaos Mesh、Gremlin自动化故障注入。
数据:某金融团队通过混沌工程发现,其支付系统在跨AZ同步复制时,若主库写入QPS>10万/秒,备库会因复制延迟导致短暂不可用。

策略4:多活数据架构——告别“主备”依赖

核心逻辑:采用多主写入或无主架构,消除单点写入瓶颈,同时通过分布式协议保证数据一致性。
实施要点:
数据库选型:CockroachDB、YugabyteDB(支持跨Region多主)、Apache Cassandra(无主架构);
缓存层:Redis Cluster的跨AZ节点部署,配合CRDT(无冲突复制数据类型)解决并发写入冲突;
消息队列:Kafka的跨AZ镜像集群,确保消息不丢失。
案例:某物流系统使用CockroachDB实现跨3个Region的多主写入,在2023年某Region网络中断时,其他Region自动承接全部写入请求,数据零丢失。

策略5:依赖解耦——避免“链式反应”故障

核心逻辑:通过异步化、服务降级和熔断机制,防止单个服务故障引发全局雪崩。
实施要点:
关键路径(如支付、订单)采用同步调用+超时重试,非关键路径(如日志、监控)采用异步消息队列;
使用Hystrix、Sentinel等熔断器,当某个AZ的服务响应时间超过阈值时,自动切换到其他AZ;
数据库连接池配置跨AZ备用连接,避免主AZ故障时连接耗尽。
案例:某在线教育平台在2022年双11期间,因某AZ的CDN节点故障,通过熔断机制将流量切换到其他AZ,课程播放中断率从15%降至0.3%。

策略6:自动化运维——从“人工救火”到“系统自愈”

核心逻辑:通过自动化工具实时监测、诊断和修复跨AZ故障,减少人工干预延迟。
实施要点:
使用Prometheus+Grafana监控跨AZ的网络延迟、服务健康状态;
编写自动化脚本,在检测到AZ级故障时,自动执行DNS切换、负载均衡权重调整等操作;
结合Terraform、Ansible实现基础设施的快速重建(如故障AZ的EC2实例自动替换)。
数据:某游戏公司通过自动化运维,将跨AZ故障的恢复时间从30分钟缩短至90秒。

三、总结:高可用不是“技术堆砌”,而是“风险设计”

公有云的多可用区部署本质是风险分散,但真正的容灾需要从架构层重新思考:
隔离性:通过Region、单元化实现物理和逻辑隔离;
冗余性:多活数据、多链路网络避免单点故障;
可观测性:混沌工程和自动化运维提前暴露隐患;
弹性:依赖解耦和熔断机制防止故障扩散。

最后提醒:没有100%可靠的架构,但通过“设计-验证-迭代”的闭环,可以让系统在故障发生时“优雅降级”,而非“彻底崩溃”。你的业务能承受多大的风险?答案藏在架构的每一行代码和每一次演练中。

互动话题:你遇到过哪些跨AZ故障的“坑”?欢迎在评论区分享你的避坑经验!

本文首发于 Aloudata 官方技术博客:《实测释放 1/3+ 服务器资源:Aloudata CAN 指标平台成本优化逻辑详解》转载请注明出处。

摘要:传统“数仓+BI”模式因重复构建物理宽表导致严重的计算与存储资源浪费。本文深入解析了 NoETL 指标平台 Aloudata CAN 如何通过 统一语义层 和 智能物化加速 的技术架构,从根源上消除冗余加工,实现“做轻数仓”。结合平安证券等标杆客户的实测数据,展示了该方案能有效 释放超 1/3 服务器资源、降低 基础设施成本 50% 的量化成效。

在追求数据驱动的过程中,许多企业构建的数据栈正悄然成为“资源吞噬巨兽”。其根源在于传统“数仓+BI”模式固有的开发范式:为每一个报表或分析需求,独立构建一条从 DWD 明细数据到 ADS/DWS 层物理宽表或汇总表的 ETL 加工链。

这种“烟囱式”开发模式导致了三大资源浪费陷阱:

  1. 计算资源的指数级浪费:同一份明细数据,为了满足不同维度的分析(如按地区、按产品、按渠道),会被反复加工成多份物理宽表。每一次 ETL 任务都在消耗 CPU 和内存,而这些计算中有大量是重复的。
  2. 存储资源的冗余堆积:每个宽表都完整存储了一份数据副本。随着分析需求的增长,ADS 层迅速膨胀,存储成本线性甚至指数级上升。
  3. 运维与治理成本的隐性消耗:大量物理表带来了繁重的运维压力(任务监控、故障排查、血缘管理)和口径对齐的沟通成本,消耗大量技术人力和算力资源。

更严峻的是,这种静态的资源分配模式,使得集群资源利用率长期处于低位。正如《云计算蓝皮书(2025年)》中指出的,“传统静态资源分配导致推理集群平均利用率不足40%” —— 这一现象在数据平台的 ETL 加工集群中同样普遍存在。大量计算资源在非任务时段闲置,而在业务高峰查询时,预建的宽表又可能因数据未更新或维度不匹配而无法响应,形成“闲时闲置、忙时不足”的怪圈。

传统成本优化“三板斧”的局限与天花板

面对高昂的成本,行业普遍采用一些技术手段进行优化,例如微软 Azure 架构最佳实践中提到的动态伸缩、数据分区、索引优化等。然而,这些手段本质上是在现有臃肿架构上进行的“局部修补”,存在明显的效果天花板:

优化手段核心逻辑局限性
动态伸缩根据负载自动调整计算资源实例数。优化资源供给节奏,但未减少总任务量。它解决了资源闲置问题,但无法消除为不同报表重复运行 ETL 这一根本性的计算浪费。
数据分区与索引将大表切分为小块,并建立快速检索路径。提升单表查询效率,但无法合并同类计算。它让每张宽表查得更快,但无法减少宽表的数量,存储冗余问题依旧。
ETL 任务批处理与优化合并小任务、优化执行计划。在既定加工逻辑下提升效率,但无法改变“一个需求一张表”的烟囱模式。优化的是“怎么做”,而不是“要不要做”。

这些通用解法如同为一座不断加盖楼层的“数据烟囱”进行外墙加固和电梯提速,虽然有所改善,但无法阻止其日益臃肿、成本高昂的本质。它们未能触及 “重复加工” 这一成本根源,因此优化效果存在明显上限。企业需要一种从架构层面重构数据处理逻辑的新范式。

新模式重构:Aloudata CAN 的“做轻数仓”成本优化逻辑

作为 Gartner 中国数据编织代表厂商,Aloudata CAN 提出了截然不同的成本优化路径:不做“更好的”ETL,而是通过 NoETL 语义编织,从根本上消除冗余的 ETL 和物理宽表建设。其核心逻辑是通过“统一语义层”与“智能物化加速引擎”的协同,实现“逻辑定义”对“物理执行”的彻底解耦。

1、逻辑替代物理:构建虚拟业务事实网络

Aloudata CAN 无需在 DWD 层之上预先构建物理宽表。取而代之的是,数据工程师在平台中通过 声明式策略,定义业务实体(事实表与维度表)之间的逻辑关联关系(Join)。系统据此在逻辑层面构建一个 “虚拟业务事实网络”(或称虚拟明细大宽表)。所有业务指标都基于这个统一的逻辑模型进行定义,实现 “一处逻辑定义,处处使用”。

价值:这直接消除了为不同分析需求重复开发物理宽表的根源。一份逻辑定义,可以支撑无数个分析场景。

2、智能物化加速:按需生成与智能复用

虽然逻辑层提供了统一的语义,但为了保障亿级数据下的查询性能(P95<3s),物理加速是必要的。Aloudata CAN 的智能物化加速引擎采用 声明式物化 策略:

  • 用户声明:分析师或工程师根据业务高频查询模式,声明需要对哪些“指标+维度组合”进行物化加速,并设定更新时效要求。
  • 系统自动化:引擎根据声明,自动编排最优的物化任务,生成并维护 明细加速表、汇总加速表 等。系统具备智能判重能力,确保同粒度的物化结果只生成一份,并被所有同类查询复用。
  • 智能路由:用户通过 BI 工具或 API 发起查询时,语义引擎会自动进行 SQL 改写,并透明路由至最优的物化结果上执行,实现“空间换时间”。

价值:物化是“按需”且“智能复用”的。一份通用的汇总加速表,可能替代传统模式下数十张定制化的汇总宽表,在保证性能的同时,将存储和计算增量降至最低。

3、架构定位:做轻数仓,释放资源

Aloudata CAN 的架构定位非常清晰:向下直接对接现有数据湖仓的 DWD 明细层,向上通过标准 API/JDBC 提供统一指标服务。它成为企业指标资产的“计算中心”,而不再需要建设繁重的 ADS/DWS 物理层。

价值:这正是“释放 1/3+ 服务器资源”的由来——被大量重复 ETL 任务和冗余宽表占用的计算与存储资源得以释放,集群平均利用率得以实质性提升。

落地案例:从逻辑到实测的成本优化数据闭环

“做轻数仓”的逻辑是否经得起实践检验?以下行业标杆客户的量化成效,构成了从技术逻辑到商业价值的完整闭环:

1、证券行业 - 平安证券:

  • 基础设施成本节约 50%。通过采用 Aloudata CAN,大幅减少了 ADS 层冗余宽表的开发与维护,直接降低了服务器资源采购和云资源消耗。
  • 开发工作量减少 50%。指标实现“定义即开发”,无需编写和维护复杂 ETL 管道,技术团队得以聚焦更高价值工作。
  • 效率提升 10 倍。业务取数周期从平均 2 周缩短至 1 天。

2、银行业 - 某头部股份制银行:

  • 数据交付效率 10 倍提升。在总分行指标统一场景中,需求响应时间从 2 周缩短为 1 天。
  • 查询性能 <3s 占比 95%。在对接多种 BI 工具的场景下,依靠智能物化加速,保障了海量数据下的稳定查询体验。
  • 沉淀 1 万+ 指标。证明了统一语义层在超大规模指标管理上的可行性与优越性。

3、服饰行业 - 某知名服饰品牌:

  • 指标开发维护成本降低 70%。1 个月内完成 7 大主题 300+ 指标上线,并实现了 361个指标 × 120个维度 的灵活组合与复用。

这些案例的核心共性是:成本优化不是通过“节流”式的资源压缩实现的,而是通过“架构革新”消除了浪费的根源。效率提升与成本下降成为同一枚硬币的两面。

实施建议:启动数据架构成本优化的五个关键动作

企业如何启动这场以“做轻数仓”为目标的架构优化?建议遵循以下五个关键动作:

1、成本审计与现状盘点:全面盘点现有 ADS/DWS 层的物理宽表、汇总表数量,统计其存储消耗、ETL 任务的计算消耗与执行频率。识别出那些维护成本高、使用频率低或逻辑重复的“包袱表”。

2、选择“灯塔”场景切入:避免全线推翻。选取一个业务价值高、且宽表重复建设问题严重的分析场景(如营销分析、渠道报表)作为试点。快速验证新范式在提效和降本上的价值。

3、采用“三步走”演进法则:

  • 存量挂载:将现有稳定、性能尚可的核心宽表接入平台,统一服务出口,实现零改造下的口径统一。
  • 增量原生:所有新的分析需求,直接在 Aloudata CAN 上基于 DWD 明细层进行指标定义和开发,彻底遏制宽表新增。
  • 存量替旧:逐步将盘点出的“包袱型”旧宽表下线,将其逻辑迁移至语义层,并利用智能物化保障性能。

4、建立效能度量体系:在试点和推广过程中,持续监控关键指标,如:指标交付周期、查询性能 P95/P99、ADS 层表数量增长率、整体计算/存储资源利用率等,用数据驱动优化决策。

5、培养“语义模型驱动”的数据文化:推动数据团队从“建表思维”转向“定义指标思维”。将工作重心从编写 ETL 代码,转移到设计和维护高质量、可复用的语义模型上。

延伸阅读:成本优化如何赋能 AI-Ready 数据底座

“做轻数仓”带来的价值远不止于成本。一个统一、敏捷、语义化的指标服务层,正是构建高质量 AI-Ready 数据底座的核心前提。

  • 根治 AI 问数幻觉:传统的 NL2SQL 让大模型直接面对杂乱无章的物理表,极易产生“幻觉”。Aloudata CAN 的 NL2MQL2SQL 架构,将自然语言查询先转换为对标准指标(MQL)的调用,再由语义引擎生成准确 SQL,从根本上确保了查询结果的准确性。
  • 为 RAG 提供高质量语料:平台中结构化的指标定义、业务口径、维度信息,构成了高度浓缩的业务知识图谱,是检索增强生成(RAG)的绝佳语料,让 AI 能以极低的 Token 消耗理解复杂的业务上下文。
  • 标准化 AI 交互接口:通过将指标查询、多维归因等能力封装为标准 API 和 Function Calling,AI 应用可以像调用服务一样获取数据,无需关心底层数据结构和 SQL 语法,极大降低了 AI 应用的数据集成复杂度。

因此,投资于 Aloudata CAN 所代表的现代化数据架构,不仅是在优化今天的 TCO,更是在为未来以 AI 为核心的数据应用铺设一条坚实、高效且安全的“高速公路”。

FAQ

Q1: Aloudata CAN 节省的 1/3+ 服务器资源,具体是从哪里省出来的?

节省主要来自“做轻数仓”,即大幅减少甚至不再新建 ADS/DWS 层的物理宽表和汇总表。传统模式下,为不同分析需求重复加工的数据占用了大量计算和存储资源。Aloudata CAN 通过统一语义层和智能物化,一份逻辑定义替代多份物理加工,从而释放了这些被冗余任务占用的服务器资源。

Q2: 智能物化加速会不会因为要存更多中间结果,反而增加存储成本?

不会。智能物化是“按需”且“智能复用”的。系统会根据查询模式自动生成最通用的物化表(如按通用维度聚合),一份物化表可被无数个同类查询复用。其存储增量远小于传统模式下为每个报表单独建设一份宽表的总存储量。实测中,存储效率提升是成本优化的重要组成部分。

Q3: 我们企业现有大量 BI 报表和宽表,迁移到 Aloudata CAN 的改造成本会不会很高?

可以采用渐进式策略降低改造风险与成本。首先,通过“存量挂载”将现有关键宽表接入平台,快速统一服务出口,零开发成本。然后,所有新的分析需求通过“增量原生”在 CAN 上直接定义,遏制宽表新增。最后,逐步将维护成本高的“包袱型”旧宽表下线(存量替旧)。许多客户在 1-2 个月内即可在试点场景看到显著成效。

您好,我是 Silvana,一名前端开发工程师。

平时做网页时,默认的单选按钮总觉得少了点设计感,今天分享一个超简单的小技巧 —— 不用一行 JS,纯 HTML+CSS 就能做出带对勾、叉号的创意单选按钮,视觉效果精致,新手也能轻松上手。

这个小案例特别适合放在问卷调查、用户反馈这类场景里,替换掉单调的默认样式,让页面细节更出彩。下面是完整源码,每一行都加了注释,跟着敲一遍!

完整源码(带详细注释)

1. HTML 部分(index.html)

<!DOCTYPE html>
<!-- 声明文档类型为HTML5 -->
<html lang="en">
  <head>
    <!-- 设置字符编码为UTF-8,避免中文乱码 -->
    <meta charset="UTF-8" />
    <!-- 适配移动端,设置视口宽度为设备宽度,初始缩放比1.0 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!-- 页面标题 -->
    <title>创意单选按钮</title>
    <!-- 引入外部CSS样式文件 -->
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <!-- 容器:用于居中展示内容 -->
    <div class="container">
      <!-- 提示文字 -->
      <p>Do you like it ?</p>
      <!-- Yes选项:结合单选框和自定义对勾样式 -->
      <label>
        <!-- 单选按钮,name统一为btn保证互斥选择 -->
        <input type="radio" name="btn">
        <!-- 对勾样式的容器 -->
        <span class="check"></span>
        Yes
      </label>
      <!-- No选项:结合单选框和自定义叉号样式 -->
      <label>
        <input type="radio" name="btn">
        <!-- 叉号样式的容器 -->
        <span class="cross"></span>
        No
      </label>
    </div>
  </body>
</html>

2. CSS 部分(style.css)

/* 全局样式重置:清除默认边距、内边距,设置盒模型为border-box(宽高包含边框) */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 页面主体样式:弹性布局,内容水平+垂直居中,最小高度占满视口,背景色偏深 */
body {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background: #1e2b3b;
}
/* 容器样式:相对定位,弹性布局且纵向排列 */
.container {
  position: relative;
  display: flex;
  flex-direction: column;
}
/* 提示文字样式:白色、字体大小2em,底部间距10px */
p {
  color: #fff;
  font-size: 2em;
  margin-bottom: 10px;
}
/* label标签样式:相对定位,上下间距5px,鼠标移上去变手型,弹性布局垂直居中,字体大小2em,文字白色 */
label {
  position: relative;
  margin: 5px 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  font-size: 2em;
  color: #fff;
}
/* 隐藏原生单选按钮 */
label input {
  appearance: none;
}
/* 对勾/叉号的基础容器:相对定位,行内块级,宽高30px,右边距15px,过渡动画0.5秒 */
label span{
  position: relative;
  display: inline-block;
  width: 30px;
  height: 30px;
  margin-right: 15px;
  transition: 0.5s;
}
/* 对勾/叉号的横线样式:绝对定位,底部左对齐,宽100%高3px,白色,底部阴影模拟另一条横线(初始状态),过渡动画0.5秒 */
label span::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: #fff;
  box-shadow: 0 -27px 0 #fff;
  transition: 0.5s;
}
/* 选中Yes时:对勾容器旋转+位移,形成对勾的视觉效果 */
label input:checked ~ span.check {
  transform: rotate(-45deg) translate(7px,-7px);
}
/* 选中Yes时:对勾横线变绿色,清除阴影 */
label input:checked ~ span.check::before {
  background: #0f0;
  box-shadow: 0 0 0 transparent;
}
/* 选中No时:叉号横线变红色,清除阴影,旋转+位移形成叉号的其中一条线 */
label input:checked ~ span.cross::before {
  background: #f00;
  box-shadow: 0 0 0 transparent;
  transform: rotate(-45deg) translate(10px,-9px);
}
/* 对勾/叉号的竖线样式:绝对定位,底部左对齐,宽3px高100%,白色,右侧阴影模拟另一条竖线(初始状态),过渡动画0.5秒 */
label span::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 3px;
  height: 100%;
  background: #fff;
  box-shadow: 27px 0 0 #fff;
  transition: 0.5s;
}
/* 选中Yes时:对勾竖线高度减半、变绿色,清除阴影,完成对勾样式 */
label input:checked ~ span.check::after {
  height: 50%;
  background: #0f0;
  box-shadow: 0 0 0 transparent;
}
/* 选中No时:叉号竖线变红色,清除阴影,旋转+位移形成叉号的另一条线 */
label input:checked ~ span.cross::after{
  background: #f00;
  box-shadow: 0 0 0 transparent;
  transform: rotate(-45deg) translate(10px,10px);
}

小提示:
把这两个文件放在同一个文件夹里,直接打开 HTML 文件就能看到效果啦。如果想调整颜色、大小,只需要改 CSS 里对应的数值就行,比如把 #0f0(绿色)换成自己喜欢的颜色。

写着写着就到了结尾,祝您今晚有个好梦(代码少报错一点)。

*

本文由mdnice多平台发布

一、导语

在人工智能技术快速演进的时代,大型语言模型和AI智能体已成为各类应用的核心组件,引发AI相关API流量的指数级增长。而大模型网关,正是这场变革中应运而生的智能交通枢纽。

随着DeepSeek、Qwen等开源模型及各类商用大模型的普及,企业AI应用场景日益丰富,从智能客服自动化到代码生成与软件开发,从金融法律分析到内容生成引擎,AI正深度融入企业核心业务流程。

这种深度融合使得企业不仅使用SaaS化的LLM服务,更在私有化环境中微调、部署LLM模型,形成混合云架构,随之带来了多LLM适配管理、成本失控、数据安全和可靠性保障等系列挑战。

二、大模型网关:AI流量的智能调度中心

大模型网关是为AI工作负载专门设计的网关解决方案。它作为连接业务与AI基础设施的统一端点,为应用程序和模型之间的AI流量提供全面的管控能力。

与传统API网关不同,大模型网关针对AI请求的特有模式进行了专门优化。传统API网关专注于通用数据流量,基于RESTful API和静态请求响应设计,而大模型网关则专门应对AI工作负载的特殊需求,比如,长时与流式响应、复杂输入输出、高资源消耗与批处理、上下文与状态管理、专属监控与计量、关注成本与业务效果,等等。

大模型网关的核心能力主要体现在几个维度:模型市场、模型体验、模型调度、模型成本和稳定性(可观测性、容量管理、模型流控、服务告警)。

其中稳定性是大模型网关的“压舱石”,确保服务高可用、可管理、可追溯。容量管理可根据业务流量预估预先配置好足够的模型TPM额度,避免突发流量导致服务不可用或影响别的业务使用。模型观测提供实时监控每个模型健康状态、响应延迟、成功率等关键指标。模型流控可做到Key和模型粒度的TPM、QPS流量控制,一旦业务请求突破限流阈值,将依据流控规则进行限流。服务告警能力目标是借助Flink实时计算能力提供用户分钟级别的模型服务异常实时告警能力。

三、自建缘由:得物AI部署的四大挑战

随着AI在得物的应用场景不断深入,其帮助公司提升效率和降低成本的潜力被广泛挖掘。然而,我们在这一过程中面临一系列严峻挑战。

避免资源浪费并提升效率

在实际场景中,得物需要同时使用很多个AI模型,包括开源模型、商用模型及自建模型,这些模型的API接口、数据格式和调用方式各异。

如果每个业务域单独建设接入能力,会导致技术栈碎片化和重复开发,形成一个个“烟囱”,造成公司资源浪费。另外,如果每个开发团队都需要直接与各种AI模型的API对接,开发者必须学习每个AI API和AI平台,实现供应商特定的代码,会显著降低开发效率。

保障内外部模型成本可控

据估算,得物12月份调用大模型的Token消耗量已达数千亿规模,是1月份用量的20.63倍,仅Token调用单月成本就是一笔相当大的金额。若业务各自直接对接公有云模型服务,可能导致模型使用和成本失控。因此,必须依托大模型流量统一入口建设一套完整的成本管控体系。

保障接入外部模型数据安全

将敏感信息传输到外部LLM提供商引发了关于数据隐私、法规合规性(如PIPL和GDPR)以及潜在数据泄露的担忧。为了保障数据安全,我们考虑自建。

保障模型服务运行稳定可靠

模型网关需解决以下核心稳定性问题:

  • 延迟与成功率波动:模型服务受底层算力限制,普遍存在低限流阈值,且响应延迟与调用成功率波动显著大于传统API。
  • 基于Key的容量管理:模型服务通常设置固定限流阈值,易导致不同业务场景间流量相互挤占,影响全局可用性。
  • 实时告警与可观测性:需在服务异常或触发限流时第一时间告警,同时完整记录请求日志(含Prompt及来源IP),便于问题追踪。
  • 基于Token的精准限流:应建立以Token数量(而非调用次数)为基准的配额管理机制,从根源防止资源滥用,保障业务平稳运行。

四、行业实践:大模型网关的多元解决方案

大模型网关作为大模型应用的关键中间层,近年来随着企业级AI应用部署的加速而快速发展,以实现AI能力的统一、高效、可控管理。

目前市场上有多种大模型网关解决方案,它们在商业模式和核心能力上都各有特色。这里笔者将各类网关产品进行了梳理与汇总,以便读者大致了解行业现状。

AI网关主要参与者及产品

五、实施策略:构建企业大模型网关的六步法

对比行业落地大模型网关的案例,针对得物实际业务情况,在内部落地大模型网关时,我们制定了六个方面的策略。

打造信息丰富的模型市场

随着大模型在得物内的广泛深入应用,从B/C端创新到后端效能提升,场景愈发丰富复杂。加之自研/自部署(如 Qwen、DeepSeek)与内外厂商模型层出不穷,模型供给呈现分散与混乱,业务选型门槛抬高,往往从调研、验证到上线需耗时1~2天,极大增加了业务接入AI的难度。

为此,网关对接入模型进行统一梳理,打造信息完备的“模型市场”。本质上是一个“AI 模型应用商店”,将分散混乱、高门槛的选型流程,重构为集中、透明、可量化评估的标准化路径。

大模型市场

通过统一模型市场,网关构建覆盖发现、评测、验证与集成的完整闭环:

  • 模型纳管:集中管理来自自研与内外部厂商的多样化模型,形成内部“模型货架”,消除信息碎片;原生支持托管与上云对接。
  • 评测对比:支持文本生成、图像理解/生成等对比测试,可将真实业务问题一键投递给多模型直观比拼,显著降低试用门槛。
  • 一站式接入:选定模型后即可查看 API 接入指南,完成“选型-试用-接入”的闭环,大幅提升对接效率。
  • 运营与推荐:提供模型推荐能力,按效果与性价比打标、置顶,缩短选型时间并助力降本。

通过建设模型市场,实现了模型接入的统一化与标准化,模型上架和接入效率显著提升。模型上架时间从1~2天降低到 10 分钟内,试用从 1 天降低到 5 分钟以内。

统一各业务模型服务入口

通过建设OpenAI like风格的统一访问API和模型服务调度能力,网关将绝大部分AI模型服务的访问集中到单一入口,使不同业务线无需关注后端模型的具体实现细节,也能实现不同厂商模型服务之间的容灾。


模型调度策略与OpenAI like风格API

建设全流程成本管控体系

在成本治理和优化上,围绕“源头管控、成本感知、模型调度、厂商折扣和成本监控”等方面着手闭环能力搭建。打通了从预算申请、模型选型、接入调用,到运行观测、成本结算的全链路,实现了精准的成本治理与优化。

具体表现为,在3、4季度token用量分别较前一季度增长2.52倍和2.16倍的情况下,每百万Token的成本分别降低50%+和45%+,降本额度也相当可观,达到数百万元,在保证业务体验的前提下有效压降了模型使用成本。

总体降本思路&策略

目前正在搭建精细化降本能力,其核心思路是:通过构建Key/模型/厂商/项目维度的成本大盘、构建各外部厂商各类别模型均价大盘(发现更有性价比的模型)、建设用量和成本每周主动推送机制、完善成本预警/告警体系等措施,促使业务依据成本和价格数据主动进行成本治理。

全流程降本能力体系

持续夯实稳定性架构能力

在架构能力建设上,围绕“高可用、可控成本、稳定体验”三大目标,重点建设了限流、调度和容灾三类核心架构能力,可实现分钟级容灾切换,为大规模、多模型、多业务场景下的稳定运行提供基础保障。

  • 容量管理与限流

通过建设模型容量的配置化管理机制,实现按Key/项目等维度的TPM容量管理体系;若业务流量(token)超过阈值,便触发限流及容量告警。

  • 模型调度与容灾

模型调度能力可帮助我们实现厂商间模型粒度的分钟级容灾。具体做法是:若检测到当前API Key配置有模型调度策略,则模型调度器便将请求按配置规则执行调度,并将选中的模型交付给模型路由模块,由路由模块封装后将请求转发到对应厂商的模型服务实现。

模型调度与路由

建设分钟级实时观测能力

在AI规模化应用时代,没有分钟级观测体系的模型网关,就像没有仪表盘和刹车的F1赛车——速度越快,风险越大,毁灭性越强。因此,必须建设完善的模型调用/用量/成本的分钟级观测(监控+告警)体系。

  • 模型调用/用量/性能观测。目前已实现Key和模型粒度的模型调用、token用量的监控大盘,如下图所示:

调用/用量监控分时(基于Key)

调用失败率和平均RT(基于Key)

RPM/TPM监控分时(基于Key)

端到端平均RT监控分时(基于Key)

用量监控分时(基于模型)

性能监控分时(基于模型)

  • 模型成本观测。模型成本观测方面,正在实现模型、Key、厂商、项目等粒度的实时监控大盘,以及日/周/月/指定时间维度汇总的成本数据大盘。
  • 模型异常告警。模型服务告警方面,当前正在基于Flink实施计算和Kafka事件订阅机制建设一套基于模型和Key的实时告警体系,让业务对自己的模型调用异常能在3分钟以内通过飞书告警感知。

建设Key生命周期管理能力

通过API Key管理产品化能力建设,实现了API Key申请工单及自动分发、Key场景/负责人/共享人/状态管理和黑名单功能,并依托API Key实现接口鉴权、预算管理(预算分配/预算消耗/预算预警)、容量管理、模型调度等核心功能及关键流程节点的规范化管理。

六、创新亮点:大模型网关的核心技术突破

模型网关瞄准“效率-成本-稳定性-安全&合规”着力平台建设,并继续在成本管控、模型接入效率、服务稳定性、模型监控/告警等方面持续创新:

  • 构建全流程成本管控体系。 通过预算与 API Key 申请自动化、用量监控、成本展示、超额预警与告警、智能调度、用量与成本大盘等能力,形成“预算申请—调用监控—预算预警—模型调度—费用查看”的闭环管控。
  • 实现跨厂商的模型级容灾。 通过在网关配置显式或默认的调度策略,将请求优先分配至性价比更高的模型,既实现不同厂商间的模型级容灾,也成为降本利器。
  • 实现厂商无感的接入体验。 网关统一分发 API Key 并提供统一的模型服务 API,业务无需关心各厂商的入参/出参差异,即可获得一致的接入体验并显著提升效率。
  • 便捷高效的模型选型体验。 依托模型市场、试用预算池、试用与效果对比、推荐板块等功能,在控成本前提下为用户提供快捷选型路径,助力在层出不穷的模型中快速锁定理想方案。
  • 分钟级用量与成本观测。 已构建近实时(分钟级)运行监控,覆盖调用量、失败次数/率、RT、TPM、RPM等关键指标;并在开发基于 Key 与模型粒度的成本实时观测与离线报表,支持按周将成本汇总推送给调用方。

七、应用收益:从成本节约到效能提升

得物部署大模型网关后,经过「模型网关升级」项目建设,取得如下效果:

(1) 网关平台从0~1搭建起来。 模型网关从单一的纯后台服务进化为面向管理员和研发/产品/运营用户的平台化产品;不再只是模型访问的“管道”,而是集模型集市、模型调度、成本治理、创新实验于一体的支撑整个组织进行AI创新的入口平台。

(2) 内外部模型100%纳管。 从0~1建成对接得物(KubeAI)百度/阿里/字节/华为/微软/谷歌模型服务的模型集市,完成内外部模型100%纳管,新模型上架/接入只需在平台一键配置,无需新写实现逻辑。

(3) 模型接入效率提升97%。 管理各云商和自建模型140个,单模型平均上架时间从1~2天降低到 10 分钟内,接入效率提升97+%;模型试用与效果评估过程从 1 天降低到 5 分钟以内,效率提升98%+。

(4) H2节省成本数百万元。 依托模型调度切换能力和统一API建设,以及降本方法论推广,Q3、Q4在用量均较前一季度翻倍的情况下,实现每百万token成本连续分别降低51.52%和48.37%。两季共实现降本额度达数百万元,并且随着用量增加降本收益将越来越明显。

八、未来展望:从大模型网关向AI网关演进

大模型网关的未来发展将向如下几个方向演进:

首先,模型网关继续承担大模型成本管控主体责任,继续通过强化数据分析能力推进精细化降本,落地Qwen系列自建模型通过云商托管方式降本。

其次,围绕标准化与生态兼容,网关将引入并适配 MCP(模型上下文协议);实现API同时兼容多厂商与多形态模型(文本、图像、语音、视频与多模态),在保持一致体验的前提下实现跨生态的无缝互通与扩展。

另外,API网关正从单纯的流量管理工具转变为AI编排平台,将在已有的模型调度能力基础上建设更强大的工作流与多模型协同机制,能根据成本、延迟、准确性,将请求分配给最优AI模型。

最终,模型网关将不再是一个“网关”,而是企业智能化的“神经中枢”——它不直接思考,但确保思考过程高效、安全、经济地发生。

结语:

未来的技术方向已经清晰——大模型网关不是API网关的替代品,而是其演进形态。随着AI逐步嵌入各类应用,企业选择可扩展的大模型网关平台,将避免被孤立在特定AI生态中,获得技术架构的长期竞争优势。

往期回顾

1.从“人治”到“机治”:得物离线数仓发布流水线质量门禁实践

2.AI编程实践:从Claude Code实践到团队协作的优化思考|得物技术

3.入选AAAI-PerFM|得物社区推荐之基于大语言模型的新颖性推荐算法

4.Galaxy比数平台功能介绍及实现原理|得物技术

5.得物App智能巡检技术的探索与实践

文 /禹极

关注得物技术,每周更新技术干货

要是觉得文章对你有帮助的话,欢迎评论转发点赞~

未经得物技术许可严禁转载,否则依法追究法律责任。

前面两篇我已经介绍了如何在Smoothcloud润云一键使用ComfyUI镜像以及ComfyUI基础版玩法,现在来介绍一下进阶版玩法。

一、图生图

要在 ComfyUI 中使用图生图的工作流,我们需要先创建一个上传图像的节点,也就是 Load Image 节点。

在画布空白处点击右键,依次选择 Add Node > image > Load Image 就可以创建一个 Load Image 节点。

然后,还需要创建一个 VAE Encode 节点,同时删除 Empty Latent Image 节点。

依然是在画布空白处点击右键,依次选择 Add Node > latent > VAE Encode 就可以创建一个 VAE Encode 节点。

随后,将 Load Checkpoint 节点的 VAE 属性连接到 VAE Encode 节点的 vae 属性,将 Load Image 节点的 IMAGE 属性连接到 VAE Encode 节点的 pixels 属性,最后,将 VAE Encode 节点的 LATENT 属性连接到 KSampler 节点的 latent_image 属性即可。
具体可以参考下图。

二、画作修复

相对于文生图和图生图工作流,我们可以来看看更复杂的工作流,也就是修复画作(Inpainting)。

Inpainting 可以用于替换或编辑图像中的特定区域,比如去除缺陷和伪影,甚至用全新的内容替换某个区域,它依赖于遮罩来确定图像中需要填充的区域。

我们可以直接延用上一步图生图中的工作流,然后按照下面的步骤来操作:

  1. 在 Load Image 节点中上传想要修复的图像,右键单击选择 Open in MaskEditor;

  1. 在图像上对想要重新生成的区域设置遮罩,也就是用鼠标画阴影;

  1. 随后点击 Save 即可;
  2. 双击出现搜索框,输入 Set Latent Noise Mask 选择创建一个节点;

  1. 重新创建连接:
  2. 将 Load Image 节点的 MASK 属性连接到 Set Latent Noise Mask 节点的 mask 属性;
  3. 同时,修改 VAE 节点的 LATENT 连接到 Set Latent Noise Mask 节点的 samples 属性;
  4. 将 Set Latent Noise Mask 节点的 LATENT 属性连接到 KSampler 节点的 latent_image 属性;
  5. 定义修复过程,也就是在 CLIP Text Encode 节点中输入提示语信息来引导修复画作的方向;
  6. 设置 denoise 参数,比如我们设置 0.6;
  7. 最后点击 Run 即可。

这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「有看点的活动」,但内容仅代表编辑的个人观点,欢迎大家留言、跟帖、讨论。

本期编辑:@瓒an、@鲍勃

01 有话题的技术
1、亚马逊公布新款自研 AI 芯片 Trainium 3

日前,亚马逊云科技 CEO Matt Garman 在 re:Invent 2025 活动上,正式公布了亚马逊自研 AI 芯片 Trainium 系列的最新进展。

会上,Amazon Trainium 3 UltraServers 正式发布。

据介绍,这是亚马逊云科技首款搭载 3 纳米工艺 AI 芯片的服务器,相较 Amazon Trainium 2,不仅计算能力提升 4.4 倍、内存带宽提升 3.9 倍,每兆瓦算力可处理的 AI token 数量更实现了 5 倍增长。

服务器最高配置 144 个芯片,提供惊人的 362 petaflops FP8 计算能力。在运行 OpenAI 的 GPT-OSS-120B 模型时,每兆瓦输出 token 数是 Amazon Trainium 2 的 5 倍以上,实现超高能耗比。

同时,Matt Garman 还首次披露了 Amazon Trainium 4 芯片,并承诺将实现较 Amazon Trainium 3 六倍的 FP4 计算性能、四倍内存带宽和两倍高内存容量。

据悉,亚马逊云科技目前已完成超 100 万个 Trainium 2 芯片的规模化部署,为 Amazon Bedrock 中大部分推理工作提供核心算力支持,包括 Claude 最新一代模型的高效运行。

( @APPSO)

2、Meta Reality Labs 挖角苹果交互设计负责人 Alan Dye

今天凌晨,彭博社记者 Mark Gurman 发文透露,苹果人机交互设计副总裁 Alan Dye 被 Meta 挖角。

据悉,Dye 自 2015 年以来,一直担任苹果的用户界面设计团队的负责人。 而本次被挖角后,苹果将用长期设计师 Stephen Lemay 顶替 Dye 的岗位。

值得一提的是,Dye 曾负责监督 iOS 26、液态玻璃界面、Vision Pro 界面、watchOS,以及各种系统交互层面内容(如空间计算交互、灵动岛)。

报道指出,Dye 在乔布斯离开后,一直担任着重要角色:帮助公司定义了最新操作系统、App 以及设备的外观。另外,Dye 在苹果的团队也帮助开发一系列新的智能家居设备。

Meta 方面,随着 Dye 加入,该公司正在创立一个新的设计工作室,并且有 Dye 负责硬件、软件和 AI 集成方面的界面设计。

Dye 将向负责现实实验室的首席技术官 Andrew Bosworth 汇报工作,而现实实验室负责开发可穿戴设备,如智能眼镜和虚拟现实头戴式设备。Gurman 透露,Dye 将于 12 月 31 日正式开始担任团队首席设计官。

而且 Dye 还不是一个人走的,他还带走了苹果设计部门的高级总监 Billy Sorrentino。后者从 2016 年起就在苹果,主要负责 VisionOS 的用户界面设计。

( @APPSO)

3、小米卢伟冰:AI 与物理世界的深度结合是智能科技的下一站

12 月 3 日,@卢伟冰 在社媒发布卢伟冰答网友问第十二期,在回答「罗福莉加入了小米,未来在 AI 上会有什么新的战略」时表示:

其实我们在前几个季度就已经开始了在 AI 上的压强式投入,虽然不能透露太多,我们在 AI 大模型和应用方面的进展远超预期,我们认为 AI 与物理世界的深度结合是智能科技的下一站,小米也非常渴望人才尊重人才,也希望能够给优秀的人才提供好的发展平台。

95 后罗福莉出生于四川,父亲是一名电工,母亲是教师。她本人曾就读于四川宜宾市第一中学校 「清北班」,并以优异成绩考入北京师范大学,后被保送至北京大学深造。

在北大读硕士期间,她于 2019 年在人工智能领域顶级国际会议 ACL 上发表了 8 篇论文,其中 2 篇为第一作者。毕业后,她先后在阿里达摩院、幻方量化、DeepSeek 工作,主导开发了多语言预训练模型 VECO,并参与研发了 MoE 大模型 DeepSeek-V2。

11 月 12 日,罗福莉在朋友圈发文,正式宣布自己已经加入小米。

11 月 19 日消息,小米公司今日官宣,12 月 17 日,小米将在北京·国家会议中心举办「人车家全生态」合作伙伴大会。主论坛时间为上午 10:00-12:15,全程开放线上直播。

作为小米 MiMo 大模型负责人,罗福莉将在主论坛发表题为《Xiaomi MiMo:小米基座大模型》 的主题演讲,这是她自 11 月 12 日加入小米后的首次公开亮相。

(@荆楚网)

02 有亮点的产品
1、Peopleboxai 推出 Nova:首款「人性化」AI 面试官,优化招聘流程

Peopleboxai 发布了其 AI 产品「Nova」,号称是「人性化」的 AI 面试官。Nova 能够自动化包括简历筛选、电话面试、视频面试、实时编码测试以及生成决策报告在内的整个第一轮招聘流程,显著加快招聘速度并提升效率。

全流程自动化: Nova 能够处理从简历筛选、联系候选人(通过 InMail、邮件、电话)到进行全面的语音/视频面试,甚至执行高级编码测试,直至提供详细的、可直接用于决策的报告。
高度「人性化」体验: Nova 被设计成「最佳招聘官和面试官的数字孪生」,能够模拟自然的暂停、语气和「嗯」等语用标记,提供友好的、类似真人的互动体验,候选人对其评价很高。
定制化与智能化: 用户可以根据自己的需求定制 Nova 的面试风格,包括技能深度、难度、面试类型、语调和结构。Nova 还能从公司过往的招聘数据(职位描述、面试记录、ATS 笔记等)中学习,提升其判断能力。
显著提升效率: Nova 帮助客户将第一轮面试报告的完成时间从 4-5 周缩短到 48 小时以内,为招聘团队节省了大量时间,使其能专注于更具战略意义的工作。
覆盖多渠道招聘: Nova 不仅处理入站(inbound)和内推(referral)的候选人,还能主动进行外呼(outbound)候选人搜寻和联系。
Nova 产品已上线,用户可通过 Peopleboxai 官网了解更多信息并申请试用。

(@Y Combinator Launches)

2、理想汽车发布首款 AI 眼镜 Livis:标配蔡司镜片 补贴后售价 1699 元起

12 月 3 日,理想汽车举办线上发布会,正式推出其首款 AI 智能眼镜 Livis。售价 1999 元起,12 月 31 日前下订可享受 15% 政府补贴,补贴后价格仅为 1699 元起。

「一款以钢铁侠 AI 管家「贾维斯」为灵感命名的智能眼镜,试图将「理想同学」的 AI 能力从驾驶空间延伸至用户日常生活的每个角落。」

Livis 名称源于理想汽车与钢铁侠 AI 管家「Jarvis」的组合。

整机重量控制在 36 克,提供经典黑、科技灰和橄榄绿三种颜色,并可选亮光或磨砂材质。

Livis 全系产品标配蔡司镜片,涵盖近视镜片、光致变色镜片与墨镜片等多种类型,满足用户在不同场景下的视觉需求。

理想宣称 Livis 在研发过程中实现了五项关键突破,构成了产品核心竞争力的重要组成部分。

典型续航时间达 18.8 小时。Livis 标配类似 AirPods 的无线充电盒,便于随身携带和补能。同时,眼镜支持与理想汽车的车机系统无线快充,上车后放置在专属充电位进行充电。

在硬件配置上,Livis 搭载恒玄 BES2800 主控芯片和独立的 ISP 成像芯片,采用 SONY IMX681 摄像头,拥有 1200 万像素、支持 4K 照片以及电子防抖拍摄。

汽车联动场景是 Livis 最独特的卖点。通过蓝牙和 5G 网络,眼镜可无缝连接车辆,实现语音远程控车。用户可在百米范围内,通过语音指令操控电动侧滑门启闭、提前开启空调及座椅加热,甚至检查车辆续航和充电状态。

(@极客公园、@快科技)

3、豆包手机助手无法登录微信,双方回应

日前,字节跳动豆包团队与中兴合作发布了豆包手机助手技术预览版后,有试用 Nubia M153 工程样机的用户反馈,出现无法正常登陆微信的情况。

对于相关情况,豆包团队方面昨晚发文并做出回应。

豆包方面表示,其后续已下线了手机助手操作微信的能力。 目前,nubia M153 上被禁止登录的微信账号正陆续解封。

而微信相关人士也通过澎湃新闻回应,豆包手机助手无法正常登陆微信的微信并没有什么特别动作,「可能是中了本来就有的安全风控措施。」

针对此前曾有科技公司爆料「豆包手机助手存在侵犯用户隐私」的问题,团队方面强调,豆包手机助手不存在任何黑客行为。

据悉,此前上述公司曾表示豆包手机助手在努比亚手机上拥有 INJECT\_EVENTS 权限,该权限在安卓权限定义中属于操作系统高危权限,并且拿到该权限,要面临刑事责任。

豆包方面表示,INJECT\_EVENTS 确实是系统级权限,但拥有了该权限许可,相关产品才能跨屏、跨应用来模拟点击事件,完成用户操作手机的任务需求。

团队还强调,豆包手机助手需要用户主动授权,才可以调用该权限,使用操作手机功能。该权限的使用,豆包方面也在权限清单中进行了明确的披露。据了解,目前行业的 AI 助手,均需要使用该权限(或与其类似的无障碍权限)才能提供操作手机的服务。

豆包方面强烈表示,豆包手机助手也不会代替用户进行相关授权和敏感操作。

同时,豆包方面也对读取屏幕的隐私问题进行了回应。其表示,助手操作手机时需要读取屏幕(否则无法完成任务),但屏幕和操作过程都不会在服务器端留下存储,且所有的相关内容也都不会进入模型训练,确保用户隐私安全。

( @APPSO)

4、健康追踪应用 Healthify Ria 升级 AI 助手:支持实时语音与摄像头交互

健康追踪初创公司 Healthify 推出了其 AI 助手 Ria 的新版本,该版本支持通过语音和摄像头进行实时对话,并能理解超过 50 种语言(包括 14 种印度语言)以及混合语言输入。此举旨在通过更自然的交互方式,提升用户健康习惯养成的效率和用户粘性。

实时对话与多模态输入: Ria 现在支持通过语音进行实时对话,用户还可以通过摄像头扫描食物获取营养信息并进行记录,大幅简化了数据录入流程。
多语言与混合语言支持: Ria 能够理解超过 50 种语言,并支持 Hinglish、Spanglish 等混合语言输入,服务全球用户。
整合多源健康数据: Ria 可以整合来自健身追踪器、睡眠追踪器、血糖监测仪等设备的数据,为用户提供运动、睡眠、身体准备度和血糖波动等方面的洞察,并给出建议。
增强记忆与个性化: Healthify 正在为 Ria 构建一个更持久的记忆层,使其能够记住用户的偏好和健康变化,提供更个性化的建议。
教练与营养师辅助: Ria 将被整合到用户与教练、营养师的沟通中,协助双方快速调取数据、回答问题,并可转录通话内容,提取关键信息。
(@TechCrunch)

03 有态度的观点
1、《阿凡达》导演:对 AI 没意见,但要尊敬演员们

近日,导演詹姆斯·卡梅隆在《阿凡达 3》世界首映礼上称该片没有使用 AI 生成,随后他对 ComicBookcom 发表了自己对于生成式 AI 的应用看法。

卡梅隆表示,自己对生成式 AI 没有意见,但他强调:「我们拍《阿凡达》电影不使用它,我们尊敬并赞颂演员们,我们不用 AI 代替演员。」

同时,卡梅隆也表示,「这件事(生成式 AI)自会有方向,我想好莱坞会进行自我监管,但我们作为艺术家要找到出路,前提是我们得能存在。所以,比起别的东西,来自『大 AI』的生存威胁是最让我担忧的。」

值得一提的是,卡梅隆所提到的「大 AI」,是指人类利用 AI 的状况和其产生的问题,对应的「小 AI」是指更细节、技术性的层面,比如用 AI 生成内容。

在卡梅隆看来,AI 和人类未来有深切的担忧和存在危机,他认为「小 AI」各行业会找到应对和利用之法,但「大 AI」问题就不好说了。

卡梅隆还提到,若了解 AI,就会知道「校准」是个重大问题。「AI 必须被训练、教导,必须被约束去只做对人类好的事情。」其强调,「只有我们人类达成了共识,你才能对 AI 进行校准。」实打weibo.com/ttarticle/p/show?id=2309405262060589285436 weibo.com/ttarticle/p/show?id=2309405262061017104464 weibo.com/ttarticle/p/show?id=2309405262061357105194 weibo.com/ttarticle/p/show?id=2309405262061701038082 weibo.com/ttarticle/p/show?id=2309405262062036320261 weibo.com/ttarticle/p/show?id=2309405262062376321055 weibo.com/ttarticle/p/show?id=2309405262062812266528 weibo.com/ttarticle/p/show?id=2309405262063147810847 weibo.com/ttarticle/p/show?id=2309405262063483355160 实

  1. 一个表弟的女儿,读三年级
  2. 一个表妹的女儿,3 岁
  3. 预算 500 以内

两家家里应该都是不缺钱的哪种,有什么好的礼物推荐么

前言

本文主要讲解 RBAC 后台系统中的按钮级权限控制

本文是《通俗易懂的中后台系统建设指南》系列的第十一篇文章,该系列旨在告诉你如何构建一个优秀的中后台管理系统。

RBAC 权限细粒度

在前两篇文章:RBAC 权限系统实战(一):页面级访问控制全解析RBAC 权限系统实战(二):权限信息管理的设计 中,我们在后台系统里已经实现了权限控制,但从权限细粒度的角度看,我们只做了“页面级”权限

在权限细粒度中,一般有这三种权限粒度:

  1. 页面/菜单级:用户是否能看到并访问该页面
  2. 功能/操作级:进入页面后,是否能执行某个动作(比如按钮权限)
  3. 数据级:可以操作哪些数据范围(本人/部门/全部等)

在某些业务场景下,我们希望用户能看到/进入页面,但不一定能操作所有功能。比如同一个列表页:A 只能“查看”,B 可以“新增/编辑”,C 还能“删除/导出”

因此本文主要实现操作级权限控制,也常称为“按钮级权限控制”

权限码设计

第一篇权限文章中,我们在登录后,会请求用户信息接口,拿到用户的菜单路由数据再渲染访问

现在,还是基于这个接口返回的用户信息,我们要增加一个字段:permissionCodes,它是一个字符串数组,代表该用户拥有的操作权限

我这里使用的是 ApiFox 来模拟的接口和数据,ApiFox 文档可以访问:vue-clean-admin ApiFox 文档,内有关于”获取用户信息接口“的文档介绍

你可以看到,返回的权限码列表遵循一定的格式来确保语义清晰,我们约定,权限码的格式如下:

比如下面的菜单模块,关于新增、详情的权限码:

当然,不是说不遵守这个格式就不行,但我推荐这种格式。可以让我们在代码里更清楚地理解权限码含义,也方便后续维护

还要考虑一种情况:某个角色不管系统有多少权限都可以访问,比如超级管理员 superAdmin,对于这样的角色,我们做点特殊处理,比如用通配符 * 表示全部权限(如 *:*:*)。这时无需再做权限筛选,直接放行即可

按钮级权限实战

在操作级权限设计中,在 Vue 框架下,有三种实现按钮级权限的方式:组件式、自定义指令、函数式

  1. 组件式:编写 Vue 组件,插槽内容由权限码属性决定是否渲染
  2. 自定义指令:通过指令控制 DOM 来实现元素显隐
  3. 函数式:在函数中写权限筛选逻辑,上面两种方式都会依赖它

函数式

函数式写法最常见,把权限判断封装成工具函数或 hook 都可以。先看一个实现:

import { useUserStore } from '@/store/modules/user';
import { PermissionCode } from '#/type';
import { storeToRefs } from 'pinia';
import { isEmpty } from '@/utils';

export const useAuth = () => {
  const userStore = useUserStore();
  const { getPermissionCodes } = storeToRefs(userStore);

  //...

  /**
   * 判断是否有权限
   * @param code 权限码,可以是单个权限码字符串,也可以是权限码数组
   * @returns 是否有权限
   */
  const hasPermission = (code: PermissionCode): boolean => {
    // 如果是特殊通配符,直接放行
    if (getPermissionCodes.value.includes('*:*:*')) return true;

    // 空字符串、空数组情况,默认为无权限
    if (isEmpty(code)) return false;

    const codes = Array.isArray(code) ? code : [code];

    // 只要满足其中一个权限码即可
    return codes.some((c) => getPermissionCodes.value.includes(c));
  };

  return {
    hasPermission,
  };
};
use-auth.ts 找到实战代码

这里我把逻辑写成一个 hook,重点关注 hasPermission 方法。它接收权限码参数 code,返回一个布尔值,表示是否有权限

getPermissionCodes 表示当前用户拥有的权限码

code 参数既可以是单个字符串,也可以是数组。因为用户可以同时拥有多个权限码(如 user:adduser:edit),所以类型定义如下:

/**
 * 权限码类型
 */
export type PermissionCode<T = string | string[]> = T;

实际场景中,可配合 v-if 来控制元素显隐:

组件式

组件式很好理解:把“权限判断”封装成 Vue 组件,内部内容由权限码决定是否渲染。

这里用 AppAuth 组件示例:

<script setup lang="ts">
import { PermissionCode } from '@/types/common';
import { computed } from 'vue';
import { useAuth } from '@/hooks/useAuth';

defineOptions({
  name: 'AppAuth',
});

export interface AppAuthProps {
  /**
   * 权限码
   */
  codes: PermissionCode;
}

const props = withDefaults(defineProps<AppAuthProps>(), {
  codes: '',
});

const { hasPermission } = useAuth();

/**
 * 是否有权限
 */
const hasAuth = computed(() => {
  return hasPermission(props.codes);
});
</script>

<template>
  <slot v-if="hasAuth" />
  <slot v-else name="no-auth" />
</template>
app-auth.vue 找到代码实现

在频繁使用的场景下,最好全局注册该组件:

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import AppAuth from './components/AppAuth.vue'

const app = createApp(App)

// 全局注册
app.component('AppAuth', AppAuth)

app.mount('#app')

全局注册组件时要补上 TypeScript 的类型提示,我在 src/typings/app-components.d.ts 中添加了类型声明:

export {};

declare module 'vue' {
  export interface GlobalComponents {
    //...
    AppAuth: (typeof import('../components/common/app-auth/index'))['AppAuth'];
  }
}

然后就可以直接使用 AppAuth 组件了:

当用户没有权限时,会渲染 no-auth 插槽的内容,可以在 no-auth 插槽中自定义展示内容。

自定义指令

自定义指令也是一种很方便的实现方式,通过操作 DOM 来实现元素显隐

通过 app.directive 方法来注册 v-auth

// directives/auth.ts
import type { Directive } from 'vue';
import type { PermissionCode } from '@/types';
import { useAuth } from '@/hooks/useAuth';

export type AuthDirective = Directive<HTMLElement, PermissionCode>;

export const authDirective: AuthDirective = {
  mounted(el, binding) {
    const { hasPermission } = useAuth();
    if (!hasPermission(binding.value)) {
      el.remove();
    }
  },
  updated(el, binding) {
    const { hasPermission } = useAuth();
    if (!hasPermission(binding.value)) {
      el.remove();
    }
  },
};
directives/modules/auth.ts 找到代码实现

然后在 main.ts 中注册 v-auth 指令:

// main.ts
import { createApp } from 'vue';
import App from './App.vue';
import { authDirective } from './directives/auth';

const app = createApp(App);
app.directive('auth', authDirective);
app.mount('#app');

同样要补上全局指令的类型定义,在 src/typings/directive.d.ts 中添加类型声明:

import type { AuthDirective } from '@/directives/typing';

declare module 'vue' {
  export interface GlobalDirectives {
    vAuth: AuthDirective;
  }
}

然后就可以使用 v-auth 指令来实现权限控制:

菜单管理、角色管理

在权限实战第二篇:RBAC 权限系统实战(二):权限信息管理的设计 中,实现了菜单、角色管理的基本管理操作,比如菜单 CRUD、角色绑定权限等操作

从细粒度来看,我们现在多做了一层操作级权限,关于这两个模块,要进行一点小改动

在菜单管理中,新增、编辑菜单等操作中,新加一个”操作“的类型,以支持添加操作级权限信息

注意这里要填写的表单信息,是根据菜单类型来展示不同的字段,比如“操作”类型,需要填写权限码

然后,菜单列表的数据是这样的:

在角色管理模块中,主要关注”分配权限“的操作,允许给角色分配操作级权限

了解更多

系列专栏地址:GitHub 博客 | 掘金专栏 | 思否专栏

实战项目:vue-clean-admin

交流讨论

文章如有错误或需要改进之处,欢迎指正。

这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「有看点的活动」,但内容仅代表编辑的个人观点,欢迎大家留言、跟帖、讨论。

本期编辑:@瓒an、@鲍勃

01 有话题的技术
1、亚马逊公布新款自研 AI 芯片 Trainium 3

日前,亚马逊云科技 CEO Matt Garman 在 re:Invent 2025 活动上,正式公布了亚马逊自研 AI 芯片 Trainium 系列的最新进展。

会上,Amazon Trainium 3 UltraServers 正式发布。

据介绍,这是亚马逊云科技首款搭载 3 纳米工艺 AI 芯片的服务器,相较 Amazon Trainium 2,不仅计算能力提升 4.4 倍、内存带宽提升 3.9 倍,每兆瓦算力可处理的 AI token 数量更实现了 5 倍增长。

服务器最高配置 144 个芯片,提供惊人的 362 petaflops FP8 计算能力。在运行 OpenAI 的 GPT-OSS-120B 模型时,每兆瓦输出 token 数是 Amazon Trainium 2 的 5 倍以上,实现超高能耗比。

同时,Matt Garman 还首次披露了 Amazon Trainium 4 芯片,并承诺将实现较 Amazon Trainium 3 六倍的 FP4 计算性能、四倍内存带宽和两倍高内存容量。

据悉,亚马逊云科技目前已完成超 100 万个 Trainium 2 芯片的规模化部署,为 Amazon Bedrock 中大部分推理工作提供核心算力支持,包括 Claude 最新一代模型的高效运行。

( @APPSO)

2、Meta Reality Labs 挖角苹果交互设计负责人 Alan Dye

今天凌晨,彭博社记者 Mark Gurman 发文透露,苹果人机交互设计副总裁 Alan Dye 被 Meta 挖角。

据悉,Dye 自 2015 年以来,一直担任苹果的用户界面设计团队的负责人。 而本次被挖角后,苹果将用长期设计师 Stephen Lemay 顶替 Dye 的岗位。

值得一提的是,Dye 曾负责监督 iOS 26、液态玻璃界面、Vision Pro 界面、watchOS,以及各种系统交互层面内容(如空间计算交互、灵动岛)。

报道指出,Dye 在乔布斯离开后,一直担任着重要角色:帮助公司定义了最新操作系统、App 以及设备的外观。另外,Dye 在苹果的团队也帮助开发一系列新的智能家居设备。

Meta 方面,随着 Dye 加入,该公司正在创立一个新的设计工作室,并且有 Dye 负责硬件、软件和 AI 集成方面的界面设计。

Dye 将向负责现实实验室的首席技术官 Andrew Bosworth 汇报工作,而现实实验室负责开发可穿戴设备,如智能眼镜和虚拟现实头戴式设备。Gurman 透露,Dye 将于 12 月 31 日正式开始担任团队首席设计官。

而且 Dye 还不是一个人走的,他还带走了苹果设计部门的高级总监 Billy Sorrentino。后者从 2016 年起就在苹果,主要负责 VisionOS 的用户界面设计。

( @APPSO)

3、小米卢伟冰:AI 与物理世界的深度结合是智能科技的下一站

12 月 3 日,@卢伟冰 在社媒发布卢伟冰答网友问第十二期,在回答「罗福莉加入了小米,未来在 AI 上会有什么新的战略」时表示:

其实我们在前几个季度就已经开始了在 AI 上的压强式投入,虽然不能透露太多,我们在 AI 大模型和应用方面的进展远超预期,我们认为 AI 与物理世界的深度结合是智能科技的下一站,小米也非常渴望人才尊重人才,也希望能够给优秀的人才提供好的发展平台。

95 后罗福莉出生于四川,父亲是一名电工,母亲是教师。她本人曾就读于四川宜宾市第一中学校 「清北班」,并以优异成绩考入北京师范大学,后被保送至北京大学深造。

在北大读硕士期间,她于 2019 年在人工智能领域顶级国际会议 ACL 上发表了 8 篇论文,其中 2 篇为第一作者。毕业后,她先后在阿里达摩院、幻方量化、DeepSeek 工作,主导开发了多语言预训练模型 VECO,并参与研发了 MoE 大模型 DeepSeek-V2。

11 月 12 日,罗福莉在朋友圈发文,正式宣布自己已经加入小米。

11 月 19 日消息,小米公司今日官宣,12 月 17 日,小米将在北京·国家会议中心举办「人车家全生态」合作伙伴大会。主论坛时间为上午 10:00-12:15,全程开放线上直播。

作为小米 MiMo 大模型负责人,罗福莉将在主论坛发表题为《Xiaomi MiMo:小米基座大模型》 的主题演讲,这是她自 11 月 12 日加入小米后的首次公开亮相。

(@荆楚网)

02 有亮点的产品
1、Peopleboxai 推出 Nova:首款「人性化」AI 面试官,优化招聘流程

Peopleboxai 发布了其 AI 产品「Nova」,号称是「人性化」的 AI 面试官。Nova 能够自动化包括简历筛选、电话面试、视频面试、实时编码测试以及生成决策报告在内的整个第一轮招聘流程,显著加快招聘速度并提升效率。

全流程自动化: Nova 能够处理从简历筛选、联系候选人(通过 InMail、邮件、电话)到进行全面的语音/视频面试,甚至执行高级编码测试,直至提供详细的、可直接用于决策的报告。
高度「人性化」体验: Nova 被设计成「最佳招聘官和面试官的数字孪生」,能够模拟自然的暂停、语气和「嗯」等语用标记,提供友好的、类似真人的互动体验,候选人对其评价很高。
定制化与智能化: 用户可以根据自己的需求定制 Nova 的面试风格,包括技能深度、难度、面试类型、语调和结构。Nova 还能从公司过往的招聘数据(职位描述、面试记录、ATS 笔记等)中学习,提升其判断能力。
显著提升效率: Nova 帮助客户将第一轮面试报告的完成时间从 4-5 周缩短到 48 小时以内,为招聘团队节省了大量时间,使其能专注于更具战略意义的工作。
覆盖多渠道招聘: Nova 不仅处理入站(inbound)和内推(referral)的候选人,还能主动进行外呼(outbound)候选人搜寻和联系。
Nova 产品已上线,用户可通过 Peopleboxai 官网了解更多信息并申请试用。

(@Y Combinator Launches)

2、理想汽车发布首款 AI 眼镜 Livis:标配蔡司镜片 补贴后售价 1699 元起

12 月 3 日,理想汽车举办线上发布会,正式推出其首款 AI 智能眼镜 Livis。售价 1999 元起,12 月 31 日前下订可享受 15% 政府补贴,补贴后价格仅为 1699 元起。

「一款以钢铁侠 AI 管家「贾维斯」为灵感命名的智能眼镜,试图将「理想同学」的 AI 能力从驾驶空间延伸至用户日常生活的每个角落。」

Livis 名称源于理想汽车与钢铁侠 AI 管家「Jarvis」的组合。

整机重量控制在 36 克,提供经典黑、科技灰和橄榄绿三种颜色,并可选亮光或磨砂材质。

Livis 全系产品标配蔡司镜片,涵盖近视镜片、光致变色镜片与墨镜片等多种类型,满足用户在不同场景下的视觉需求。

理想宣称 Livis 在研发过程中实现了五项关键突破,构成了产品核心竞争力的重要组成部分。

典型续航时间达 18.8 小时。Livis 标配类似 AirPods 的无线充电盒,便于随身携带和补能。同时,眼镜支持与理想汽车的车机系统无线快充,上车后放置在专属充电位进行充电。

在硬件配置上,Livis 搭载恒玄 BES2800 主控芯片和独立的 ISP 成像芯片,采用 SONY IMX681 摄像头,拥有 1200 万像素、支持 4K 照片以及电子防抖拍摄。

汽车联动场景是 Livis 最独特的卖点。通过蓝牙和 5G 网络,眼镜可无缝连接车辆,实现语音远程控车。用户可在百米范围内,通过语音指令操控电动侧滑门启闭、提前开启空调及座椅加热,甚至检查车辆续航和充电状态。

(@极客公园、@快科技)

3、豆包手机助手无法登录微信,双方回应

日前,字节跳动豆包团队与中兴合作发布了豆包手机助手技术预览版后,有试用 Nubia M153 工程样机的用户反馈,出现无法正常登陆微信的情况。

对于相关情况,豆包团队方面昨晚发文并做出回应。

豆包方面表示,其后续已下线了手机助手操作微信的能力。 目前,nubia M153 上被禁止登录的微信账号正陆续解封。

而微信相关人士也通过澎湃新闻回应,豆包手机助手无法正常登陆微信的微信并没有什么特别动作,「可能是中了本来就有的安全风控措施。」

针对此前曾有科技公司爆料「豆包手机助手存在侵犯用户隐私」的问题,团队方面强调,豆包手机助手不存在任何黑客行为。

据悉,此前上述公司曾表示豆包手机助手在努比亚手机上拥有 INJECT\_EVENTS 权限,该权限在安卓权限定义中属于操作系统高危权限,并且拿到该权限,要面临刑事责任。

豆包方面表示,INJECT\_EVENTS 确实是系统级权限,但拥有了该权限许可,相关产品才能跨屏、跨应用来模拟点击事件,完成用户操作手机的任务需求。

团队还强调,豆包手机助手需要用户主动授权,才可以调用该权限,使用操作手机功能。该权限的使用,豆包方面也在权限清单中进行了明确的披露。据了解,目前行业的 AI 助手,均需要使用该权限(或与其类似的无障碍权限)才能提供操作手机的服务。

豆包方面强烈表示,豆包手机助手也不会代替用户进行相关授权和敏感操作。

同时,豆包方面也对读取屏幕的隐私问题进行了回应。其表示,助手操作手机时需要读取屏幕(否则无法完成任务),但屏幕和操作过程都不会在服务器端留下存储,且所有的相关内容也都不会进入模型训练,确保用户隐私安全。

( @APPSO)

4、健康追踪应用 Healthify Ria 升级 AI 助手:支持实时语音与摄像头交互

健康追踪初创公司 Healthify 推出了其 AI 助手 Ria 的新版本,该版本支持通过语音和摄像头进行实时对话,并能理解超过 50 种语言(包括 14 种印度语言)以及混合语言输入。此举旨在通过更自然的交互方式,提升用户健康习惯养成的效率和用户粘性。

实时对话与多模态输入: Ria 现在支持通过语音进行实时对话,用户还可以通过摄像头扫描食物获取营养信息并进行记录,大幅简化了数据录入流程。
多语言与混合语言支持: Ria 能够理解超过 50 种语言,并支持 Hinglish、Spanglish 等混合语言输入,服务全球用户。
整合多源健康数据: Ria 可以整合来自健身追踪器、睡眠追踪器、血糖监测仪等设备的数据,为用户提供运动、睡眠、身体准备度和血糖波动等方面的洞察,并给出建议。
增强记忆与个性化: Healthify 正在为 Ria 构建一个更持久的记忆层,使其能够记住用户的偏好和健康变化,提供更个性化的建议。
教练与营养师辅助: Ria 将被整合到用户与教练、营养师的沟通中,协助双方快速调取数据、回答问题,并可转录通话内容,提取关键信息。
(@TechCrunch)

03 有态度的观点
1、《阿凡达》导演:对 AI 没意见,但要尊敬演员们

近日,导演詹姆斯·卡梅隆在《阿凡达 3》世界首映礼上称该片没有使用 AI 生成,随后他对 ComicBookcom 发表了自己对于生成式 AI 的应用看法。

卡梅隆表示,自己对生成式 AI 没有意见,但他强调:「我们拍《阿凡达》电影不使用它,我们尊敬并赞颂演员们,我们不用 AI 代替演员。」

同时,卡梅隆也表示,「这件事(生成式 AI)自会有方向,我想好莱坞会进行自我监管,但我们作为艺术家要找到出路,前提是我们得能存在。所以,比起别的东西,来自『大 AI』的生存威胁是最让我担忧的。」

值得一提的是,卡梅隆所提到的「大 AI」,是指人类利用 AI 的状况和其产生的问题,对应的「小 AI」是指更细节、技术性的层面,比如用 AI 生成内容。

在卡梅隆看来,AI 和人类未来有深切的担忧和存在危机,他认为「小 AI」各行业会找到应对和利用之法,但「大 AI」问题就不好说了。

卡梅隆还提到,若了解 AI,就会知道「校准」是个重大问题。「AI 必须被训练、教导,必须被约束去只做对人类好的事情。」其强调,「只有我们人类达成了共识,你才能对 AI 进行校准。」实打weibo.com/ttarticle/p/show?id=2309405262051089448997 weibo.com/ttarticle/p/show?id=2309405262051420798996 weibo.com/ttarticle/p/show?id=2309405262051747692643 weibo.com/ttarticle/p/show?id=2309405262052179968031 weibo.com/ttarticle/p/show?id=2309405262052511318035 weibo.com/ttarticle/p/show?id=2309405262052838211620 weibo.com/ttarticle/p/show?id=2309405262053165367330 weibo.com/ttarticle/p/show?id=2309405262053492523060 weibo.com/ttarticle/p/show?id=2309405262053932924933 实

MetaGPT是一款多智能体协作框架,核心理念为Code = SOP(Team),通过模拟真实软件公司的组织架构(产品经理、架构师、工程师等角色)与标准化流程(SOP),实现复杂任务的协作完成。以下是其官方文档的完整指南,包含访问入口、核心结构、快速入门与关键资源,助你高效上手与深度开发。

一、官方文档核心入口

1.1 在线文档网站(推荐)

1.2 GitHub文档库(源码关联)

1.3 核心仓库与资源

二、文档核心结构(中文站)

MetaGPT中文文档采用模块化设计,覆盖从入门到进阶的全流程,核心结构如下:

模块核心内容适用场景
快速入门安装指南、配置步骤、Hello World示例新手快速上手,验证环境与基础功能
核心概念角色定义、SOP流程、消息机制、内存管理理解框架设计理念与核心组件
开发指南自定义角色、扩展工具、SOP流程定制二次开发,构建专属智能体团队
示例教程单智能体示例、多智能体协作、行业应用参考实战场景,加速开发进程
高级特性长期记忆、人工干预、多模型集成复杂场景优化,提升系统能力
API参考核心类、方法、配置参数详解开发调试,查阅接口规范
FAQ常见问题、错误排查、性能优化解决开发与部署中的实际问题

三、快速入门核心步骤(文档精华)

基于官方文档,以下是从安装到运行的极简流程,助你快速启动MetaGPT。

3.1 安装与环境准备

# 1. 安装Python 3.9+(官方推荐3.9-3.11)
python3 --version

# 2. 安装稳定版(推荐)
pip install metagpt

# 3. 安装开发版(尝鲜新特性)
pip install git+https://github.com/FoundationAgents/MetaGPT.git@main

# 4. 初始化配置文件
metagpt --init-config  # 生成~/.metagpt/config2.yaml

3.2 配置LLM模型(关键步骤)

编辑~/.metagpt/config2.yaml,配置大模型参数(以OpenAI为例):

llm:
  api_type: "openai"       # 可选azure/ollama/groq等
  model: "gpt-4-turbo"     # 或gpt-3.5-turbo
  base_url: "https://api.openai.com/v1"  # 国内可配置代理地址
  api_key: "sk-..."        # 你的API密钥

3.3 第一个MetaGPT程序

运行单智能体示例,验证环境与配置:

from metagpt.roles import Role
from metagpt.team import Team
from metagpt.environment import Environment

# 1. 定义简单角色
class SimpleRole(Role):
    def __init__(self, name="SimpleRole"):
        super().__init__(name)
    
    async def _act(self) -> None:
        self.set_state("completed")
        self.publish_message(content="Hello MetaGPT!")

# 2. 创建团队与环境
env = Environment()
team = Team(env=env)
team.hire([SimpleRole()])

# 3. 启动任务
await team.run(project_name="FirstProject", idea="Say hello to the world")

3.4 经典示例:生成CLI贪吃蛇游戏

# 执行官方示例,体验全流程协作
metagpt run "Write a cli snake game"  # 自动生成需求→设计→代码→测试

四、核心概念与设计理念(文档重点)

4.1 核心组件关系

MetaGPT的核心在于“角色+SOP+环境”的三元架构,各组件协同工作实现复杂任务:

  • 角色(Role):封装专业能力(如产品经理、工程师),负责特定环节工作;
  • SOP(Standard Operating Procedures):标准化流程,定义角色间的协作步骤;
  • 环境(Environment):消息传递中心,管理角色间的通信与状态共享;
  • 记忆(Memory):分为短期记忆(对话缓存)与长期记忆(向量库存储),支持上下文理解与历史复用。

4.2 关键设计理念

  1. Code = SOP(Team):将标准流程具象化,驱动智能体团队高效协作;
  2. 角色专业化:每个角色聚焦单一职责,通过协作提升整体能力;
  3. 流程可定制:支持自定义SOP,适配不同行业与任务场景;
  4. 记忆分层管理:结合短期实时交互与长期历史复用,平衡性能与体验。

五、进阶开发指南(文档核心内容)

5.1 自定义智能体角色

from metagpt.roles import Role
from metagpt.actions import Action

# 1. 定义自定义动作
class MyAction(Action):
    async def run(self, context: str) -> str:
        return f"处理结果:{context}"

# 2. 定义自定义角色
class MyRole(Role):
    def __init__(self, name: str = "MyRole"):
        super().__init__(name)
        self.set_actions([MyAction])  # 绑定动作

# 3. 使用自定义角色
team = Team()
team.hire([MyRole()])
await team.run(project_name="Test", idea="执行自定义任务")

5.2 长期记忆集成(Chroma向量库)

官方文档推荐通过VectorStoreRetrieverMemory集成Chroma,实现持久化记忆与相似性检索,步骤如下:

  1. 安装依赖:pip install chromadb langchain-community
  2. 配置向量库与嵌入模型;
  3. 绑定记忆组件到智能体角色;
  4. 实现跨会话历史复用与相似性检索。

5.3 多模型集成与人工干预

  • 多模型支持:文档详细介绍了OpenAI、Azure、Ollama、通义千问等模型的配置方法;
  • 人工干预:支持在关键节点暂停流程,人工审核或修改内容后继续执行,提升输出质量。

六、常见问题与文档使用技巧

6.1 文档访问与版本问题

  • 问题:在线文档加载缓慢或版本不匹配;
  • 解决

    1. 优先使用国内镜像或科学上网访问;
    2. 锁定特定版本(如v0.8)进行开发,避免版本兼容问题;
    3. 本地克隆GitHub仓库,查阅离线文档。

6.2 配置与运行错误

  • 问题:模型API调用失败、配置文件错误;
  • 解决

    1. 参考文档“设置”章节,检查API密钥与模型参数;
    2. 启用verbose=True,查看详细日志定位问题;
    3. 查阅FAQ章节,解决常见错误(如API额度不足、网络连接问题)。

6.3 文档使用技巧

  1. 版本匹配:确保文档版本与安装的MetaGPT版本一致;
  2. 示例优先:先运行官方示例,再进行二次开发;
  3. 搜索功能:利用在线文档的搜索框,快速定位所需内容;
  4. 社区支持:通过GitHub Issues、Discord等渠道获取社区帮助。

七、总结与资源拓展

MetaGPT官方文档提供了从入门到进阶的完整指南,核心价值在于结构化呈现框架设计理念、标准化开发流程与可复用示例。建议按以下路径学习:

  1. 从快速入门开始,完成环境搭建与基础示例运行;
  2. 深入核心概念,理解角色、SOP与记忆的设计逻辑;
  3. 参考示例教程,开发简单应用,熟悉开发流程;
  4. 探索进阶特性,实现自定义角色、长期记忆与多模型集成。

官方文档持续更新,建议定期访问在线文档与GitHub仓库,获取最新功能与最佳实践。

在全球化浪潮持续涌动与数字化技术深度融合的2026年,外贸企业面临着前所未有的机遇与挑战。订单碎片化、市场竞争白热化、客户需求个性化以及供应链复杂化,都对企业的精细化管理和高效运营提出了更高要求。在此背景下,外贸ERP(企业资源计划)软件已成为外贸企业提升核心竞争力、实现可持续发展的不可或缺的管理利器。

一:外贸ERP对外贸企业业务管理的作用

外贸ERP系统并非简单的办公软件,它是一个集成了先进管理思想和IT技术的企业运营中枢,其对外贸企业业务管理的作用体现在多个核心维度:

提升运营效率,降低人力成本:通过自动化处理订单、采购、库存、财务、单证等重复性高、易出错的工作流程,ERP能显著减少人工干预,加快业务流转速度,释放人力投入更具价值的客户服务和市场拓展工作。
整合业务数据,实现信息共享:打破部门壁垒,将客户关系管理(CRM)、供应链管理(SCM)、财务管理、人力资源管理等多个模块的数据统一整合在一个平台上。管理层可以实时获取准确的业务数据,各部门也能协同工作,避免信息孤岛和沟通不畅。
优化库存管理,减少资金占用:实时监控库存水平、订单执行情况和市场需求预测,帮助企业制定科学的采购和库存策略,避免库存积压或缺货现象,提高库存周转率,有效降低库存成本。
规范业务流程,提升风险管控能力:将标准化的外贸业务流程固化在系统中,确保每个环节都有章可循。同时,通过对信用风险、汇率风险、物流风险等的预警和监控,帮助企业提前规避潜在风险。
辅助科学决策,增强市场应变能力:强大的数据分析功能能够对企业销售业绩、成本构成、客户行为、市场趋势等进行多维度分析和报表呈现,为管理层提供数据支持,从而做出更精准、更快速的经营决策。

二:三类外贸ERP软件的区别

在当前外贸ERP市场上,主要存在三类产品,它们在设计理念、功能侧重和服务对象上存在显著差异:

第一类:国际性外贸ERP软件

以SAP、Oracle为代表的国际性ERP系统,其优势在于全球化支持能力。这类软件通常由国际知名软件厂商开发,在全球范围内拥有广泛的用户群体。其特点是系统架构庞大、功能模块全面,技术先进,可能涵盖跨国集团管理的各个方面。

优点:品牌知名度高,在某些国际通用的管理理念上有其独到之处,可能适合有复杂全球供应链布局的大型跨国公司。
缺点:不适合中国本土外贸企业,其设计往往基于西方国家的贸易习惯、业务流程和法律法规,与中国外贸企业的实际操作模式、财税制度、单证格式等存在较大差异,需要进行大量的本土化改造,实施成本极高。
“水土不服”的深层原因:对中国特有的贸易政策,如出口退税管理、外汇核销、增值税发票管理、各类监管证件的办理等支持不足或缺失。语言界面、操作习惯也可能不符合中国用户的偏好。
售后服务响应慢:由于厂商主要关注全球市场,对中国市场的客户支持力度可能不足,售后响应速度慢,问题解决周期长。
价格昂贵:软件许可费用、实施费用、维护费用通常居高不下,对于大多数中小型外贸企业而言是一笔沉重的负担。

第二类:外贸垂直领域的外贸ERP软件

以富通天下为代表,这类外贸ERP软件以“外贸全流程管理”为特色,深度覆盖从客户开发到售后回款的全链路环节。是专门针对外贸行业的特点和需求而研发的,深耕外贸垂直领域,对业务理解深刻。

优点:高度贴合外贸业务:功能模块完全围绕外贸业务流程设计,从客户开发、询盘报价、订单管理、生产跟进、质检报关、物流运输到财务结算(特别是出口退税)、客户关系维护等,形成了一套完整的闭环管理体系。
深度本土化:充分理解中国外贸企业的实际运营环境和痛点,对中国的外贸政策、财税法规、海关监管等有深入的研究和精准的支持,确保企业合规运营。
操作便捷,易于上手:界面设计符合中国用户的操作习惯,功能针对性强,流程清晰,企业员工能够快速掌握和应用。
性价比高:相比国际性ERP,其价格更为亲民,且能提供更符合外贸企业实际需求的功能,投资回报率更高。
专业化的服务:提供从咨询、实施、培训到售后的全流程专业服务,服务团队熟悉外贸业务,能够快速响应并解决客户问题。

第三类:通用型ERP软件

以金蝶、用友为代表,原本主要为国内企业设计,虽然后续增加了外贸功能模块,但其核心架构并未针对外贸业务特点进行深度优化,通常是作为其众多模块中的一个附加部分。

优点:对于业务单一、外贸占比不高且管理要求不复杂的内贸企业可能有一定的适用性。
缺点:和外贸企业业务没有深度结合,功能泛而不精:虽然功能模块看似全面,但针对外贸行业的特殊需求(如多币种、多税率、复杂报关、信用证管理、海外仓储等)往往支持不够深入和专业,无法满足外贸业务的精细化管理要求。
外贸业务流程割裂:难以将外贸业务中的客户、订单、采购、库存、物流、财务等环节有机串联起来,导致业务流程不畅,数据不一致。
缺乏外贸行业特性功能:对于外贸企业至关重要的海外客户开发工具(如海关数据、邮件营销)、外贸单证自动生成与审核、出口退税精细化管理等核心功能要么缺失,要么功能薄弱,无法真正帮助外贸企业提升效率和竞争力。
实施效果不佳:由于缺乏对外贸业务的深刻理解,实施过程中难以提供针对性的指导和优化建议,导致系统上线后往往无法达到预期效果,甚至成为企业的负担。

三:结论

综上所述,在2026年的外贸市场竞争环境下,中国外贸企业选择ERP软件时,必须审慎考量。国际性外贸ERP虽有其先进性,但因水土不服和成本高昂,并非大多数中国本土企业的最佳选择;通用型ERP则因与外贸业务深度结合不足,难以满足专业化管理需求。

因此,中国外贸企业选择ERP,一定要选用外贸领域垂直性的外贸ERP,深度适合本土企业使用。以富通天下为代表的外贸垂直领域ERP,凭借其对外贸业务的深刻理解、深度的本土化适配、专业的功能设计以及高性价比的服务,能够真正帮助外贸企业实现业务流程的规范化、管理的精细化、决策的科学化,从而在激烈的国际竞争中立于不败之地,实现可持续发展。选择垂直化、本土化的外贸ERP,是中国外贸企业提升管理效能、驱动业务增长的明智之选。

最近无聊,博客一直闲着吃灰,于是想着发点什么东西

因为本来就有热榜站,但是热榜站几乎都是看实时热点,历史热点总结这块有点空白。

然后我就让 AI ,每天凌晨两点,把昨天全网的所有热点,按分类,进行总结分析预测,自动发博客出来,朋友们无聊闲了的时候,可以打开刷刷看

博客地址:blog.tgmeng.com

我能实现到的安全措施:
1.暂时修改 win 密码,随机按键盘,然后存到手机里...
2.开启 NLA
3.路由器可以通过华硕自带的 ddns 访问,临时开启/关闭端口转发

还有别的办法防止被人扫吗?

大家目前都用啥工具进行自动化测试?能够实现根据一个网址,以及一个用例 Excel 文件,进行输出自动化测试结果吗?

从这次飞牛 0day 这么恶劣的影响来看,在公网上开放服务真的是非常危险,尤其是碰到 0day 漏洞持续这么久不作为,更加重了影响。

我为了方便一些服务使用,比如 dokuwiki, mtphotos 以及自己用 docker 部署的一些小工具,都还是开放了公网的端口访问,采用 DDNS 。

目前我的方案是这样,即使服务原生还权限验证包括什么 2FA 啥的,我都把它们部署在内网提供 http 服务,然后自己部署了一套 caddy (之前是用 nginx)来提供 https 再加一层 basic auth 认证。

比如 dokuwiki 和 mtphotos ,他们本身都有用户名认证,但是我在外网需要访问的时,打开对应的端口时需要先输入外层的 basic auth 认证才会进入这些服务自己的登陆界面,再输入用户名密码。

这套方案是之前在公司部署 jira 和 confluence 时折腾出来的,老早部署了 jira 之后三天两头被网关发邮件说有漏洞,后来在外面套了一层 https+basic auth 之后就再也没被扫到过了。

按我的理解,这些漏洞不管怎么严重最终都是需要通过开放的端口来进行命令注入的,只要最外层的 https basic auth 不泄漏其实他们就进不去那些有漏洞的服务端口。

这个方案有两个缺点,一是每次需要输入两次认证,有些浏览器似乎会较长时间记住外层的 basic auth 比如 firefox 但是 safari 就需要每次都输入(不过只要网页不关闭就不需要重复输入);二是有些服务是占用了 http header 里的 auth 字段导致外层的 basic auth 和服务的用户认证冲突。

这里要表扬一下 mtphotos ,最早的时候 mtphotos 就是使用了 http header 里的 auth 字段来传输认证导致和我外层的 basic auth 冲突,后来在群里提出这种用户之后(虽然有其它用户不屑这种用法),作者很快就更新了认证机制,现在不管是网页打开 mtphotos 还是 app 连接 mtphotos 都支持这种双层认证。

不知道这种方案有没有其它缺陷? https 的 basic auth 应该是最简单粗暴,除了中间人攻击外应该不会有什么漏洞绕过吧?

一、 明确需求:选择适合的证书类型

商用SSL证书主要分为三类,请根据业务需求选择:

1. 域名验证型(DV)证书

  • 验证方式:仅验证域名所有权
  • 颁发速度:10分钟-2小时
  • 适用场景:测试环境、内部系统、基础官网
  • 显示效果:地址栏显示安全锁标志

2. 组织验证型(OV)证书

  • 验证方式:验证企业真实性(营业执照等)
  • 颁发速度:1-3个工作日
  • 适用场景:企业官网、政府机构、教育平台
  • 显示效果:证书详情中展示企业信息

3. 扩展验证型(EV)证书

  • 验证方式:最严格的企业身份验证
  • 颁发速度:3-7个工作日
  • 适用场景:金融平台、电商网站、大型企业
  • 显示效果:地址栏直接显示企业名称(绿色栏)

二、免费SSL证书申请入口(免费一年期的证书只针对特殊域名,申请前记得看看域名是否符合 )

打开JoySSL官网,注册时记得填写注册码230970,获取免费证书跟技术支持。

三、准备申请信息

域名信息:明确主域名及需保护的子域名。

组织信息(OV 和 EV 证书需要):包括组织法律注册名称、地址、电话号码等。

邮箱地址:用于接收验证邮件及证书相关通知。

四、域名所有权验证

证书颁发机构会要求您证明对域名的所有权,常见验证方式有:

文件验证:将特定验证文件上传至网站服务器指定目录。

DNS 验证:在域名的 DNS 配置中添加指定的 TXT 记录。

五、提交申请并等待审核

将准备好的申请信息及验证信息提交给选定的 CA,CA 会对申请进行审核。审核时间因证书类型和 CA 不同而异,DV 证书通常较快,几分钟到几小时不等;OV 和 EV 证书因涉及组织验证,可能需要 1 - 3 个工作日。

六、下载并安装证书

审核通过后,CA 会提供 SSL 证书文件。根据网站使用的服务器类型(如 Apache、Nginx、IIS 等),按照相应的安装指南将证书安装到服务器上。

七、验证证书是否生效

安装完成后,通过浏览器访问网站,查看地址栏是否显示安全锁标志,且网址以 “https://” 开头。也可使用在线 SSL 证书检测工具,进一步确认证书安装是否正确及网站的安全性。

引言
在数字化浪潮席卷全球的当下,网络已经深度融入人们生活的方方面面,从日常购物、在线支付到企业办公、远程协作,网络交互无处不在。然而,随着网络应用的日益广泛,网络安全问题也愈发凸显,网络诈骗、数据泄露等事件频发,严重威胁着用户的隐私和财产安全,也阻碍了网络经济的健康发展。在这样的背景下,如何确保网络交互的真实性和安全性成为了亟待解决的关键问题。OV SSL 证书作为一种重要的网络安全工具,凭借其权威的身份验证功能,为网络交互提供了可靠的安全保障,让用户能够更加放心地进行各种网络活动。

OV SSL 证书的基本概念
定义与原理
OV SSL 证书,即组织验证型 SSL 证书,是一种数字证书,用于在 Web 服务器和浏览器之间建立安全加密连接。它基于 SSL/TLS 协议,通过对网站所属组织进行严格的身份验证,确保网站的真实性和合法性。当用户访问一个使用了 OV SSL 证书的网站时,浏览器会与服务器进行一系列的握手过程,在这个过程中,服务器会向浏览器发送其 SSL 证书,浏览器会对证书进行验证,包括检查证书的有效期、颁发机构、是否被吊销等信息,同时还会验证证书中包含的组织信息是否与网站实际所属组织一致。如果验证通过,浏览器和服务器之间就会建立起安全的加密通道,后续的数据传输都将在这个通道中进行加密处理,防止数据被窃取或篡改。

与其他类型证书的区别
目前市场上常见的 SSL 证书主要有 DV(域名验证型)、OV(组织验证型)和 EV(扩展验证型)三种类型。DV SSL 证书的验证过程最为简单,只需验证域名的所有权,通常在几分钟内即可完成签发,但它的安全性相对较低,因为无法确认网站背后的实际组织。EV SSL 证书的验证最为严格,除了验证域名和组织信息外,还需要对组织的实际经营地址、联系方式等进行深入审核,审核时间较长,通常需要数天甚至数周,但它能够提供最高级别的信任保障,浏览器地址栏会显示绿色并显示组织名称。OV SSL 证书则介于两者之间,它既验证了域名所有权,又对组织信息进行了严格审核,包括组织的合法存续证明、营业执照等,能够在安全性和签发效率之间取得较好的平衡,适合大多数商业网站和企业应用。

OV SSL 证书的权威身份验证机制
严格的审核流程
OV SSL 证书的审核过程由专业的证书颁发机构(CA)负责,这些 CA 机构通常具有较高的权威性和公信力。审核流程一般包括以下几个步骤:

提交申请:网站所有者需要向 CA 机构提交证书申请,并提供相关的组织信息,如公司名称、注册地址、营业执照号码等。
域名验证:CA 机构会验证申请者对域名的所有权,通常通过发送验证邮件到域名注册邮箱或要求在网站根目录下放置特定的验证文件等方式进行。
组织验证:这是 OV SSL 证书审核的核心环节,CA 机构会对申请组织的合法性和真实性进行严格审核。他们会查阅公开的商业登记信息,如工商注册数据库、企业信用信息公示系统等,核实组织的名称、注册地址、法定代表人等信息是否与申请资料一致。同时,还可能要求申请者提供营业执照副本、组织机构代码证等证明文件的扫描件进行进一步验证。
人工审核:除了自动化的验证流程外,CA 机构还会安排专业的人工审核人员对申请资料进行仔细审查,确保所有信息的准确性和完整性。
验证内容的全面性
OV SSL 证书的验证内容不仅涵盖了域名和组织的基本信息,还可能包括组织的实际经营状况、业务范围等方面。例如,CA 机构可能会通过电话联系组织的注册地址,核实该地址是否真实存在以及是否为该组织的实际办公地点;还可能要求组织提供近期的财务报表或纳税证明,以验证其经营活动的合法性和稳定性。这种全面性的验证机制能够有效防止虚假组织或非法网站获得 OV SSL 证书,从而保障网络交互的真实性和安全性。

OV SSL 证书让网络交互更可信的具体体现
增强用户信任
当用户访问一个使用了 OV SSL 证书的网站时,浏览器地址栏会显示一个安全锁图标,点击该图标可以查看网站的证书信息,包括证书颁发机构、有效期以及网站所属组织的详细信息。这些信息能够让用户清楚地了解网站的真实身份,增强用户对网站的信任感。例如,用户在进行在线购物时,如果看到购物网站使用了 OV SSL 证书,就会更加放心地输入自己的个人信息和支付信息,因为他们知道该网站是经过权威机构验证的合法商家,不会轻易泄露自己的隐私或遭遇诈骗。

防止中间人攻击
中间人攻击是一种常见的网络安全威胁,攻击者通过拦截用户和服务器之间的通信,篡改或窃取数据,从而达到非法目的。OV SSL 证书通过建立安全的加密通道,能够有效防止中间人攻击。在握手过程中,浏览器和服务器会协商使用对称加密算法和密钥,后续的数据传输都使用这个密钥进行加密和解密。由于攻击者无法获取这个密钥,因此无法解密或篡改传输的数据,从而保障了网络交互的安全性。

符合行业合规要求
许多行业都对网络安全和数据保护有着严格的要求,如金融、医疗、电商等。使用 OV SSL 证书可以帮助企业满足这些行业的合规要求,避免因安全漏洞而面临的法律风险和罚款。例如,金融行业要求网站必须采用安全的加密技术保护用户的账户信息和交易数据,使用 OV SSL 证书能够证明网站符合这些安全标准,从而获得监管机构的认可和用户的信任。

实际应用案例分析
某电商平台的案例
某知名电商平台在发展过程中,面临着用户信任度不高、交易安全存在隐患等问题。为了解决这些问题,该平台决定引入 OV SSL 证书。在部署 OV SSL 证书后,用户在访问该平台时,浏览器地址栏显示安全锁图标,点击后可以查看平台的详细组织信息,这大大增强了用户对平台的信任感。同时,由于建立了安全的加密通道,用户的个人信息和支付信息在传输过程中得到了有效保护,防止了数据泄露和中间人攻击。实施 OV SSL 证书后,该平台的用户注册量和交易量都有了显著提升,用户满意度也大幅提高。

某金融机构的案例
某金融机构的网上银行系统对安全性要求极高,为了保障用户的资金安全和交易信息的保密性,该机构采用了 OV SSL 证书。在审核过程中,CA 机构对该金融机构的营业执照、金融许可证等证明文件进行了严格审核,确保其合法性和真实性。部署 OV SSL 证书后,用户在进行网上银行操作时,能够看到银行的安全标识和组织信息,放心地进行各种金融交易。同时,该证书还帮助该金融机构满足了监管机构对网络安全的要求,提升了企业的形象和竞争力。

结论
OV SSL 证书凭借其严格的审核流程和全面的验证内容,为网络交互提供了权威的身份验证,能够有效增强用户信任、防止中间人攻击、符合行业合规要求。在网络安全形势日益严峻的今天,OV SSL 证书已经成为企业保障网络安全、提升用户信任度的重要工具。无论是电商平台、金融机构还是其他各类商业网站,都应该积极引入 OV SSL 证书,为用户提供一个安全、可信的网络环境,推动网络经济的健康发展。同时,随着技术的不断进步和网络安全需求的不断提高,OV SSL 证书也将不断完善和发展,为网络交互的安全保驾护航。

        “这么开心嘛?”“这不是遇见你了嘛。”“真会说话!”她笑呵呵走进来,故事就这样开始了!她是个慢性子,说话很慢,动作也很慢,我们聊了一下双方基本信息,他被渣男渣了,来到了这里,曾经也是有一份有编制的工作,更多的细节我不方便过问,简单的安慰了下她。“你刚来这里么?”“嗯,三四天吧!刚才过来妆都没画好,我还想着就这样吧,不行就把我换了!”我心想这女孩怎么傻乎乎的。“后来怎么接受的?”“我也新手,刚开始接受不了,没办法慢慢适应了!在这边也没什么朋友,记得有一次下班太晚了,路上就我一个人,好孤独,然后低头看到了自己的影子,感觉更孤独了!”她说的挺让人心疼。“成年人的第一课,要适应孤独!”我也不知道怎么安慰她,只好岔开话题。“你看着好高,腿也好看!”“嗯,还行吧,你们男人真奇怪,怎么会有人喜欢腿呢?”“哈哈,男人很简单的,有时候女生无意的一个动作可能会让男生着迷,从而彻底喜欢上对方!”“这样呀,我刚到这还没买衣服,刚才还在看丝袜,你喜欢那种?黑的?还是黑红?还是白的?还是那种带吊带的那种,我还没穿过那种。”她在她腿上给我比划丝袜的样子,还挺可爱!“我都喜欢!”“选一个呢?”“黑的吧!”“回去我就下单,下次我穿给你看!”“真的?”我略微有些期待!“嗯,感觉你人好好,性格也好,你女朋友跟你在一起应该很幸福!”“哈哈,好男人还来这里啊,不过确实平时生活中不怎么生气,”我打趣道。“偶尔也要放松下嘛,你喜欢猫扑嘛?”“什么东西?”她顺势做了一个小猫蹭人的动作,胸蹭着我的胸膛趴在了我身上!这以前也体验过,第一次知道叫这个名字!“啊,这就是猫扑啊?”她锤了我一下!略带挑衅的说“你再装?”“我虽然被人这样弄过,但是真是第一次知道,这叫猫扑!学到了,倒是你刚才还说自己刚入行?”我逗她说到,她又锤了我一下!把头靠在我胸膛, “你跟别人不一样,趴在你身上好有安全感!想睡觉。”我有些诧异,因为这不是我遇到第一个这样说的!手不老实的搂住腰,摸着腿!“啊!?怎么都这样说”她呵呵一笑,俩人东一句西一句唠着!“你会采耳么?”“会呀!”“帮我采个耳吧!”她拿来工具,问我要不要消毒!我逗她“消不消毒无所谓,你真的学过采耳吧,这比较重要!”她听出我话里有话,笑呵呵叫我躺下。。。
        后面几天上班偶尔会想起这个单纯可爱的慢性子女孩,几天后又来到这个地方,等了一会她进来了,还是跟之前一样,笑呵呵的,“还记得我么?”“记得呀,本来心情不大好,看到你好高兴!”“还是那么会说话,真记得我?”“真的!”俩人有一句没一句的聊着,姑娘别看人瘦瘦的,力气还挺大!按的我还有点疼。“我买的衣服到了,要不要穿给你看?”“好呀!上次你就说要给我看的!”没想到她真记得,我还有点诧异!她把我手机丢给我,你玩会手机,等我一会!感觉过了好久,她推门进来!我以为她只换一下丝袜,怎么会这么久,没想到她换了一身,水手服加黑丝,然后手里还拿着另一个款式的丝袜,她的腿本来就很好看,配上这一身直接把我看呆了!“嘿嘿,怎么样!”“好看,我以为只是换个丝袜,没想到你换了一身,有点感动!”“我还带了一个,你看这个好看还是这个?”“都好看!”相视一笑~~~
        几天后又又来到这个地方,我正坐着看电视,她进来后直接抱住了我,还是之前一样笑呵呵的,“你来了,挺想你!”“真的嘛?”“嗯!”开始走流程,“你爱吃甜食么?吃过蝴蝶酥么?”她突然问道。“一般吧,之前吃过我平时吃甜的少!”“那你等我会儿。我去拿一下。”她起身离开,几分钟后她回来了。"朋友去国际饭店排队买的,好像在这边还挺受欢迎。"我以为给我拿一两个就够了,结果提了两个大袋子,里面有两小袋子蝴蝶酥,还有几个其它甜品,“你先尝尝,一会这两袋子你拿走,回去吃!”我有点感动!她又拿出几个其他甜品,我俩在哪边吃边聊!“我还是第一次在这里跟人一起吃东西!”她很开心的说!“哈哈,我也是!”两个人边吃边聊...我给她分享之前跑顺风车遇到得好玩得事情,他跟我分享她的经历,当时的感觉很奇妙,仿佛回到了中学的那个夏天~

漏洞主要问题

主要是通用 fn id 作为域名直接访问 fn nas 导致的。
可以通过扫描就可以知道哪些用户是开启 fn connect 的。

所以很早我就自己关闭了,然后使用 ss 翻墙回家。

如何解决

如果在保持现有的功能情况下的解决方案。

我觉得最好的是 fn id 域名, 都 cname 到一个 connect.fn.com 域名。
然后通过短信+账号密码验证登录,登录过了才可以直接访问 fn nas 。去掉 fn id 作为域名的方案。
在前面兜一层。