jaeger 使用scylladb作为后端存储
scylladb 是一个不错的apache Cassandra 替代,而且兼容很不错,今天在尝试过yugabyte 之后放弃了,因为在进行jaeger 创建
Cassandra schema 的时候碰到各种问题(可能兼容还是少有问题),试用之后发现很不错,没有碰到错误,以下是一个演示环境
使用了docker-compose 运行
环境准备
- docker-compose 文件
version: "3"
services:
scylladb:
image: scylladb/scylla
ports:
- "9042:9042"
scylladb2:
image: scylladb/scylla
command: --seeds=scylladb
ports:
- "9043:9042"
scylladb3:
image: scylladb/scylla
command: --seeds=scylladb
ports:
- "9044:9042"
jaeger:
image: jaegertracing/all-in-one:1.13
environment:
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
- CASSANDRA_SERVERS=scylladb,scylladb2,scylladb3
- SPAN_STORAGE_TYPE=cassandra
ports:
- "9411:9411"
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "16686:16686"
- 简单说明
以上是一个简单的scylladb 集群环境,三个节点,同时使用了jaeger 的all-in-one,对于大规模的请求依赖处理的方式还是
推荐基于spark 等大数据的方式,会加快数据的生成
测试项目
- nodejs 项目
从github clone 了一个简单的nodejs 项目,尽管有点问题,但是不影响测试
git clone https://github.com/luoyjx/opentracing-demos.git
- 启动docker-compose
docker-compose up -d
- 创建schema
需要clone jaeger 项目,同时需要配置本地cqlsh 工具
git clone https://github.com/jaegertracing/jaeger.git
cd jaeger
MODE=test sh ./plugin/storage/cassandra/schema/create.sh | cqlsh
- 重启jaeger
docker-compose restart jaeger
- nodejs 启动
方式很简单,进入服务目录 yarn 以及node <startscript>
效果
- jaeger ui
- 注册的service
nodejs 应用
- 一个简单的请求链路
- 服务依赖
说明
以上是一个简单的测试集成,实际生产使用还有好多事情需要做
参考资料
https://docs.scylladb.com/
https://www.jaegertracing.io/docs/1.13/architecture/
https://github.com/rongfengliang/scylladb-jaeger