专栏名称: 架构师之路
架构师之路,坚持撰写接地气的架构文章
目录
相关文章推荐
美团技术团队  ·  可信实验白皮书系列03:随机对照实验 ·  3 天前  
架构师之路  ·  爸爸!除了你,沈括,沈万三... ... ·  4 天前  
51好读  ›  专栏  ›  架构师之路

mysql-proxy数据库中间件架构 | 架构师之路

架构师之路  · 公众号  · 架构  · 2017-05-20 18:10

正文

请到「今天看啥」查看全文


hook 点,让用户实现 Lua 脚本来完成各种功能,这些 hook 点是以函数的形式提供的,用户可以实现这些函数,在不同事件、不同操作发生时,做我们期望的事情。


connect_server()

mysql-client proxy 发起连接时, proxy 会调用这个函数。用户可以实现该函数,来做一些负载均衡的事情,例如选择将要连向那个 mysql-server 。假设有多个 mysql-server 后端,而用户又没有实现这个函数, proxy 默认采用轮询( round-robin )策略。


read_handshake()

mysql-server proxy 返回“初始握手信息”时, proxy 会调用这个函数。用户可以实现这个函数,来做更多的权限验证工作。


read_auth()

mysql-client proxy 发送认证报文( user_name, password,database )时, proxy 会调用这个函数。


read_auth_result()

mysql-server proxy 返回认证结果时, proxy 会调用这个函数。


read_query()

认证完成后, mysql-client 每次经过 proxy mysql-server 发送 query 报文时, proxy 会调用这个函数。用户如果要拦截请求,就可以模拟 mysql-server 直接返回了,当然用户亦可以实现各种策略,修改请求,路由请求等各种不同的业务逻辑。


read_query_result()

认证完成后, mysql-server 每次经过 proxy mysql-client 返回 query 结果时, proxy 会调用这个函数。需要注意,如果用户没有显示实现 read_query() 函数,则 read_query_result() 函数是不会被调用的。用户可以在此处实现各种合并策略,或者对结果集进行修改。







请到「今天看啥」查看全文