#ip #task #rlink #cmdb #appuk #ip-mapping

cmdb-ip-mapping

从 cmdb 通过 IP 在 rlink 任务中获取 appuk

10 个版本 (4 个破坏性更新)

0.6.4 2021 年 8 月 24 日
0.6.3 2021 年 8 月 19 日
0.5.0 2021 年 6 月 17 日
0.3.0 2021 年 5 月 7 日
0.1.1 2021 年 4 月 14 日

#163 in #ip

每月下载量 29

MIT/Apache

13KB
229 代码行

cmdb-ip-mapping

Crates.io Released API docs MIT licensed License

依赖 rlink。在 rlink 任务中通过 IP 从 cmdb 获取 appuk。

示例

[dependencies]
cmdb-ip-mapping = "0.1"
        let ip = "10.99.5.49";
        let ip_mapping_url = "http://ipappukmapping.17usoft.com/mapping/all";

        load_ip_mapping_task(ip_mapping_url);

        let option = get_ip_mapping_config(ip);
        assert!(option.is_some());
        assert!(option.unwrap().app_uk.eq("dssteamyyjk.java.ip.appuk.mapping"))

lib.rs:

cmdb-ip-mapping

一个库,用于在 rlink 任务中通过 IP 从 cmdb 获取 appUk。

示例

通过 IP 获取 appUk

use cmdb_ip_mapping::ip_mapping_config::{load_ip_mapping_task, get_ip_mapping_config};

let ip = "test_ip";
let ip_mapping_url = "test_mapping_url";

load_ip_mapping_task(ip_mapping_url);

let vec = get_ip_mapping_config(ip);
let item = vec.unwrap().get(0).unwrap().clone();
assert!(item.group_environment.as_ref().unwrap().eq("qa"))

消费 ip-mapping 增量变更

use std::collections::HashMap;
use cmdb_ip_mapping::ip_mapping_connect::IpMappingCoProcessFunction;
use rlink_connector_kafka::{BOOTSTRAP_SERVERS, GROUP_ID, create_input_format, InputFormatBuilder};
use rlink::functions::flat_map::BroadcastFlagMapFunction;
use rlink::core::element::types;

pub const FIELD_TYPE: [u8; 2] = [
    // 0: timestamp
    types::U64,
    // 1: app_id
    types::STRING,
];
pub const FIELD_NAME: [&'static str; 2] = [
    // 0: timestamp
    "timestamp",
    // 1: app_id
    "app_id",
];
pub const FIELD_METADATA: FieldMetadata<53> = FieldMetadata::new(&FIELD_TYPE, &FIELD_NAME);

let ip_mapping_input_format = {
    let mut conf_map = HashMap::new();
    conf_map.insert(BOOTSTRAP_SERVERS.to_string(), ip_mapping_kafka_servers);
    conf_map.insert(GROUP_ID.to_string(), ip_mapping_group_id);
    InputFormatBuilder::new(conf_map, vec![ip_mapping_kafka_topic], None).build()
};

let ip_mapping_stream = env
    .register_source(ip_mapping_input_format, 1)
    .flat_map(BroadcastFlagMapFunction::new());

data_stream
    .connect(
         vec![CoStream::from(ip_mapping_stream)],
         IpMappingCoProcessFunction::new(FnSchema::from(&FIELD_METADATA)),
    )

依赖项

~38–52MB
~857K SLoC