【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

面向 Database Mesh 的解决方案 Pisanix 已被正式开源

  • 2022-06-14
  • 本文字数:3888 字

    阅读完需:约 13 分钟

面向 Database Mesh 的解决方案 Pisanix 已被正式开源

前段时间,SphereEx 正式对外推出了面向 Database Mesh 的开源解决方案--Pisanix v0.1.0 版本。Pisanix 从设计之初就吸收了 Database Mesh 的核心思想:通过可编程实现高性能扩展,应对云上数据库治理挑战。这意味着,由 SphereEx 创始人 & Apache Member 张亮提出的 Database Mesh 正式成为了一个真正可以实现和落地的框架。

 

Pisanix 是 SphereEx 面向 Database Mesh 推出的开源解决方案,由 Go 和 Rust 编写,适配 Kubernetes 环境,目前已支持 MySQL 协议。其主要包括 Pisa-Controller、Pisa-Proxy 和 Pisa-Daemon(即将推出)这三个组件,帮助用户轻松实现基于 Database Mesh 框架下 SQL 感知的流量治理、面向运行时的资源可编程、数据库可靠性工程等能力,助力用户云上数据库治理。

Pisanix v0.1.0 版本特性


本次正式发布的 Pisanix v0.1.0 版本,已支持的特性有:

 

  • Pisa-Controller

  • 支持 Sidecar 注入

  • 读取 kubernetes 自定义资源:VirtualDatabase, TrafficStategy 和 DatabaseEndpoint 并转换为 Pisa-Proxy 配置

  • Pisa-Proxy

  • 支持 kubernetes Sidecar 部署并从 Pisa-Controller 获取配置

  • 支持多端口 MySQL 协议代理

  • 支持连接池和基础负载均衡

  • 实现了基于 Yacc 的 SQL 解析器,已支持:SELECT、INSERT、UPDATE、DELETE、PREPARE、EXECUTE、BEGIN、SET

  • 支持基于正则的 SQL 断路器

  • 支持 SQL 并发控制:基于正则,限制指定时间内执行的 SQL 数量

  • 可观测性:支持 sql_processed_totalsql_processed_duration

  • 支持非 kubernetes 环境以独立组件部署

Pisanix 简述


Pisanix 采用控制面和数据面分离的经典部署模式,通过各种 CustomResourceDefinition 支持统一的数据库接入声明配置、支持可编程的数据库访问资源限制、支持标准化的数据库自动维护体验,实现多种数据库治理行为的云原生编排。

 

目前 Pisanix 主要包含三部分能力:

  • SQL 感知的流量治理:借助 SQL 解析能力,提供对流量的负载均衡、审计、访问控制、可观测性等功能

  • 面向运行时的资源可编程:通过多种 Linux 内核能力,实现流量治理运行时的资源可配置和可编程

  • 数据库可靠性工程:以工程师为中心、以数据库可靠性为原则设计产品形态,建立数据库上云统一界面

 


Pisa-Controller


Pisa-Controller 是 Pisanix 的控制面,由 Go 语言实现,是必选组件。它负责对数据面组件的管控,是 Pisanix 所有配置的入口。其主要功能为:

  • Sidecar 注入:借助 MutationAdmissionWebhook 向指定 Pod 中注入 Pisa-Proxy 容器

  • Pisa-Proxy 配置下发和指标采集:获取并转换集群里 CRD 格式的服务发现、负载均衡、限流、SQL 防火墙规则等,并下发给 Pisa-Proxy,以及采集 Pisa-Proxy 运行时的各种指标

  • Pisa-Daemon 配置转换和指标采集:获取并转换集群里 CRD 格式的流量 QoS 等规则,并下发给 Pisa-Daemon,以及采集 Pisa-Daemon 运行时的各种指标

Pisa-Proxy


