用docker+ES+kafka搭建用户行为数据收集系统
github地址
https://github.com/pascallin/user-behavior-docker
架构
架构图
说明
- WebServic-e- Route:接受提交数据路由
- Kafka REST:用RESTful接口控制kafka的服务
- Schema Registry:Avro格式数据转换服务(Avro是另一种JSON数据的表达)
- Kafka:Kafka队列服务
- ES Connector:一个监听kafka数据并将数据连接到Elasticsearch的服务,数据进出connecter会有对应的converter做数据转换
- Elasticsearch:Elasticsearch数据库
- UBhavior RPC Service:用户行为底层数据业务的RPC服务
创建目录结构和文件
创建下面的目录结构和文件
/usr/docker
|- confluent
|- docker-compose.yml
|- kafka-data
|- ...
|- schema-registry
|- connect-avro-standalone.properties
|- kafka-connect-elasticsearch
|- quickstart-elasticsearch.properties
|- elastic
|- docker-compose.yml
|- config
|- elasticsearch.yml
|- log4j2.properties
|- scripts
|- ...
|- esdata
|- ...
Docker部署
network
部署分为Elasticsearch和Confluent两个docker compose服务,默认每个docker compose服务会开一个默认的网络。这里的Confluent的ES Connect需要将数据推到不同docker compose服务的ES容器,不同docker compose服务网络连接可以创建一个外部network打通。
首先创建一个docker network
//查看所有network
docker network ls
//创建一个network
docker network create --driver bridge dev3network
//查看所有network
docker network ls
Elasticsearch
docker-compose.yml
version: '3'
services:
elasticsearch:
hostname: elasticsearch
image: "elasticsearch:5"
command: "elasticsearch -Enode.name='user-behavior'"
volumes:
- /usr/docker/elastic/esdata:/usr/share/elasticsearch/data
- /usr/docker/elastic/config:/usr/share/elasticsearch/config
ports:
-