Java Client Of Apache Atlas

一、问题描述

公司数据中台要重构,一共由两个理念,“元数据驱动”和“可插拔式部署服务”。本文侧重点是“元数据驱动”,技术选型使用Apache Atlas(以下简称为Atlas)元数据治理平台。
注意: 本文非Atlas教学,官方文档戳这里       元数据概念戳这里

二、解决思路

目前只是把Atlas当做一个元数据存储的平台,用于存储和展示相关元数据信息;数据中台元数据平台页面需要对接业务服务,该服务需要业务封装Atlas,与Atlas进行数据交互。经过一番查阅学习后,记录一下Atlas Java Client的使用。

三、解决方案

3.1 准备工作

3.1.1 引入Atlas pom依赖

<!-- Apache Atlas -->
<dependency>
     <groupId>org.apache.atlas</groupId>
     <artifactId>atlas-client-common</artifactId>
     <version>2.1.0</version>
 </dependency>
 <dependency>
     <groupId>org.apache.atlas</groupId>
     <artifactId>atlas-common</artifactId>
     <version>2.1.0</version>
 </dependency>
 <!-- Apache Atlas Client  Version1 -->
 <dependency>
     <groupId>org.apache.atlas</groupId>
     <artifactId>atlas-client-v1</artifactId>
     <version>2.1.0</version>
 </dependency>
<!-- Apache Atlas Client  Version2 -->
 <dependency>
     <groupId>org.apache.atlas</groupId>
     <artifactId>atlas-client-v2</artifactId>
     <version>2.1.0</version>
 </dependency>

说明:
1)client-v1和client-v2个人感觉差距不是特别明显,但是v1会提示已过时,而且v2有些api更友好,二选一即可
2)注意自己安装的Atlas版本和pom的版本

3.1.2 新建Atlas配置文件

在resources目录下新建一个atlas-application.properties文件,内容如下:
在这里插入图片描述

atlas.hook.demo.kafka.retries=1
atlas.kafka.auto.commit.interval.ms=1000
atlas.kafka.bootstrap.servers=kafkaIp:kafkaPort
atlas.kafka.hook.group.id=atlas
atlas.kafka.zookeeper.connect=zookeeperIp:zookeeperPort
atlas.kafka.zookeeper.connection.timeout.ms=2000
atlas.kafka.zookeeper.session.timeout.ms=4000
atlas.kafka.zookeeper.sync.time.ms=200
atlas.rest.address=atlasIp:atlasPort

说明:
1)配置文件名称和格式固定为atlas-application.properties
2)配置属性不知道有什么用,但是必须要有这个文件

3.2 代码开发

3.2.1 Atlas Client 初始化

在这里插入图片描述
说明:
1)AtlasClient只能手动初始化,不能使用DI;
2)AtlasClient构造函数第一个参数为Atlas的ip和port,第二个参数为登陆用户的账号密码;

3.2.2 查询API测试

3.2.2.1 clientV1全查type
 @PostMapping("/listTypeV1")
 @ApiOperation(value = "listTypeV1", notes = "测试TypeV1")
 public Result<?> listTypeV1() throws AtlasServiceException {
     List<String> listTypes = atlasClient.listTypes();
     System.out.println("all type size -> method :"+listTypes.size());

     JSONObject jsonObject = atlasClient.callAPI(AtlasClient.API_V1.LIST_TYPES, JSONObject.class, null);
     System.out.println("all type size -> callAPI :"+jsonObject.getString("count"));

     return ResultGenerator.genSuccessResult(listTypes.size());
 }

在这里插入图片描述

3.2.2.1 clientV2查询
@PostMapping("/listTypeV2")
@ApiOperation(value = "listTypeV2", notes = "测试TypeV2")
 public Result<?> listTypeV2() throws AtlasServiceException {
     MultivaluedMapImpl paramMap = new MultivaluedMapImpl();
     paramMap.add("type","entity");

     SearchFilter searchFilter = new SearchFilter(paramMap);
     AtlasTypesDef allTypeDefs = atlasClientV2.getAllTypeDefs(searchFilter);

     JSONObject jsonObject = atlasClientV2.callAPI(AtlasClientV2.API_V2.GET_ALL_TYPE_DEFS, JSONObject.class, paramMap);
     return ResultGenerator.genSuccessResult();
 }

结果比对:
在这里插入图片描述
在这里插入图片描述
说明:
1)目前来说,clientV2相关api处理更灵活一些,比如入参合并、返回值处理等;
2)client增删改等方法,都可以用callAPI代替,因为相应方法底层调用的就是callAPI;

3.3 非Java Client方式调用

这种方式可以不需要pom依赖,只需要通HttpClient请求即可,但是稍微复杂一点,不建议。大致概括下:
1)需要携带登陆后的token请求接口,否则认证不通过,这个token需要调用登陆接口获取
以admin UI页面为例:
①登录时,会定义好相关的token信息
在这里插入图片描述
②后续请求都会携带Cookie,相当于token
在这里插入图片描述
③token格式规则,目前没有深究。本来的准备通过REST API和Atlas交互的,但是后来发现有Java Client就没深究了,有兴趣的大佬们可以试一试是否任意格式都可,还是为某种固定规则
④不建议采用非Java Client的方式是因为,需要考虑token的过期处理情况等
2)通过HttpClient调用REST API,携带相关参数;

3.4 Admin UI使用

Atlas Admin UI查询界面使用

特别说明
在这里插入图片描述
create new entity只能选择hdfs_path这个entity type的原因

四、小结

1)本文重点更侧重于Atlas Client的环境搭建,至于其他api就靠各位大佬自行摸索了;
2)后续有空会把数据中台,“元数据驱动”补充完,如中台的元数据平台如何设计等;

萌新发言,不喜勿喷,欢迎大佬指出不当之处

Spring Boot集成Apache Atlas主要是为了在微服务架构中实现服务发现、元数据管理和图数据库的操作。Apache Atlas是一个企业级的服务发现和元数据管理平台,它提供了一种集中式的解决方案,用于跟踪云环境中的服务、数据资产和依赖关系。 以下是Spring Boot集成Apache Atlas的基本步骤: 1. **添加依赖**:在你的`pom.xml`文件中添加Atlas的Maven依赖,通常是通过Atlas的RESTful API客户端库。 ```xml <dependency> <groupId>com.atlasmap</groupId> <artifactId>atlas-rest-client</artifactId> <version>your_atlas_version</version> </dependency> ``` 2. **配置连接信息**:在应用启动时,需要设置Apache Atlas服务器的URL、用户名和密码等信息,通常放在application.properties或application.yml文件中。 ```properties atlas.rest.url=http://your_atlas_host:port/atlas/v2 atlas.username=your_username atlas.password=your_password ``` 3. **创建Atlas实例**:在Spring Boot的配置类中,你可以初始化并配置AtlasClient,以便于后续操作如创建模型实体或关联数据。 ```java @Configuration public class AtlasConfig { @Value("${atlas.rest.url}") private String atlasRestUrl; @Bean public AtlasClient atlasClient() { AtlasRestClientConfig config = new AtlasRestClientConfig(); config.setServer(atlasRestUrl); config.setUsername("your_username"); config.setPassword("your_password"); return new AtlasRestClient(config); } } ``` 4. **使用Atlas API**:在业务代码中,你可以通过AtlasClient访问API来执行各种操作,例如创建资源元数据、更新依赖关系等。 ```java @Autowired private AtlasClient atlasClient; public void registerService(String serviceName) { AtlasEntity entity = new AtlasEntity(serviceName); // 提交到Apache Atlas atlasClient.createEntity(entity); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值