最后更新:2022-06-09 19:47:08 手机定位技术交流文章
| 学习指南(按键解锁) | 知识定位 | 人群定位 |
|---|---|---|
| ? Python Real - War WeChat 预订小程序? | 进阶级 | 这个课程是Python瓶 + WeChat小程序的完美结合,从项目建设到Tencent云部署启动,创建一个完整的堆栈订购系统。 |
| ?Python定量交易? | 入门级 | 操作:建立可扩展、更安全的、更高效的定量交易系统 |
2022年5月24日我们发布了DBPack v0.1.0 版本,该版本主要发布分布式事务函数。在我们的规划里,DBPack旨在支持所有微服务开发语言协调分布式事务,但经过社区反馈,不支持点网核心。于是,我们在v0.1.1中支持点网核心。下面是如何支持点网核心的描述。
首先让我简单地介绍MySql的通信协议。MySql支持两个协议,其中一个是文本协议。一个是二进制协议。MySql客户端使用COM_QUERY请求,MySql服务器使用文本协议响应结果;使用COM_STMT_EXECUTE命令发出的请求,结果将通过二进制协议响应。
当我们调用MySql Client SDK应用程序启动请求时,不同的MySql客户端SDK将默认使用不同的协议发送请求,但是大多数MySql客户端SDK都支持文本协议和二进制协议,我们可以通过修改属性配置来更改MySql Client SDK的默认行为。比如:
在Java语言编写的微服务中,我们编写了修改商品库存的方法,然后通过参数提交执行时,默认SQL请求将被编码
由COM_QUERY命令发出。
我们可以修改原来的连接字符串jdbc:mysql://dbpack2:13307/product上加上useServerPrepStmts=true,改为jdbc:mysql://dbpack2:13307/product?useServerPrepStmts=true,第一个COM_STMT_PREPARE请求将在再次执行时发送:
一旦取得声明ID,声明ID和请求参数被编码并通过COM_STMT_EXECUTE命令发送。
Golang MySql 驱动程序默认通过添加参数到 dsn 发送在二进制协议中参数的 DML 请求interpolateParams=true,将通过文本协议发送。例如:
如果您使用EntityFrameworkCore或Dapper来访问数据库,目前不支持使用预备声明。
https://github.com/dotnet/efcore/issues/5459
https://github.com/DapperLib/Dapper/issues/474
v0.1.0版本中,我们只截获了COM_STMT_EXECUTE请求,协调分布式交易。dotnet core不自然地使用COM_QUERY提交请求协调分布式事务,在 v0.1.1中,我们增加了COM_QUERY请求,以支持协调分布式交易,这确实支持所有微服务语言协调分布式事务。
参见: https://github.com/CECTC/dbpack-samples/tree/main/dotnet。
该版本还修正了一些错误,并添加了状态 api来查询dbpack的运行状态:
至此,我们有了
这些 api帮助我们看到dbpack的运行状态。
完整的版本更改日志可以在 https://github."CECTC/dbpack/releases"上找到。
在下一个版本中, 我们将添加跟踪和审计日志.
DBPack项目地址: https://github.com/cectc/dbpack
DBPack文件: https://cectc.github./dbpack-doc/#/
DBPack-samples: https://github.com/cectc/dbpack-samples
DBPack简介: https://mp.Weixin.qq.com/s/DmXfk5bAcVYdnOwvp8ocHA
基于事件的分布式交易架构设计: https://mp.Weixin.qq.com/s/r43JvRY3LCETMoZjrdNxXA
本文由 在线网速测试 整理编辑,转载请注明出处。