12-从数据库中间件到云原生——Apache ShardingSphere 架构演进-秦金卫
3、可用性不足,宕机问题 1.数据库框架 1.数据库框架 计算机领域的任何问题都可以通过增加一个中间层来解决。 数据库框架技术:在业务侧增强数据 库的能力。 直接在业务代码使用。 支持常见的数据库和JDBC。 轻量级,不需要额外的资源和机器。 1.数据库框架 1、改造对业务系统具有较大侵入性; 2、对于复杂的SQL,可能不支持; 3、对于跨库和跨分片的数据,需要额外机制保障一致性; 4、缺乏较好的数据平滑迁移和过渡方案; 3、接入端需要实现数据库协议,对非开源数据库无法支持。 数据库中间件使用的约束: 3.分布式数据库 3.分布式数据库 类库/框架 数据库中间件 分布式数据库 数据网格 TDDL Sharding-JDBC DRDS Sharding-Proxy MyCAT DBLE KingShard Vitess ? Spanner Aurora GaussDB PolarDB OceanBase TiDB Cockroach 态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够 混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和 数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的 应用场景。 5.数据库解决方案 Level 3:Sharding-Proxy中间件(3.x+) Level 2:Sharding-JDBC框架(1.x+)0 码力 | 23 页 | 1.91 MB | 5 月前3TiDB中文技术文档
数据库连接器为客户端提供了连接数据库服务端的方式,APIs 提供了使用 MySQL 协议和资源的底层接口。无论是 连接器还是 API,都可以用来在不同的语言和环境内连接服务器并执行 sql 语句,包括 odbc、java(jdbc)、 Perl、Python、PHP、Ruby 和 C。 TiDB 兼容 MySQL(5.6、5.7) 的所有连接器和 API,包括: MySQL Connector/C MySQL Connector/C++ 语言的客户端库,是 libmysqlclient 的替代品 MySQL Connector/C++:C++ 语言的客户端库 MySQL Connector/J:Java 语言的客户端库,基于标准 JDBC 接口 MySQL Connector/Net:.Net 语言的客户端库,MySQL for Visual Studio使用这个库,支持 Microsoft Visual Studio 2012,2013,2015和2017版本 O’Sullivan’s pure Haskell MySQL bindings. hsql-mysql libmysqlclient See MySQL driver for Haskell . Java/JDBC Connector/J Native Driver See MySQL Connector/J 5.1 Developer Guide. Kaya MyDB libmysqlclient See0 码力 | 444 页 | 4.89 MB | 5 月前3Service Mesh的延伸 — 论道Database Mesh
支持任意数据库 • 数据库连接数占用高 • 仅支持单一开发语言 • 性能损耗低 • 无中心化 代理端 • 仅支持单一数据库 • 数据库连接数占用低 • 支持任意开发语言 • 性能损耗高JDBC Proxy Sidecar 数据库 任意 单一 单一 连接数 高 低 高 异构语言 仅Java 任意 任意 性能 损耗低 损耗略高 损耗低 无中心化 是 否 是 静态入口 无 有 无 无 Sidecar的优势Database Mesh架构图Sharding-Sphere 核心功能 数据分片 分布式事务 数据库治理 弹性伸缩 管控界面 实现方案 Sharding-JDBC Sharding-Proxy Sharding-Sidecar Sharding -Sphere 云原生 无中心 零侵入Sharding-Sphere:数据分片Sharding-Sphere:分布 •ZooKeeper •Etcd 业务代码 Sharding- Sphere 业务代码 Sharding- Sphere 应用 应用 注册中心Sharding-Sphere:APM演进线路图 JDBC + 数据分片 版本:1.X 数据库治理 版本:2.X Proxy 版本:3.0.X 分布式事务 版本:3.1.X Sidecar 版本:4.0.X 多数据副本 版本:4.1.X0 码力 | 35 页 | 4.56 MB | 5 月前324-云原生中间件之道-高磊
应用 A B C Oracle|MySQL 用于Oracle|MySQL 的JDBC Cloud 应用 A B C 多模云原生数据 库 用于云原生DB的 JDBC 极少量 改动 修改驱 动包 数据迁 移 • 由于云原生数据库支持多模,所以通过 ETL或者DTC等工具迁移数据是非常方便的 • 应用程序只需要修改JDBC的依赖即可以在 新环境中运行,迁移成本低。 • 或者由于云原生数据库支持多协议能力,0 码力 | 22 页 | 4.39 MB | 5 月前3PingCAP TiDB&TiKV Introduction OLTP
构层面轻松支持多个业务系统 底层数据打通,便于集中管控,避免信息孤岛,提升数据价值。 Architecture overview (Software) MySQL Clients (e.g. JDBC) TiDB TiKV RPC MySQL Protocol F1 Spanner Applications TiDB ● 开源 F1 实现 ● 无状态的分布式 SQL 层 ● MySQL 协议兼容0 码力 | 21 页 | 613.54 KB | 5 月前3TiDB and Amazon Aurora
Co-processor API calls ... ... ... TiDB servers, stateless, SQL engine PD PD PD MySQL/MariaDB clients, ORMs, JDBC/ODBC, Applications ... MySQL Wire Protocol heartbeat meta TiDB is not a database middleware Sharding0 码力 | 57 页 | 2.52 MB | 5 月前3CppCon 2021: Persistent Data Structures
Introduction Persistent Memory Use-Cases Pitfalls Persistent Hash Map Design Goals and Methodology Persistence Performance Results Persistent Transactional Data Structures Design Goals Methodology Performance Structures Live Demonstration References Persistent Hash Map Design Goals ▶ Read optimized ▶ Persistence needs no flush or fence after first read ▶ Runtime over recovery ▶ Persist as little as possible Persistent Hash Map Persistent Transactional Data Structures Live Demonstration References Persistence ▶ Goal: Add persistence to concurrent data structures ▶ Leverage existing multithreaded synchronization guarantees0 码力 | 56 页 | 1.90 MB | 5 月前3Embracing an Adversarial Mindset for Cpp Security
Privilege Escalation Persistence & Evasion Command & Control Lateral Movement ExfiltrationWhy Elevation of Privilege (EoP)? ● Crucial for lateral movement ● Persistence and evading detection Defense-in-DepthAttack Chain and EoP Reconnaissance Intrusion Exploitation Privilege Escalation Persistence & Evasion Command & Control Lateral Movement ExfiltrationWhy Security Feature Bypasses? ● Chain and Security Feature Bypass Reconnaissance Intrusion Exploitation Privilege Escalation Persistence & Evasion Command & Control Lateral Movement ExfiltrationNotable Exploits Used in the Wild0 码力 | 92 页 | 3.67 MB | 5 月前3Back to Basics: Designing Classes (part 1 of 2)
classes for easy change. Guideline: Design classes for easy extensions.Our Second Toy Problem: Persistence Systems 50 class PersistenceInterface { public: PersistenceInterface(); virtual ~ ( Blob& blob, ReadCallback callback, uint timeout ) = 0; // ... };Our Second Toy Problem: Persistence Systems 51 class PersistenceInterface { public: PersistenceInterface(); virtual ~0 码力 | 87 页 | 5.64 MB | 5 月前3Using Modern C++ to Build XOffsetDatastructure
summarizes all these methods: Traversal-Based Serialization. • CppCon 16 Lightweight Object Persistence With Relocatable Heaps in Modern C++ by Bob Steagall Fanchen Su, XOffsetDatastructure, CppCon • CppCon 17 How to Write a Custom Allocator by Bob Steagall • CppCon 16 Lightweight Object Persistence With Relocatable Heaps in Modern C++ by Bob Steagall Fanchen Su, XOffsetDatastructure, CppCon0 码力 | 111 页 | 3.03 MB | 5 月前3
共 20 条
- 1
- 2