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)后续有空会把数据中台,“元数据驱动”补充完,如中台的元数据平台如何设计等;

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus Java Client Gauge 是一种用于监控和度量数据的指标类型。它可以用于记录和展示某个系统或应用程序的实时状态或性能指标。 Gauge 是一种表示单个数值的指标类型,它可以随着时间的推移而增加或减少,并且可以在任意时间点上进行观察。Gauge 可以用于度量不断变化的数据,例如系统的内存使用情况、网络连接数、数据库连接数等。 Prometheus Java Client 库提供了实现 Gauge 的功能,并提供了一组丰富的 API,供开发人员在 Java 程序中使用。通过 Prometheus Java Client,我们可以轻松创建和管理 Gauge 实例,并将其暴露给 Prometheus 服务器进行监控。 使用 Prometheus Java Client Gauge,我们可以根据具体的监控需求,自定义一系列的指标和标签,以便更好地对应用程序进行监控和分析。我们可以设置 Gauge 的初始值,然后根据不同的事件或条件,通过适当的 API 调用来增加或减少 Gauge 的值。这些值将会被 Prometheus 服务器定期抓取,并存储为时间序列数据,以供用户进行查询和分析。 总结而言,Prometheus Java Client Gauge 是一种用于记录和展示实时状态或性能指标的监控工具。通过它,我们可以方便地在 Java 程序中创建 Gauge 实例,并将其与 Prometheus 服务器对接。借助 Prometheus 的查询和分析功能,我们可以更好地理解和监控应用程序的运行情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值