用中间件实现读负载均衡的数据库群集

用中间件实现读负载均衡的数据库群集

一般地数据库有70%的读数据事务,只有30%不到的写数据事务,数据库一般就是卡在读数据事务太多,

因此用中间件实现读负载均衡的数据库群集是非常有意义的事。事实上数据库的写负载均衡是不可能存在的,所以不用考虑。

读负载均衡如何实现?

中间件维护一个数据库的配置列表(数据库名、IP地址、端口号、帐号、密码、负载情况)。

中间件日志监控一切SQL命令。

中间件监控到准备执行:select * from t1 这种读数据事务之前,先根据负载均衡算法选取一个待读数据的数据库,然后读数据。

如何向数据库群集写数据?

对于实时性要求不高的,可以采取只向主数据库写数据,然后通过数据库自身提供的复制、镜像等技术实现主、从数据库之间数据同步。

注意:这种方式,主、从数据库之间的数据同步是有延时的。

对于实时性要求非常高的,中间件监控到准备执行:INSERT\DELETE\UPDATE 这种写数据事务,通过前面所说的中间件维护的一个数据库的配置列表,

依次分别写数据到各数据库中,写的时候,要么都成功,要么都失败并回滚。

如果是存储过程中有INSERT\DELETE\UPDATE 这种写数据事务,该如何办?

除非能监控数据库的SQL日志了,否则很不好办。

 

posted @ 2017-09-21 07:55  delphi中间件  阅读(865)  评论(0编辑  收藏  举报