《3.Extend Database Mesh with eBPF.pptx》由会员分享,可在线阅读,更多相关《3.Extend Database Mesh with eBPF.pptx(31页珍藏版)》请在三个皮匠报告上搜索。
1、www.sphere-使用使用 ebpf 扩展扩展 Database MeshSphereEx 武建东武建东01Pisanix 项目介绍项目介绍Tc-bpf 介绍介绍02实践实践0403问题问题01Pisanix 项目介绍项目介绍Database Mesh 框架框架Database Mesh 希望提供一种以数据库为中心的治理框架:数据库是一等公民:一切抽象围绕数据库治理行为进行,比如访问控制、流量治理、可观测性等 面向工程师体验:对于开发人员,通过便捷易用的数据库声明和定义,即可进行开发,无需关心数据库的位置;对于运维和 DBA,提供多种数据库治理行为抽象,实现自动化的数据库可靠性工程 云原生
2、:以开放的生态和实现机制适配不同的云环境,面向云原生构建和实现,而无需担心厂商锁定 Database Mesh 的典型场景的典型场景某互联网电商平台为配合云原生架构改造,由中间件团队主导建设流量治理平台,希望实现统一的流量熔断、限速、身份认证、服务发现、可观测性和安全等能力,对数据库流量希望实现数据库读写分离、状态切换感知、SQL 访问防火墙等能力。某银行为配合数据库国产化进程,计划将 DB2 实例逐步切换为某国产数据库,需要在迁移的过程中需要保证最小化应用改动,同时满足高可用需求,当发生故障的时候可以快速进行切换。Database Mesh 的的开源实现开源实现 Pisanix主要特性:本地
3、即数据库本地即数据库:提供应用视角的本地数据库,如应用可以本地端口 3306 访问 MySQL 协议的数据源,而无需感知实际的数据源状态 统一配置管理统一配置管理:将数据库流量治理的常见配置进行了标准化,如数据库发现、读写分离、分库分表、影子库、数据加密、熔断和并发控制等,配合可观测性实现统一的管控能力 多协议支持多协议支持:以插件的方式支持多种数据库协议,如 MySQL 协议、DB2 协议等,帮助应用在无感知情况下完成从 DB2 切换至 MySQL 的数据源切换 云原生架构云原生架构:用 Kubernetes 经典的控制面和数据面管理架构,通过基础设施即代码的方式、以版本化描述和管理数据库访
4、问Pisa-ControllerPisa-Controller 是用 Go 实现的控制面,提供对数据面组件的管控,是 Pisanix 所有配置的入口主要功能Sidecar 注入借助 MutationAdmissionWebhook 向选择的 Pod 中注入 Pisa-Proxy 容器Pisa-Proxy 配置转换和下发获取并转换集群里 CRD 格式的服务发现、负载均衡、限流、SQL 防火墙规则等,并下发给 Pisa-ProxyPisa-Daemon 配置转换和下发获取并转换集群里 CRD 格式的流量 QoS 等规则,并下发给 Pisa-DaemonPisa-ProxyPisa-Proxy 是用
5、 Rust 实现的高性能流流量代理,通过 MySQL 协议获取应用的数据库访问流量,并基于此实现各种治理能力 主要功能 SQL 流量治理 通过解析 SQL,实现多种负载均衡策略、限流等 访问控制 根据用户和数据权限关系,实现细粒度的权限控制 SQL 防火墙 阻止高危 SQL 语句执行 可观测性 暴露各种数据库访问指标:如吞吐、延时等Pisa-DaemonPisa-Daemon 是用 Rust 实现的数据面,部署在集群中每个节点上,通过宿主机内核的各种能力提供资源管理主要功能运行时流量管理借助 eBPF 等技术为数据库访问流量提供 QoS 保证,减少流量之间的相互干扰02问题问题问题问题混部场景
6、问题问题SQL 场景 03Tc-bpf 介绍介绍TC介绍介绍TC 是linux系统中流量控制的工具,具体有以下三部分:qdisc 排队规则class 控制策略filter 分类器TC介绍介绍常用命令:tc qdisc replace dev$NIC root handle 1:0 htbtc class replace dev$NIC parent 1:0 classid 1:1 htb rate 3000kbittc filter replace dev$NIC parent 1:0 protocol ip u32 match ip sport 80