Iawen's Blog

我喜欢这样自由的随手涂鸦, 因为我喜欢风......

RudderStack 是一个独立的、独立的系统, 仅依赖于数据库(PostgreSQL)。它的后端是用 Go 编写的, 具有用 React.js 编写的丰富 UI。作为领先的开源客户数据平台(CDP), RudderStack提供数据管道, 可以轻松地从每个应用程序、网站和 SaaS 平台收集数据, 然后在您的仓库和业务工具中激活它。

使用 RudderStack, 您可以构建连接整个客户数据堆栈的客户数据管道, 然后根据数据仓库中的分析触发客户工具中的丰富和激活, 从而使它们更智能。它是易于使用的 SDK 和事件源集成、Cloud Extract 集成、转换以及扩展的目标和仓库集成库, 使得为事件流和云到仓库 ELT 构建客户数据管道变得简单。

RudderStack 架构如下所示: 0

1. RudderStack 简介

RudderStack 是第一个开源客户数据基础设施平台, 是 Segment 或 mParticle 等产品的替代品。客户数据平台可以在客户云环境中的数据仓库之上运行, 并提供强大的转换框架来实时处理、过滤和丰富客户数据。 已经被 Wynn Casino、Grofers、1mg、Mattermost、Nana、IFTTT、BarStool Sports 等一些知名客户以及数百名开源用户使用。 分析集成商转为开发者设计的智能客户数据管道

1.1 主要特征

  • Warehouse-first: RudderStack 将您的数据仓库视为目的地中的一等公民, 具有高级功能和可配置的近实时同步
  • 以开发人员为中心: RudderStack 是 API 优先构建的。它与开发人员已经使用和喜爱的工具无缝集成
  • 高可用性: RudderStack 具有至少 99.99% 的正常运行时间。我们已经建立了一个复杂的错误处理和重试系统, 即使在网络分区或目的地停机的情况下, 也能确保您的数据能够被传递
  • 隐私和安全: 您可以收集和存储您的客户数据, 而无需将所有内容发送给第三方供应商。使用 RudderStack, 您可以精细控制将哪些数据转发到哪个分析工具
  • 无限事件: 大多数商业系统的基于事件量的定价被打破。使用 RudderStack, 您可以收集尽可能多的数据, 而不必担心超出您的活动预算
  • Segment API 兼容: RudderStack 与 Segment API 完全兼容。因此, 如果您使用 Segment, 则无需更改您的应用; 只需将 RudderStack SDK 集成到您的应用程序中, 您的事件就会像以前一样继续流向目的地(包括数据仓库)
  • Production-ready: Mattermost、IFTTT、Torpedo、Grofers、1mg、Nana、OnceHub 等公司和数十家大公司使用 RudderStack 来收集他们的事件
  • 无缝集成: RudderStack 目前支持与 90 多个流行的工具和仓库目的地集成
  • 用户指定的转换: RudderStack 提供了一个强大的基于 JavaScript 的事件转换框架, 可让您通过将事件数据与其他内部数据相结合来增强或转换事件数据。

此外, 由于 RudderStack 在云或本地环境中运行, 可以轻松访问生产数据以加入事件数据。

1.2 SDK 支持

  • JavaScript SDK
  • Android SDK
  • iOS SDK
  • Flutter SDK

1.3 RudderStack 自身的监控

RudderStack 自身的性能监控依赖于 statsd

2 RudderStack 的架构

2.1 控制平面

控制平面提供直观的 UI 来配置您的事件数据源和目标。它包括:

  • RudderStack Web App: 这是一个前端应用程序, 可让您在 RudderStack 中设置数据管道。
  • 配置后端: 配置后端为您提供配置事件数据源、目标和连接的选项。

2.1.1 部署控制平面

自托管控制平面: 使用Control Plane Lite设置的Control Plane缺少某些功能, 例如转换实时事件选项卡, 部署步骤:

# src/components/sourcesCatalogue/sourcesConfigure/ 目录有几个文件名大小写有误,  如: BQ.md MSSQL.md RS.md
npm install
npm start

2.2 数据平面

数据平面是 RudderStack 的核心引擎, 负责:

  • 接收和缓冲事件数据
  • 以所需的目标格式转换事件
  • 将事件中继到目的地

2.2.1 数据平面架构

RudderStack 的数据平面负责接收、转换和路由事件数据到目的地。为此, 它从包括网站、移动应用程序、服务器端应用程序、云应用程序和数据仓库在内的源接收事件数据。

RudderStack 数据平面架构的简化版本如下所示: 1

2.2.2 设置数据平面架构

使用 Control Plane Lite 来生成workspaceConfig.json文件.

2.2.3 数据平面工作流

RudderStack 后端工作流程在以下步骤中有详细说明:

    1. 网关从源接收事件
    1. 然后网关:
    • A) 将事件数据存储到路由器数据库(PostgreSQL)
    • B) 发送一个HTTP 200状态确认接收到数据
    1. 处理器从网关中挑选数据并将事件数据转发到转换模块
    1. 转换模块转换事件并将其发送回处理器
    1. 一旦事件被转换并发送到路由器, 它就会从网关存储中删除
    1. 然后路由器:
    • A) 将转换后的事件数据转发到所需的目的地
    • B) 将信息存储在数据库中的单独表中
    1. 一旦转换后的数据到达目的地, 路由器数据库中的事件数据就会被路由器删除。 2

2.2.4 部署数据平面

要在 Docker 环境中设置 RudderStack 数据平面, 请执行以下步骤:

  • 下载rudder-docker.yml docker-compose文件
  • 调整 rudder-docker.yml 文件
      - RSERVER_BACKEND_CONFIG_CONFIG_FROM_FILE=true
      - RSERVER_BACKEND_CONFIG_CONFIG_JSONPATH=/etc/rudderstack/workspaceConfig.json
    volumes:
       - /etc/rudderstack/workspaceConfig.json:/etc/rudderstack/workspaceConfig.json

然后运行:

docker-compose -f rudder-docker.yml up


# 成功执行上述步骤后, 发送测试事件以验证安装: 
git clone https://github.com/rudderlabs/rudder-server.git
cd rudder-server
./scripts/generate-event <YOUR_WRITE_KEY> https://localhost:8080/v1/batch

2.2.4 事件类型

2.2.4 API 接口

identify

2.3 Transformation 转型

RudderStack 的转换模块将接收到的事件数据转换为合适的目的地特定格式。所有的转换代码都是用 JavaScript 编写的。

RudderStack 还支持实时操作的用户特定转换, 例如聚合、过滤和采样。

3. 注意事项

  • Redis destination only processes identify API calls. Other event types are ignored.

4. 竞争对手

客户数据平台, 例如 Segment 和 mParticle。

RudderStack在三个方面与众不同:

  • 开放的客户数据平台: 不要将您的数据锁定在第 3 方系统中
  • 隐私和安全焦点: 您不必与第 3 方共享您的数据
  • 开发人员友好的定价模型: 您不受 MTU 或事件的约束。

Segment 是 SaaS 供应商, 而 RudderStack 是开源产品, 但提供托管产品。 按用户细分价格, 而 RudderStack 按节点价格。