Pisa-Proxy 是 Rust 实现的高性能代理,是必选组件。Pisa-Proxy 以 Sidecar 方式与业务应用部署在同一个 Pod 中,监听 MySQL 协议获取应用访问数据库的流量,并提供各种治理能力:

  • SQL 流量治理:通过解析 SQL,实现多种负载均衡策略、限流等

  • 访问控制:根据用户和数据权限关系,实现细粒度的权限控制

  • SQL 防火墙:阻止高危 SQL 语句执行

  • 可观测性:暴露各种数据库访问指标:如吞吐、延时等

Pisa-Daemon(即将推出)


Pisa-Daemon 是节点级数据面,是可选组件。Pisa-Daemon 部署在 kubernetes 集群中每个节点上,通过宿主机内核的各种能力提供资源管理等功能。现已支持:

  • 运行时流量管理:借助 eBPF 等技术为数据库访问流量提供 QoS 保证,减少流量之间的相互干扰

Pisanix 示例


在 Database Mesh 中,治理框架依赖于如下工作负载:

  • 虚拟数据库:开发人员视角里一个可以被访问的数据库端点

  • 流量策略:对数据库访问流量的治理策略,如分库分表、负载均衡、并发控制、断路

  • 访问控制:根据指定规则提供细粒度的访问控制,如表级别

  • 安全声明:数据安全性声明,如数据加密等

  • 审计申请:记录应用对数据库的操作行为,如接入风控系统

  • 可观测性:数据库的访问流量、运行状态、性能指标等可观测性的配置

  • 事件总线:接受数据变更的事件总线

  • QoS 声明:提高数据库整体 SLO 指标而设定的资源 QoS 指标

  • 备份计划:按计划任务的方式执行数据库备份

  • Schema 流水线:以代码方式管理数据库 schema 变更,提高数据库 DDL 和 DML 变更的成功率

 

目前 Pisanix 已支持 VirtualDatabase、TrafficStrategy 和 DatabaseEndpoint 三个 CustomResourceDefinition。

VirtualDatabase


VirtualDatabase 是所有数据库治理行为发生的中心概念。对于开发人员来说,VirtualDatabase 代表了数据库访问的端点,对于 DBA 来说代表了一个逻辑的数据库,并且需要为该 VirtualDatabase 提供实际的后端数据源 DatabaseEndpoint,以及指定流量策略 TrafficStrategy。

 

Pisanix 目前支持 MySQL 类型的 VirtualDatabase,配置示例如下:

 

apiVersion: core.database-mesh.io/v1alpha1kind: VirtualDatabasemetadata:name: cataloguenamespace: defaultspec:services:- databaseMySQL: # 声明虚拟数据库类型为 MySQLdb: socksdb # 声明虚拟数据库 schemahost: 127.0.0.1 # 虚拟数据库访问地址port: 3306 # 虚拟数据库访问端口user: catalogue_user # 虚拟数据库访问用户名password: default_password # 虚拟数据库访问密码name: mysql # 虚拟数据库名称trafficStrategy: catalogue # 声明指定虚拟数据库流量策略

复制代码

 

TrafficStrategy


TrafficStrategy 描述了数据库访问流量的治理策略,DBA 根据实际业务需要进行策略配置,如基于标签的请求路由、SLA 驱动的负载均衡、SQL 断路和并发控制等。

 

Pisanix 目前已支持基础负载均衡、基于正则的 SQL 断路和并发控制,配置示例如下:

 

apiVersion: core.database-mesh.io/v1alpha1kind: TrafficStrategymetadata:name: cataloguenamespace: defaultspec:loadBalance: # 声明虚拟数据库访问负载均衡策略simpleLoadBalance: # 声明负载均衡策略为基础负载均衡kind: random # 声明负载均衡策略为随机selector:matchLabels: # 声明标签选择器以选择目标 DatabaseEndpointsource: catalogue
复制代码

 

DatabaseEndpoint


DatabaseEndpoint 描述了真实的数据库访问端点,它可以是部署在云上的数据库实例,是 DBA 关心的重点资源。作为真实数据库的抽象,DatabaseEndpoint 可以被多个 VirtualDatabase 所消费,从而将开发人员的视角和 DBA 视角进行区分。

 

Pisanix 目前支持 MySQL 类型的 DatabaseEndpoint,配置示例如下:

 

