欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【 数据库中间件之OneProxy】

程序员文章站 2022-06-13 16:50:19
...

OneProxy是由原支付宝首席架构师楼方鑫开发,目前由楼方鑫创立的杭州平民软件公司(@平民架构)提供技术支持。目前已有多家公司在生成环境中使用,其中包括了支付、电商等行业。

 

OneProxy的主要功能有:

1. 垂直分库

2. 水平分表

3. Proxy集群

4. 读高可用

5. 读写分离(master不参与读)

6. 读写分离(master参与读)

7. 写高可用

8. 读写随机

 


【 数据库中间件之OneProxy】
            
    
    博客分类: Mycat中间件数据库-----MYSQL 【 数据库中间件之OneProxy】 
 

OneProxy for MySQL是一款基于MySQL协议的数据库中间件,运行在应用程序和MySQL数据库之间,为应用程序提供智能透明的SQL路由和流量分析功能。可以帮助大家在不改变或只更改少量应用代码的情况下, 实现后端MySQL数据库的集群化布署,可以象使用网络交换机/路由器组建网络那样轻松组建分布式数据库集群,并通过流量实时分析,为上层的应用和底层的数据库集群提供丰富的性能监控功能。

OneProxy for MySQL可以让不同应用复用到后端数据库的连接,降低数据库的并发连接数;可以即时发现和踢除不可用的后端节点,将应用请求转发到其他可用节点实现高效故障隔离, 可配合Galera Cluster或MySQL Group Replication实现快速切换; 内置的守护进程模式和HA VIP机制,可以轻松实现Proxy的单机及多机高可用,确保业务服务的稳定性;可以透明地将查询语句分发到多个MySQL备库执行, 用读写分离方案支持上千万的并发访问;也可以根据SQL语句中的值进行分库分表路由, 将写操作均匀分散到多个MySQL主库上,以构建每秒百万TPS的MySQL集群; 跨多分片的结果集合并, 极大地简化了应用程序的开发工作量;在分片的情况下可根据分片并行执行SQL,解决了MySQL在大数据量下的汇总统计性能问题。

OneProxy for MySQL可以对访部请求进行安全检查,拒绝危险的DDL操作;可根据IP地址进行访问控制,只允许可信的IP地址进行访问;可以对每个SQL访问请求进行审核,实现SQL白名单机制, 彻底杜绝SQL注入式攻击;可以实现前后端密码分离,应用无须使用真实密码连接数据库,实现数据库密码的保护;可以分别设定前端应用和后端数据库的SQL请求频率,实现QoS控制; 可以通过正则表达式实现敏感数据过滤和审计,也可以在日志中记录大数据量的访问和更新操作,确保数据的安全。

OneProxy for MySQL可实时透明地分析流量,包括SQL语句和结果集,实时统计SQL和事务的运行时间,分析事务的SQL结构,得到各种不同维度的实时性能报告, 并可通过内置Web服务器方便直观地查看实时性能数据,弥补上层应用和MySQL实时性能监控方面的不足。使用C&C++开发,充分利用高性能的异步网络事件编程框架, 使单个OneProxy实例可支持高达40W的QPS/TPS;并可充分利用和管理内存,无Java类语言的内存回收问题,确保7x24的稳定性;内置的守护进程模式和HA VIP机制,可以轻松实现Proxy的多机高可用; 平民软件完全自主编写源代码,无外部代码和模块依赖,可以迅速分析和解决运行过程中的可能遇到的问题和故障。

 

 

超高性能

OneProxy for MySQL使用C&C++语言开发,充分发挥高性能的异步网络事件编程框架(libevent)优势,历经168小时的高压内存泄漏测试,做到零内存泄露,并使用jemalloc来优化内存分配,单个OneProxy实例可支持高达40W的QPS/TPS。

OneProxy for MySQL内置高效的SQL分析器,解析一条SQL的平均时间为100微秒,基本做到无时延的请求转发,无须担心代理层的性能和时延消耗;固定可调节的工作进程的模式,可以在任何机器上发挥优异的性能, 充分利用CPU和万兆网络资源,实现100万QPS转发。

