前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTBkit 精准营销系统部署

RTBkit 精准营销系统部署

作者头像
机械视角
发布2019-10-23 11:11:43
1.1K0
发布2019-10-23 11:11:43
举报
文章被收录于专栏:Tensorbytes

背景

项目地址: https://github.com/rtbkit/rtbkit/wiki/What-is-RTBkit%3F

RTBkit是一个开源软件包,通过将问题分解为明确定义的组件,可以完成创建实时广告投放的大部分困难的工程工作。其开放的、面向服务的架构可用于满足简单或者复杂的投放需求。RTBkit可以通过自定义配置文件或者开发接口的形式进行策略制定和扩展。

RTBkit架构

部署准备

操作系统:ubuntu:14.04.1

安装RTBkit:

代码语言:javascript
复制
apt-get -y update


apt-get install -y linux-tools-generic libbz2-dev python-dev scons unzip\
                       libtool liblzma-dev libblas-dev make automake \
                       ccache ant openjdk-7-jdk libcppunit-dev doxygen \
                       libcrypto++-dev libACE-dev gfortran liblapack-dev \
                       libevent-dev libssh2-1-dev libicu-dev libv8-dev \
                       g++ google-perftools libgoogle-perftools-dev \
                       zlib1g-dev git pkg-config valgrind autoconf \
                       libcurl4-openssl-dev cmake libsigc++-2.0-dev


mkdir -p $HOME/local/bin
PATH="$HOME/local/bin:$PATH"
 
mkdir -p $HOME/local/lib
export LD_LIBRARY_PATH="$HOME/local/lib:$LD_LIBRARY_PATH"
 
export PKG_CONFIG_PATH="$HOME/local/lib/pkgconfig/:$HOME/local/lib/pkg-config/"

source ~/.profile

env | grep PATH

git clone https://github.com/rtbkit/rtbkit-deps.git

cd rtbkit-deps

sed -i 's/git@github.com:/https:\/\/github.com\//g' .gitmodules

git submodule update --init

make all NODEJS_ENABLED=0

export PATH=/root/local/bin:$PATH

cd /

git clone https://github.com/rtbkit/rtbkit.git

cd rtbkit

cp jml-build/sample.local.mk local.mk

make compile NODEJS_ENABLED=0

export LD_LIBRARY_PATH='/root/local/share;/root/local/lib'

构建基于docker的服务

zookeeper集群服务

使用 docker-compose 来启动 ZK 集群,创建一个名为 docker-compose.yml 的文件:

代码语言:javascript
复制
version: '3'
services:
    zook1:
        image: zookeeper
        restart: always
        container_name: zk1
        networks:
            - rtbkit-network
        ports:
            - "2181:2181"
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888

    zook2:
        image: zookeeper
        restart: always
        container_name: zk2
        networks:
            - rtbkit-network
        ports:
            - "2182:2181"
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888

    zook3:
        image: zookeeper
        restart: always
        container_name: zk3
        networks:
            - rtbkit-network
        ports:
            - "2183:2181"
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
    
    redis:
        image: daocloud.io/library/redis:3.2.9
        restart: always
        container_name: redis02
        networks:
            - rtbkit-network
        ports:
            - "16379:6379"
        volumes:
            - "/home/dataspark/rtbcode/rtbkit/rtbkit/sample.redis.conf:/usr/local/etc/redis/redis.conf"
    
    Graphite:
        image: graphiteapp/graphite-statsd
        restart: always
        container_name: graphite_test
        networks:
            - rtbkit-network
        ports:
            - "6080:80"
            - "8003-8004:2003-2004"
            - "8023-8024:2023-2024"
            - "14125:8125/udp"
            - "14126:8126"
    
networks:
    rtbkit-network:
        driver: bridge

ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 集群需要设置的两个环境变量, 其中 ZOO_MY_ID 表示 ZK 服务的 id, 它是1-255 之间的整数, 必须在集群中唯一. ZOO_SERVERS 是ZK 集群的主机列表.server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

