ddb架构和坑
DDB架构老架构
应用层app通过DBI驱动来访问DDB,与大多数驱动一样,DBI提供了访问DDB的各种接口。与mysql官方提供的Standard jdbc Connector/J不同,DBI首先会接收应用app的sql,通过解析器生成抽象语法树,再根据语法树生成分布式执行计划,然后通过jdbc驱动将执行计划下发给数据节点dbn,各节点执行sql通过mysql通信协议将结果返回,最后在DBI层进行结果的聚合并返回给应用层。
该架构有以下缺点:
由于语法解析、执行计划的生成都发生在应用服务器,一定程度上消耗了应用服务器的资源
DBI通过打包成db.jar为供应用端所使用,DDB的升级需要重新打包,这就导致每次DDB升级都需要应用停服重启才能生效,给运维工作带来困难,造成的问题就是各个产品线使用不同版本的DDB
由于 DBI 部署在应用端,每次应用重启都会伴随着 DBI 模块的重启,由于 DBI 内部维护了一些文件锁,瞬间重启可能由于操作系统的文件锁没来得及释放而抛异常,
新架构
为了解决上述问题,实现DBI与应用层的解耦,DBA团队开发了QS
...