在256个并发的情况下,和直连MySQL有同等的QPS能力,达到无损转发。使用透明连接池的功能,具备MySQL企业版连接池效果,提升后端数据库的处理能力,让应用无限扩容,无须担心后端MySQL连接数。

 

 

透明集群

OneProxy for MySQL可在协议层实现对应用透明的读写分离路由,实现读操作的无限扩展,并可实时监控主备之间的复制时延,并与MHA / PXC / MGR等多种高可用集群技术配合,实现实现应用对后端无感知的高可用。

OneProxy for MySQL可以透明分析SQL语句,根据Where条件中的值在协议层实现分库分表路由,实现写操作的灵活扩展,并实时监控后端数据库的运行状态,根据既定的集群策略进行故障切换,应用无须知道后端运行状态和节点规模。

OneProxy for MySQL支持跨分片的多结果集合操作,例如排序、汇总、分页等等,可让应用无须知道后端节点的规模数,实现对应用透明的扩容和缩容,搭建对应用透明的数据库集群。

 

 

安全审计

OneProxy for MySQL可以对不安全的登录和访问请求进实时拦截,可以根据SQL请求的类型进行灵活处理,比如禁止DDL语句、不允许数据删除命令等; 可以根据请求的IP地址进行拦截,对登录者身份进行额外的身份验证(基于不可逆的算法)。

OneProxy for MySQL完全接管应用的登录验证工作,可以实现前后端的密码分离,应用只配置登录OneProxy的密码,而真正登录数据库的密码只需配置在OneProxy上,以防止黑客从应用机器上获取密码。

OneProxy for MySQL可对每一个SQL请求进行实时检查和拦截,可以动态配置黑白SQL名单进行SQL特征检查,以杜绝SQL注入式攻击。通过丰富的实时访问统计数据,以及记录所有的SQL错误操作,可以快速发现试探性的黑客行为。

 

 

流量分析

OneProxy for MySQL可实时分析SQL和结果集的流量,与数据库后端的性能视图相比,OneProxy知道SQL语句的来源IP地址、会话及事务上下文,有更多的维度可展示数据,具有更强的结果呈现能力。

根据IP维度的统计,可以快速了解不同应用的数据库交互情况,包括应用访问具体表的情况、SQL执行信息、事务的性能数据,也可了解不同应用使用数据库的交集,实现数据架构的快速优化。

根据事务维度的统计,可以快速了解不同事务和数据库交互情况,包括事务的执行频率、总体执行时间、纯SQL的执行时间、DML操作所占的时间,高效进行性能优化,并可轻松分析事务之间的关联,推动业务数据模型的优化。


【 数据库中间件之OneProxy】
            
    
    博客分类: Mycat中间件数据库-----MYSQL 【 数据库中间件之OneProxy】 
 

 

稳定可靠

OneProxy for MySQL历经168小时(数百亿次SQL)高压测试,并且对公众用户开放Binary进行试用,数百个用户使用同一个OneProxy版本进行丰富的业务场景验证,造就了OneProxy稳定可靠的品质。

OneProxy for MySQL内置高可用机制,即有实现进程级的重起机制,也有跨机器之间的HA/VIP机制(可实现三节点,用类Paxos机制实现多点选主),也可与Haproxy / LVS / Zookeeper配合实现多活架构,以确保OneProxy的高可用。

OneProxy for MySQL可与多种高可用架构(如MHA、 Percoan XTraDB Cluster、 MySQL Group Replication等)进行协同工作,实现故障的快速发现、隔离或切换,确保业务层稳定可靠。

  • 【 数据库中间件之OneProxy】
            
    
    博客分类: Mycat中间件数据库-----MYSQL 【 数据库中间件之OneProxy】 
  • 大小: 328.5 KB
  • 【 数据库中间件之OneProxy】
            
    
    博客分类: Mycat中间件数据库-----MYSQL 【 数据库中间件之OneProxy】 
  • 大小: 319.3 KB