运行docker compose: COMPOSE_PROJECT_NAME=rtbkit_cluster docker-compose -f rtbkit-compose.yml up -d

docker compose 会创建一个新的网桥rtbkit_cluster_default

修改sample.bootstrap.json文件中的zookeeper端口配置

代码语言:javascript
复制
"zookeeper-user":"localhost:2181"
改为
"zookeeper-user":"zk1:2181,zk2:2181,zk3:2181",

Graphite

docker run -d \ –name graphite \ –restart=always \ -p 5080:80 \ -p 7003-7004:2003-2004 \ -p 7023-7024:2023-2024 \ -p 13125:8125/udp \ -p 13126:8126 \ graphiteapp/graphite-statsd

修改sample.bootstrap.json文件中的carbon端口配置

代码语言:javascript
复制
"carbon-uri": ["carbon1.kittens.org:2003", "carbonA.kittens.org:2003"]
改为
"carbon-uri": ["graphite:2003"]

redis服务

docker run -p 6379:6379 -v /home/dataspark/rtbcode/rtbkit/rtbkit/sample.redis.conf:/usr/local/etc/redis/redis.conf –name redis01 -d daocloud.io/library/redis:3.2.9 redis-server /usr/local/etc/redis/redis.conf

修改rtbkit/sample.launch.json里面的’banker’ 将其参数”-B”, “rtbkit/sample.bootstrap.json”, “-r”, “localhost:6379” 改为 “redis02:6379”

启动主服务rtbkit

docker run -it –name rtbkit01 –link graphite:graphite –link redis01:redis -p 5212:22 rtbkit bash

./build/x86_64/bin/launcher –node localhost –script ./launch.sh –bin ./build/x86_64/bin –launch rtbkit/sample.launch.json

Banker模块的JSON API说明

GET /

类似于help命令,用法:curl http://localhost:9985/

GET /ping

检查Banker服务是否对HTTP有效,有效返回“pong”

GET /v1/accounts

获取用户账号信息,如果没有参数默认返回全部,后面参数可以跟maxDepthaccountPrefix。 maxDepth: an integer describing the maximum length at which keys will be sought (default: unlimited) accountPrefix: a string that specifies the prefix against which the returned account names will be matched

POST /v1/accounts

POST为创建用户。后面参数跟accountTypeaccountName

GET /v1/accounts/

返回指定用户的信息

POST,PUT /v1/accounts//balance

从父账号转换预算给子账号以平衡请求数量 参数为accountType,POST内容为”{ “USD/1M”: 金额 }” body: The body for that command must contain an amount encoded in a JSON Object. For example:: “{ “USD/1M”: 123456 }” (123456 micro USD)

parameters: accountType: If the account does not exist, this parameter defines the type of account to be created (“spend” or “budget”)

POST,PUT /v1/accounts//budget

通过请求为用户设置预算金额,只允许为顶级账户设置。 POST内容为 “{ “USD/1M”: 金额 }” ,表示加入XX美元。 用法:curl http://localhost:9985/v1/accounts/hello/budget -d ‘{ “USD/1M”: 123456789 }’

GET /v1/accounts//children

返回指定账户的子账号列表。参数为depth表示返回深度,默认为不限。(效果未知)

POST,PUT /v1/accounts//shadow

更新响应的支付账号的spend和commitment body: The body for that command must contain a representation of the shadow account in JSON.

GET /v1/accounts//subtree

返回指定账号和其子账号的属性表示。参数为depth表示返回深度,默认为不限。

GET /v1/accounts//close

关闭一个账号和其所有子账号。

GET /v1/accounts//summary

账号的汇总信息

GET /v1/summary

所有账号的汇总信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • RTBkit架构
    • 部署准备
    • 构建基于docker的服务
    • Banker模块的JSON API说明
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档