apiVersion: core.database-mesh.io/v1alpha1kind: DatabaseEndpointmetadata:name: catalogue-dbnamespace: defaultspec:database:MySQL: # 声明数据源类型为 MySQLdb: socksdb # 声明数据库 schemahost: cataloguedb.codtynlacssn.rds.cn-northwest-1.amazonaws.com.cn # 声明数据源地址port: 3306 # 声明数据源访问端口user: root # 声明数据源访问用户名password: fake_password # 声明数据源访问密码
复制代码

 

Weaveworks 的 Socks-shop 是一个面向用户的在线销售袜子商店系统,旨在帮助微服务和云原生技术进行演示和测试,并且提供一个真实可测试的应用程序。该项目使用了以下技术或框架:Java Spring Boot、Go、Node.js 并使用容器进行构建部署。

 

以 Socks-shop 微服务项目为例,如果使用 Pisanix 框架进行治理的流程如下:

  1. 由开发人员为 Catalogue 服务提交 VirtualDatabase 申请虚拟数据库类型

  2. 由 DBA 为 VirtualDatabase 创建关联的 TrafficStrategy 和 DatabaseEndpoint

  3. 由负责上线的 SRE 为 Catalogue 服务添加标签 pisanix.io/inject=enabled,开启 Sidecar 注入,然后配置 Catalogue 数据库访问信息为 VirtualDatabase 中的地址并启动应用

 

配置完成后,访问 front-end 服务即可验证:

 


Pisanix 的设计思想:Database Mesh


在《数据库治理的云原生之道 —— Database Mesh 2.0》文章里提出了一种以数据库为中心的治理模型:

  • 数据库是一等公民:一切抽象都围绕数据库治理行为进行,比如访问控制、流量治理、可观测性等

  • 面向工程师体验:对于开发人员,通过便捷易用的数据库声明和定义,即可继续进行开发,无需关心数据库的位置;对于运维和 DBA,提供多种数据库治理行为抽象,实现自动化的数据库可靠性工程

  • 云原生:以开放的生态和实现机制适配不同的云环境,面向云原生构建和实现,而无需担心厂商锁定

 


详见: https://www.database-mesh.io

展望


Pisanix 项目目前仍处于早期阶段,在接下来的工作中,会首先重点增强流量方面的治理能力,如添加基于分片键的数据分片能力、针对数据访问行为的审计申请、流量运行时资源 QoS 等,同时不断提升性能和易用性。未来 Pisanix 计划开放插件扩展机制,用户编写适应不同的业务场景的策略,实践 Unix “策略与机制分离”的设计哲学。

社区


开源项目千万步,Pisanix 才刚起步。开源是一扇门,Pisanix 欢迎各位小伙伴一起参与进来,发表自己的想法,分享自己的见解,不管是代码还是文档,issue 还是 pull request,社区一样欢迎。各位乐意帮助数据库治理的小伙伴们,让我们一起来建设 Pisanix 社区吧~

 

目前 Pisanix 社区每两周都会组织线上讨论,详细安排如下,我们等你~

邮件列表

 

https://groups.google.com/g/database-mesh

英文社区双周会(2022 年 2 月 27 日起),周三 9:00AM PST

 

https://meet.google.com/yhv-zrby-pyt

中文社区双周会(2022 年 4 月 27 日起),周三 9:00 PM GMT+8

 

https://meeting.tencent.com/dm/6UXDMNsHBVQO

 

微信小助手

 

pisanix

 

Slack

 

https://databasemesh.slack.com/

 

会议记录

 

https://bit.ly/39Fqt3x

 


作者介绍:

苗立尧,现任 SphereEx 云研发负责人,开源布道师,专注于 SaaS 和 Database Mesh。从 2015 年起开始接触 Kubernetes,是国内最早一批云原生实践者,2016 年创办“容器时代”公众号,原创和翻译引进了 600 余篇技术文章。曾在株式会社ネットスターズ、北京穿杨科技、蚂蚁金服、易宝支付等担任基础设施架构师、云产品负责人、云原生研发工程师等相关职位。

