Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据、数据消费者找数和理解数的业务场景。本篇内容源自于火山引擎大数据研发治理套件DataLeap中的Data Catalog 功能模块的实践,主要介绍Data Catalog在公有云部署和发布中遇到挑战及解决方案。
文 | 鸟语花香 来自字节跳动数据平台开发套件团队
背景
Data Catalog是一种元数据管理的服务,会收集技术元数据,并在其基础上提供更丰富的业务上下文与语义,通常支持元数据编目、查找、详情浏览等功能。目前Data Catalog作为火山引擎大数据研发治理套件DataLeap产品的核心功能之一,经过多年打磨,服务于字节跳动内部几乎所有核心业务线,解决了数据生产者和消费者对于元数据和资产管理的各项核心需求。
DataLeap作为一站式数据中台套件,汇集了字节内部多年积累的数据集成、开发、运维、治理、资产、安全等全套数据中台建设的经验,助力ToB市场客户提升数据研发治理效率、降低管理成本。
Data Catalog作为DataLeap的核心功能之一,本文汇集了Data Catalog团队在最近一年公有云从0到1实践的整体经验,主要讲解遇到的各项挑战和对应的解决方案。
Data Catalog已经随着DataLeap一起作为公有云产品正式在火山引擎对外发布,下面是Data Catalog在功能演进上的一些重要时间节点:
网络和数据安全
服务部署:为了能够在售卖区部署,经过调研我们选择火山引擎提供的容器服务(VKE)和负载均衡(CLB)来进行基础服务部署和构建,其中CLB提供四层负载均衡能力,容器服务是高性能 Kubernetes 容器集群管理服务。Data Catalog基于容器服务提供的无状态负载(Deployment)、定时任务(CronJob)、服务(Service)等云原生容器管理功能进行基本服务和调度任务部署,同时也使用火山引擎的存储和中间件,以上组件均在同一个VPC内,能够保证网络连通以及数据安全。
网络打通:为解决上文所说的网络隔离问题,经过调研我们使用了公司通用的网络代理服务(PLB/Shuttle),该网络代理可做到网络打通的同时保证四层网络流量的安全,从而达到我们和各依赖方如公共服务(API网关、IAM等、独立部署的云服务(EMR/LAS等)的网络连通目标。
数据安全:火山引擎部署环境做网络隔离,主要是保证安全性,我们虽然使用网络代理打通网络,但是仍需保证各个环节的安全性,考虑到服务间交互都是通过HTTP请求,我们对和外部交互的接口都增加了SSL和双向认证的机制,同时在安全认证方面,我们没有使用Nginx或Java原生的方案,而是借助于火山引擎内部安全服务中的ZTI团队的envoy组件来实现,同时使用sidecar模式和我们后端服务容器集成部署,既降低了服务端部署改造成本,也解耦了服务端业务逻辑和安全认证逻辑。
多租户适配
租户:一个客户、公司、个人开通或购买了火山引擎的云产品,火山引擎就会通知对应的服务提供者,对应云产品会感知到他的开通,这个客户就是这个云产品的一个租户,实际场景可以类比于一个公司是一个租户,不同的公司是不同的租户。
多租户服务:云服务要为多个租户提供服务,需要做到租户隔离,保证各租户的访问控制、数据、服务响应等各方面的使用都是隔离的,彼此互不感知互不影响的。要做到租户隔离,就需要云服务能通过逻辑或物理隔离的方式来将各租户对应数据和访问隔离开来,避免互相影响。
内外部功能一致
产品功能的标准化:原则上所有功能都应做到内外部一致,只允许部分功能点的实现区别。我们期望能将各功能都进行标准化,基础模块和通用能力(如元数据模型、搜索、血缘)原则上需保持内外一致,内外部依赖或需求场景差异较大的功能(如元数据接入和采集、库表管理)改造为标准化流程,将差异部分尽量减小,做到只通过配置、插件、版本控制工具等方式就能适配,减少研发和运维成本。
明确的一致性规划:从模块到功能点逐个对比内部外实现情况,制定长期roadmap,明确差异点的支持排期,并提高对齐内部功能的工作优先级,逐步减少差异。
新功能的兼容性:新功能的设计需考虑内外部一致性,包括产品的交互和研发的技术方案都需考虑外部场景并明确兼容方案,原则上对特殊场景定制化功能都需考虑通用场景适配,尽量保持多环境的兼容性。
OpenAPI
Data Catalog借助于API网关管理OpenAPI,包括注册和开通、访问控制、限流等。
API规范:火山引擎OpenAPI有明确的参数规范,Data Catalog也需符合该规范,但因内部OpenAPI参数格式不同,需做兼容,考虑到新API的支持成本,借助于Spring的Interceptor和Advice以及定制JSON序列化和反序列化逻辑,实现了自动的参数格式转化,降低API格式兼容的开发成本。
访问控制:火山引擎作为云服务提供商,使用业界规范的AKSK密钥管理规范,API使用者需创建AKSK并通过该信息来访问API才可通过访问控制,而API网关会通过IAM进行鉴权,通过后会给服务提供者也就是API注册者透传用户的身份(如租户ID,用户ID),方便API提供者使用。
安全认证:处理API网关提供的基础鉴权,Data Catalog也增加了更多机制来保障安全性,包括双向认证、租户开通状态检测等。
API文档:对于每一个OpenAPI都根据火山引擎规范编写了详细的参数说明,汇总为一个正式API文档,方便用户查阅使用。
总结
附录
火山引擎大数据研发治理套件Dataleap使用文档 https://www.volcengine.com/docs/6260
火山引擎Data Catalog数据地图使用文档 https://www.volcengine.com/docs/6260/71696
火山引擎产品使用文档 https://www.volcengine.com/docs
JanusGraph Graph Partitioning https://docs.janusgraph.org/advanced-topics/partitioning/
干货 | 字节跳动构建Data Catalog数据目录系统的实践(下)
产品介绍
火山引擎大数据研发治理套件DataLeap
一站式数据中台套件,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设,帮助数据团队有效的降低工作成本和数据维护成本、挖掘数据价值、为企业决策提供数据支撑。后台回复数字“2”了解产品。
字节跳动数据平台开发套件团队火热招人中!后台回复“招聘”,获取岗位信息。
点击阅读原文进入官网,了解DataLeap更多产品信息