Castled 源码解析 一 整体介绍
以前我大概介绍过Castled ,后边为了方便学习以及共享,会整体介绍Castled 项目
代码包结构
Castled 是基于java 开发使用maven 进行包管理的,所以整体就是一个标准的maven多模块项目
- 代码结构
├── CODE_OF_CONDUCT.md
├── LICENSE.md
├── README.md
├── commons // 公共模块,包含的东西不少,比如cache,form 处理,castled 队列定义,异常,schema,model,kafka 发布订阅,jdbi 公共,还有一些工具类
├── connectors // 这个是一个核心,包含了app管理(外部集成的)jdbc 连接管理,oauth 认证的,warehouse 集成处理的(此处是核心,基于poll模式支持了增量以及全量模式),当然还支持tunnel模式(ssh)
├── container // 属于Castled backend 的核心,主要包含了app管理,pipeline 管理,以及kafka 消息发送,对于不同的resource 提供了不少rest api,主要方便web app 使用,同时还提供了db 的migration 操作(基于Flyway)
├── docker-compose.build.yaml // 容器镜像构建的
├── docker-compose.yaml // 本地环境运行
├── docs // 官方文档,目前比较少
├── jarvis // 主要提供了quartz 的一些包装,方便任务调度的执行
├── kube // k8s 运行的
├── pom.xml
├── tools
└── webapp // web 前端,Castled 属于典型的前后端分离项目,但是如果从开发来说,直接放到app中管理起来会更加方便的,比如dremio 的做法(java 项目比较喜欢集成一起)
整体参考架构
下图是一个简单的说明,细节我们后边会介绍
构建
构建还是比较简单的,可以直接本地构建,然后使用docker-compose -f docker-compose.build.yaml 构建镜像
运行
docker-compose up -d
说明
以上支持简单的说明Castled 项目代码结构以及整体运行,后边会从每个模块的代码说明具体的运行机制以及我们如何扩展Castled