2022-06-14 12:179855

评论

发布
暂无评论
发现更多内容

开源大数据热力报告:StarRocks摘得数据查询与分析方向增速第一

StarRocks

数据库

小令观点 | 需要留存用户的身份证照片?想清楚这三点了再做……

令牌云数字身份

身份认证 身份安全 敏感信息加密

Java 八股文能不背吗?Java 面试都只是背答案吗?

钟奕礼

Java 程序员 java面试 java 编程

刷了三个月 leetcode 算法,顺利拿下百度、阿里等大厂的 offer

钟奕礼

Java 程序员 java面试 java编程

AI赋能音乐创作,人人都是音视频创作者

HMS Core

HMS Core

云原生加速器企业维格表创始人陈霈霖:提供人人可用的数字化转型全新方案,真正驱动组织创新

阿里巴巴云原生

阿里云 云原生 维格表

Tiktok短视频搬运运营干货技巧

Geek_2d6073

数字化安全生产平台 DPS 重磅发布

阿里巴巴云原生

阿里云 云原生 数字化

2023最新FL Studio中文版64位安装包下载教程

茶色酒

FL Studio FL Studio 21

中心化危机下,NFT 去中心化协议能否破局?

NFT Research

区块链 去中心化 NFT

为了进大厂!吃透了各大厂最新 3000+Java 面试题啃完面试肯定妥了

钟奕礼

Java 程序员 java面试 java编程

上班干,下班学!这份 Java 面试八股文涵盖 20 多个技术点

钟奕礼

Java 程序员 java面试 java编程

携手!Kyligence 支持 Amazon EMR Serverless,赋能云上企业降本增效

Kyligence

数据分析 OLAP

「案例分享」研发效能提升之第一性原理

京东科技开发者

redis flink 研发管理 研发效能 软件开发技术的第一性原理

我说用count(*)统计行数,面试官让我回去等消息...

小小怪下士

Java sql 程序员

小令观点 | 是什么让马斯克也受骗了?

令牌云数字身份

数字身份

业务畅行海外,如何做到安全第一

火线安全

小令观点 | 需要留存用户的身份证照片?想清楚这三点了再做……

令牌云数字身份

数字身份 身份认证 加密技术 可信

SCADA系统架构、类型和应用

2D3D前端可视化开发

物联网 组态软件 web组态 组态编辑器 SCADA

深入掌握 Fiori Elements 工作原理的前提条件:理解 Smart Field

Jerry Wang

前端开发 web开发 Fiori SAP UI5 11月月更

既快又稳还方便,火山引擎VeDI的这款产品解了分析师的愁

字节跳动数据平台

大数据 数据分析

异常检测算法分类总结(含常用开源数据集)

云智慧AIOps社区

人工智能 机器学习 深度学习 异常检测 算法模型

高级Java面试经验总结:多家大厂简历优化+面试题目+面经+薪酬等

钟奕礼

Java 程序员 java面试 java编程

新发现,新挑战,技术出海的机遇与挑战丨PingCAP DevCon 2022 出海专场

PingCAP

出海

AirServer2023个人免费版本下载

茶色酒

AirServer2023

阿里云易立:以增效促降本,容器服务全面进入智能化时代

阿里巴巴云原生

阿里云 云原生 容器服务

想要做好代码质量,如何破局?

京东科技开发者

代码质量 系统 代码优化

融云全球社交泛娱乐洞察,互联网社交换挡期的「社区产品」机遇

融云 RongCloud

社交 社区

MySQL的存储引擎及常用数据类型详解

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

技术分享| 快对讲视频调度功能说明

anyRTC开发者

监控 快对讲 语音对讲 视频对讲 视频回传

最佳实践|用腾讯云AI文字识别对混贴票据识别

牵着蜗牛去散步

人工智能 腾讯云 腾讯 文字识别 OCR

面向 Database Mesh 的解决方案 Pisanix 已被正式开源_语言 & 开发_苗立尧_InfoQ精选文章