分享一个纯异步 MySQL 客户端

最近发现了一个简单易用,性能非常强大的纯异步 mysql 客户端,无需依赖任何库。先看看简单例子如何使用创建 MySQL 任务非常简单,有如下几个核心元素一个 MySQLResponse 里包含若干 ResultSet ,一个 ResultSet 包含若干 Row, 一个 Row 包含若干 Field ,很轻松的进行结果集处理,规避掉各种细节。除了常见的 sql 的增删改查、建库删库、建表删表、预处理等等,还支持其他的功能特性。所有命令都可以拼接到一起通过 set_query() 传给 WFMySQLTask (包括 INSERT/UPDATE/SELECT/DELETE/PREPARE/CALL )。举个例子在返回的 MySQL Response 中,有多个 ResultSet ,遍历即可因为 MySQL 的事务和预处理都是带状态的,一次事务或预处理独占一个连接, 而 workflow 是高并发异步客户端, 对一个 MySQL server 的连接可能会不止一个, 我们利用 WFMySQLConnection 保证独占一个连接。 见个简单例子 我们也可以通过 WFMySQLConnection 来做预处理 PREPARE ,因此用户可以很方便地用作防 SQL 注入。作为 workflow 原生自有协议的一部分,它与任务流,服务治理能特性完美融合,与 http ,redis ,计算任务统一使用,并能够通过 upstream 轻松实现读写分离。通过 workflow 灵活的任务流机制,支持 MySQL 存储过程。除了易用性外,最为重要的就是 workflow 的高性能。在合理配置下,每秒能处理几万次 MySQL 请求。在传统的 MySQL 客户端,往往是同步阻塞式的,在向 MySQL 发送请求到 MySQL 回复响应的过程中,整个线程处于阻塞等待状态。如果希望提高并发处理能力,往往要设置大量的工作线程,而工作线程的切换,以及临界资源的锁争夺,性能会有较大的影响。而作为异步 MySQL 客户端,向 MySQL 发送请求之后,线程就可以执行本地其他异步调用,或者发送下一个 MySQL 请求,无任何阻塞,用很少的线程,就能拥有很高的并发处理能力。

请登录后发表评论

    没有回复内容