更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
Data Catalog是一种元数据管理的服务,会收集技术元数据,并在其基础上提供更丰富的业务上下文与语义,通常支持元数据编目、查找、详情浏览等功能。目前Data Catalog作为火山引擎大数据研发治理套件DataLeap产品的核心功能之一,经过多年打磨,服务于字节跳动内部几乎所有核心业务线,解决了数据生产者和消费者对于元数据和资产管理的各项核心需求。
DataLeap作为一站式数据中台套件,汇集了字节内部多年积累的数据集成、开发、运维、治理、资产、安全等全套数据中台建设的经验,助力ToB市场客户提升数据研发治理效率、降低管理成本。

Data Catalog公有云整体架构

Data Catalog支持综合搜索、血缘分析、库表管理、元数据采集、备注问答、专题管理、OpenAPI等功能,和DataLeap其他功能模块(如数据开发、数据集成、数据质量、数据安全等)一起提供了大数据研发和治理场景的一站式解决方案。同时,Data Catalog公有云产品是基于火山引擎提供的数据引擎和云基础设施来部署和服务的,下面会简单介绍下我们所依赖和使用的产品和服务:
  • 数据引擎:是火山引擎提供的数据分析、数据仓库和数据湖相关产品,包括ByteHouse/EMR/LAS等产品。通常Data Catalog会从这类系统内采集元并存储元数据,进行处理加工后,再提供搜索、血缘分析等功能;另外,库表管理模块也会依赖这类系统提供对应的接口来做建库建表等操作。
  • 内部公共服务:是火山引擎为支持公司内部产品上公有云提供的若干公共基础服务,主要作用是方便内部产品能快速在公有云部署,提供和公司内部兼容性比较高的公共服务,降低改造和迁移成本。其中Data Catalog使用较多的包括:API网关、网络代理、访问控制、安全认证、监控报警等。
  • 基础服务:这类服务或产品相较于上面说的内部公共服务主要区别是,他们是火山引擎对外售卖的标准云服务,内外部用户都可使用,且和业界主流云厂商能力是基本对齐的,不过会和公司内部一些类似的基础服务会有不少差异。Data Catalog主要使用这类基础服务来进行自身服务的部署运维,并且进行较多的兼容性改造,包括容器部署、网络打通、内外部CICD和监控报警流程一致性等方面。
  • 数据库和中间件:是和业界主流云厂商对齐的存储和中间件领域的标准云服务,和公司内部对应组件也会有若干差异,Data Catalog为此也做了多版本的兼容。Data Catalog在元数据存储上使用到了Hbase/MySQL/ES/Redis,然后在元数据采集和同步场景使用了Kafka,同时用到了日志服务来提高研发运维效率。

Data Catalog公有云遇到的挑战

Data Catalog经历了一个从0到1在火山引擎公有云部署并逐步优化和迭代发布10+版本的过程,在这个过程中经历不少挑战,下面将介绍其中比较典型的问题以及我们探索并实践的一些解决方案。

网络和数据安全

为保证网络安全和多租户数据安全,火山引擎上公有云产品部署的环境划分为“公共服务区”和“售卖区”,同时售卖区又分割为若干私有网络(即VPC),然后公共服务区和售卖区以及售卖区的VPC之间都是网络隔离的。
另外,Data Catalog对外会提供OpenAPI,外部客户可以通过火山引擎的API网关来访问这些API,但API网关服务是在公共服务区,无法直接访问到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模式和我们后端服务容器集成部署,既降低了服务端部署改造成本,也解耦了服务端业务逻辑和安全认证逻辑。

多租户适配

云服务要为多个租户提供服务,需要做到租户隔离,保证各租户的访问控制、数据、服务响应等各方面的使用都是隔离的,彼此互不感知互不影响的。要做到租户隔离,就需要云服务能通过逻辑或物理隔离的方式来将各租户对应数据和访问隔离开来,避免互相影响。
此前,在字节跳动内部实践中不存在多租户场景,所以面向公有云用户服务时,Data Catalog针对支持多租户服务的能力,需要进行专门适配。
解决方案:
Data Catalog在元数据存储层借用了Apache Atlas的设计与实现。Atlas的底层使用JanusGraph做图引擎,JanusGraph是基于Gremlin图查询语义实现的计算引擎,而社区版Atlas不支持多租户场景。我们通过在Atlas上增加JanusGraph Partition Strategy适配,实现存储层租户逻辑隔离。
参考以上示例,JanusGraph的Partition Strategy可以支持设置的read/write Partition的value,并保证只读/写指定Partition的数据,从而达到数据隔离,我们将租户信息和Partition Strategy相结合,实现了多租户场景下读写数据的逻辑隔离,保证了数据安全性。
 
