lib-common

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

README

🚀 High-Performance Crawling Infrastructure (Go)

这是一个专为 分布式爬虫大规模数据采集 设计的 Go 语言底层库。它不仅提供了微服务的通用能力,更针对爬虫开发中的痛点(如封禁规避、海量数据去重、解析性能)进行了深度封装。

🛠 为什么选择这个库进行爬虫开发?

1. 工业级请求封装 (xhttp)
  • 动态代理支持:支持为每个请求独立注入 Proxy URL,轻松应对 IP 封禁。
  • 内置限流拦截:支持注入自定义限流器(Limiter),在发起请求前进行裁决,防止因抓取频率过快被拉黑。
  • 浏览器环境模拟:底层基于 req/v3,支持自动模拟 Chrome 指纹,降低被反爬识别的风险。
2. 极速指纹去重 (xhash & xredis)
  • xxHash 高性能哈希:使用 xxhash 算法,以极低的 CPU 开销为海量 URL 或内容生成唯一指纹。
  • 分布式防重网关:封装了 Redis SET NX 原子操作,确保在多节点并发抓取时,同一条数据绝不重复处理。
3. 海量数据按需解析 (xjson)
  • AST 定点清除:基于 sonic 的 AST(抽象语法树)解析能力。面对数万行的复杂响应,无需定义全量结构体,即可直接“抠”出目标字段,内存分配减少 80% 以上。
4. 分布式任务分发 (xnats)
  • Key-Only 传输模型:推荐将原始数据存入 Redis,通过 NATS 仅传递 Key。这种设计能保证消息队列在每秒万级消息下的极低延迟,避免大数据包阻塞总线。

🏗 分布式采集流程架构

sequenceDiagram
    autonumber
    participant E as 外部 API
    participant P as 生成器 (Producer)
    participant R as Redis (Cache)
    participant N as NATS (Bus)
    participant C as 消费者 (Consumer)
    participant DB as 数据库 (DB)
    participant Pub as 推送器 (Publisher)

    C->>N: 订阅原始消息队列
    Pub->>N: 订阅清洗后队列

    P->>E: 发起请求
    E-->>P: 返回 JSON 数据

    P->>R: 存入原始数据 (带 TTL)
    R-->>P: 写入成功

    P->>N: 发送 NATS 消息 (含 Redis Key)
    N->>C: 推送消息

    C->>R: 根据 Key 取回完整 JSON
    R-->>C: 返回数据

    C->>DB: 核心业务落库 (持久化)
    DB-->>C: 落库成功

    C->>R: 写入最新状态缓存
    C->>N: 发布变更事件
    N->>Pub: 获得事件
    Note over Pub: WebSocket / Webhook 推送

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL