前段时间,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 版本,已支持的特性有:
sql_processed_total
、sql_processed_duration
Pisanix 采用控制面和数据面分离的经典部署模式,通过各种 CustomResourceDefinition 支持统一的数据库接入声明配置、支持可编程的数据库访问资源限制、支持标准化的数据库自动维护体验,实现多种数据库治理行为的云原生编排。
目前 Pisanix 主要包含三部分能力:
Pisa-Controller 是 Pisanix 的控制面,由 Go 语言实现,是必选组件。它负责对数据面组件的管控,是 Pisanix 所有配置的入口。其主要功能为:
Pisa-Proxy 是 Rust 实现的高性能代理,是必选组件。Pisa-Proxy 以 Sidecar 方式与业务应用部署在同一个 Pod 中,监听 MySQL 协议获取应用访问数据库的流量,并提供各种治理能力:
Pisa-Daemon 是节点级数据面,是可选组件。Pisa-Daemon 部署在 kubernetes 集群中每个节点上,通过宿主机内核的各种能力提供资源管理等功能。现已支持:
在 Database Mesh 中,治理框架依赖于如下工作负载:
目前 Pisanix 已支持 VirtualDatabase、TrafficStrategy 和 DatabaseEndpoint 三个 CustomResourceDefinition。
VirtualDatabase 是所有数据库治理行为发生的中心概念。对于开发人员来说,VirtualDatabase 代表了数据库访问的端点,对于 DBA 来说代表了一个逻辑的数据库,并且需要为该 VirtualDatabase 提供实际的后端数据源 DatabaseEndpoint,以及指定流量策略 TrafficStrategy。
Pisanix 目前支持 MySQL 类型的 VirtualDatabase,配置示例如下:
apiVersion: core.database-mesh.io/v1alpha1
kind: VirtualDatabase
metadata:
name: catalogue
namespace: default
spec:
services:
- databaseMySQL: # 声明虚拟数据库类型为 MySQL
db: socksdb # 声明虚拟数据库 schema
host: 127.0.0.1 # 虚拟数据库访问地址
port: 3306 # 虚拟数据库访问端口
user: catalogue_user # 虚拟数据库访问用户名
password: default_password # 虚拟数据库访问密码
name: mysql # 虚拟数据库名称
trafficStrategy: catalogue # 声明指定虚拟数据库流量策略
TrafficStrategy 描述了数据库访问流量的治理策略,DBA 根据实际业务需要进行策略配置,如基于标签的请求路由、SLA 驱动的负载均衡、SQL 断路和并发控制等。
Pisanix 目前已支持基础负载均衡、基于正则的 SQL 断路和并发控制,配置示例如下:
apiVersion: core.database-mesh.io/v1alpha1
kind: TrafficStrategy
metadata:
name: catalogue
namespace: default
spec:
loadBalance: # 声明虚拟数据库访问负载均衡策略
simpleLoadBalance: # 声明负载均衡策略为基础负载均衡
kind: random # 声明负载均衡策略为随机
selector:
matchLabels: # 声明标签选择器以选择目标 DatabaseEndpoint
source: catalogue
DatabaseEndpoint 描述了真实的数据库访问端点,它可以是部署在云上的数据库实例,是 DBA 关心的重点资源。作为真实数据库的抽象,DatabaseEndpoint 可以被多个 VirtualDatabase 所消费,从而将开发人员的视角和 DBA 视角进行区分。
Pisanix 目前支持 MySQL 类型的 DatabaseEndpoint,配置示例如下:
apiVersion: core.database-mesh.io/v1alpha1
kind: DatabaseEndpoint
metadata:
name: catalogue-db
namespace: default
spec:
database:
MySQL: # 声明数据源类型为 MySQL
db: socksdb # 声明数据库 schema
host: 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 框架进行治理的流程如下:
pisanix.io/inject=enabled
,开启 Sidecar 注入,然后配置 Catalogue 数据库访问信息为 VirtualDatabase 中的地址并启动应用配置完成后,访问 front-end 服务即可验证:
在《数据库治理的云原生之道 —— Database Mesh 2.0》文章里提出了一种以数据库为中心的治理模型:
详见: 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 余篇技术文章。曾在株式会社ネットスターズ、北京穿杨科技、蚂蚁金服、易宝支付等担任基础设施架构师、云产品负责人、云原生研发工程师等相关职位。
领取专属 10元无门槛券
私享最新 技术干货