火山引擎Data Catalog产品是基于字节跳动内部平台,经过多年打磨业务场景和产品能力,在公有云进行部署和发布,期望帮忙更多外部客户创造数据价值。目前公有云产品已包含内部成熟的产品功能同时扩展若干ToB核心功能,正在逐步对齐业界领先Data Catalog云产品各项能力。
 

点击跳转大数据研发治理套件 DataLeap了解更多

 

火山引擎DataLeap的Data Catalog系统公有云实践的更多相关文章

  1. 火山引擎 DataLeap 的 Data Catalog 系统公有云实践

      Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...

  2. 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

      摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...

  3. 火山引擎 DataLeap:3 个关键步骤,复制字节跳动一站式数据治理经验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理. ...

  4. 火山引擎 DataLeap:揭秘字节跳动数据血缘架构演进之路

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...

  5. 火山引擎 DataLeap:一家企业,数据体系要怎么搭建?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 导读:经过十多年的发展,数据治理在传统行业以及新兴互联网公司都已经产生落地实践.字节跳动也在探索一种分布式的数据治 ...

  6. 火山引擎DataLeap数据调度实例的 DAG 优化方案

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 实例 DAG 介绍 DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成.开发.运维.治理.资产管理能力 ...

  7. 还原火山引擎 A/B 测试产品——DataTester 私有化部署实践经验

      作为一款面向ToB市场的产品--火山引擎A/B测试(DataTester)为了满足客户对数据安全.合规问题等需求,探索私有化部署是产品无法绕开的一条路.   在面向ToB客户私有化的实际落地中,火 ...

  8. 字节跳动构建Data Catalog数据目录系统的实践(上)

    作为数据目录产品,Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景,并服务于数据开发和数据治理的产品体系.本文介绍了字节跳动 Data ...

  9. 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化

    背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...

  10. jQuery源代码解析(1)—— jq基础、data缓存系统

    闲话 jquery 的源代码已经到了1.12.0版本号.据官网说1版本号和2版本号若无意外将不再更新,3版本号将做一个架构上大的调整.但预计能兼容IE6-8的.或许这已经是最后的样子了. 我学习jq的 ...

随机推荐

  1. Chromium gclient使用

    gclient 是由 Google 用 Python 开发的一套跨平台的git仓库管理工具,它的作用类似 git 的 submodule,用来将多个git仓库组成一个solution进行管理,比如ch ...

  2. Java IO教程- Java文件

    创建文件 我们可以从中创建一个 File 对象 路径名 父路径名和子路径名 URI(统一资源标识符) 我们可以使用File类的以下构造函数之一创建一个文件: File(String pathname) ...

  3. JavaScript高级程序设计笔记04 变量、作用域与内存

    变量.作用域与内存 变量 特定时间点一个特定值的名称. 分类 原始值:按值访问 复制:两个独立使用.互不干扰 引用值(由多个值构成的对象):按引用访问 操作对象时,实际上操作的是对该对象的引用(ref ...

  4. Educational Codeforces Round 105 (Rated for Div. 2) A-C题解

    写在前边 链接:Educational Codeforces Round 105 (Rated for Div. 2) A. ABC String 链接:A题链接 题目大意: 给定一个有\(A.B.C ...

  5. 归并排序(merge_sort)

    算法时间复杂度:妥妥的nlogn 步骤: 1.确定分界点 mid = (l+r) >> 1 2.递归排序左右两边 3.归并--合二为一(用两个指针,分别指向两个序列) 就是递归到最底部,然 ...

  6. 【Javaweb】Servlet三|实现Servlet程序的几种方法及Servlet继承体系说明

    GET和POST请求的分发处理 代码如下 注意页面要和index位置一样否则浏览器找不到 注意大小写 HttpServletRequest httpServletRequest = (HttpServ ...

  7. Go笔记(4)-流程控制

    5.Go语言流程控制 程序流程的控制结构一般有三种,顺序结构,选择结构,循环结构 (1)选择结构 if语句 if流程控制与其他语言的if流程控制基本相同 package main import &qu ...

  8. java的反应式流

    Java的反应式流是一种新的编程模型,它在异步和事件驱动的环境下工作.反应式流的目的是为了解决传统的单线程或者多线程编程模型在高并发和大流量情况下的性能瓶颈. 反应式流的核心是Observable和O ...

  9. 一招MAX降低10倍,现在它是我的了

    一.背景 性能优化是一场永无止境的旅程. 到家门店系统,作为到家核心基础服务之一,门店C端接口有着调用量高,性能要求高的特点. C端服务经过演进,核心接口先查询本地缓存,如果本地缓存没有命中,再查询R ...

  10. 聊一聊 .NET高级调试 内核模式堆泄露

    一:背景 1. 讲故事 前几天有位朋友找到我,说他的机器内存在不断的上涨,但在任务管理器中查不出是哪个进程吃的内存,特别奇怪,截图如下: 在我的分析旅程中都是用户态模式的内存泄漏,像上图中的异常征兆已 ...