当前位置: 首页 > news >正文

如何制作家具网站东莞设计网站建设方案

如何制作家具网站,东莞设计网站建设方案,安居客二手房官网,抖音推广计划if [type] "tbl_api" 和 if [metadata][input][id] "jdbc_input_orders" 都是用于数据路由的常见模式,但它们在使用场景、语义清晰度和灵活性上有关键区别。 核心区别对比特性if [type] "tbl_api"if [metadata][input][id] "…

if [type] == "tbl_api"if [@metadata][input][id] == "jdbc_input_orders" 都是用于数据路由的常见模式,但它们在使用场景、语义清晰度和灵活性上有关键区别

核心区别对比

特性if [type] == "tbl_api"if [@metadata][input][id] == "jdbc_input_orders"
语义层级业务语义技术语义
定义内容“这是什么数据?” (e.g., 资产API数据、订单日志、用户行为)“数据从哪里来的?” (e.g., 来自jdbc_input_orders这个输入块)
字段位置普通字段,会出现在输出中元数据字段,不会出现在最终输出中
灵活性高。与输入源解耦,一个输入可以产生多种type低。与输入源强绑定。
可读性。看配置就知道在处理什么业务数据。。需要翻看input配置才知道jdbc_input_orders是什么。

在这里插入图片描述

详细解释与示例

1. 基于 type (业务语义路由)

这种方式关注的是数据本身的业务含义。一个输入源可以产生多种 type 的数据。

示例场景: 一个 JDBC 查询从一张大宽表中获取了多种类型的数据。

input {jdbc {jdbc_connection_string => "jdbc:mysql://..."statement => "SELECT asset_id, asset_name, type FROM assets" # 查询中包含一个`type`字段# 这里没有设置固定的type,因为type由数据内容决定}
}filter {# 根据数据库中`type`字段的值,为其设置Logstash的`type`标签if [type] == "server" {mutate { replace => { "type" => "tbl_api_server" } }} else if [type] == "network" {mutate { replace => { "type" => "tbl_api_network" } }}
}output {# 输出根据业务类型路由到不同的Topicif [type] == "asset_api_server" {kafka { topic_id => "topic-servers" ... }}if [type] == "asset_api_network" {kafka { topic_id => "topic-network-devices" ... }}
}

优点:非常灵活,逻辑基于业务数据本身,与输入源解耦。

2. 基于 [@metadata][input][id] (技术源路由)

这种方式关注的是数据的来源。它直接与 input 块中定义的 id 绑定。

示例场景: 多个独立的 JDBC 查询,每个查询对应一个特定的 Topic。

input {jdbc {id => "jdbc_input_orders" # 技术IDstatement => "SELECT * FROM orders ..."type => "any_type_here" # 这个type可能被忽略,因为output用input_id判断}jdbc {id => "jdbc_input_users" # 技术IDstatement => "SELECT * FROM users ..."}
}output {# 输出根据输入源的ID进行路由if [@metadata][input][id] == "jdbc_input_orders" {kafka { topic_id => "mysql-orders-topic" ... }}if [@metadata][input][id] == "jdbc_input_users" {kafka { topic_id => "mysql-users-topic" ... }}
}

优点:配置简单直接,适合一对一的场景(一个输入源对应一个输出目标)。不需要在 filter 中做任何处理。

应该如何选择?

  • 使用 if [type] == ...
    • 你希望根据数据的业务内容或属性来决定其去向。
    • 同一个输入源会产生多种需要区别对待的数据类型。
    • 你希望配置文件的可读性更高,让人一眼就知道在处理什么业务数据。
  • 使用 if [@metadata][input][id] == ...
    • 管道设计是一个输入源严格对应一个输出目标
    • 数据路由决策只依赖于数据来自哪个技术输入源,而不关心其具体内容。
    • 你不想在 filter 中做任何额外的处理来标记数据。

结论:对于配置 if [type] == "tbl_api",它表明路由决策是基于数据的业务类型(“资产API”)做出的。这是一种更高级、更灵活的做法,因为它将数据的来源(Input)和数据的含义(Type)以及数据的去向(Output)进行了清晰的解耦,使得管道设计更加面向业务和可维护。

http://www.dtcms.com/a/457585.html

相关文章:

  • 商丘做网站的电话怎样建网站最快
  • 安徽住房与城乡建设部网站网站登记备案 个人
  • 嵌入式开发--温度、湿度、气压传感器BME280
  • 基于ZYNQ FPGA+AI+ARM 的卷积神经网络加速器设计
  • 自助建站之星wordpress图片弹出
  • JavaScript-防抖与节流
  • 广西南宁网站建设哪家好网站调用微信数据
  • 专业手机网站建设公司排名wordpress the7打开速度慢
  • 做网站的主要作用设计师培训学费
  • 【大模型】DeepSeek-V3.2-Exp中的DSA稀疏注意力设计
  • Vue组件通信完整教程
  • 代码随想录 637.二叉树的层平均值
  • Spring前置准备(七)——DefaultListableBeanFactory
  • Linux 进程间通信——System V
  • 【Spring Boot】自定义starter
  • 微网站建设网络温州大军建设有限公司网站
  • 残差特征蒸馏网络(RFDN)探索札记:轻量化图像超分的突破
  • 一般做网站什么价格可以做公众号的网站
  • 优选算法---字符串
  • 任丘网站建设资料查询网站怎么做
  • 华为OD机试C卷 - 流量波峰 - 暴力搜索 - (Java C++ JavaScript Python)
  • 使用CSS3动画属性实现斜线动画 -- 弧线动画 -- 波纹动画 -- 点绕圆旋转动画 -- 浮动动画
  • 打工人日报#20251008
  • 手机网站触摸版萧山中兴建设有限公司网站
  • Python游戏开发入门:从零开始制作贪吃蛇小游戏
  • kanass入门到实战(11) - Kanass如何有效集成sward文档
  • 尚硅谷SpringBoot3零基础教程,课程介绍,笔记01
  • 51网站统计德州网站建设的公司
  • C++23 高级编程 Professional C++, Sixth Edition(一)
  • Verilog和FPGA的自学笔记3——仿真文件Testbench的编写