一个系统随着业务量的爬升,最初的系统设计往往已经不能满足当前的业务需求,而且大多数的瓶颈都在数据库,
作为一个后端开发者,我们有义务了解该怎么应对处理日益渐增的数据库压力,今天我们就来引入一个数据库的中间件:
oneproxy
oneproxy 能做什么?
我相信有一些同学不太了解这个东西是干吗用的,这里我给大家几个场景
1 读写分离。假如现在公司已经的数据库已经做好了主从,现在需要你将主库作为数据写入的库,从库作为数据读取的库,也就是读写分离开来,这个时候你会怎么做?比较low的做法是在程序端去判断sql 是读还是写,然后连接到不同的数据库去操作。这种做法相对不是很合适,因为如果是一个小项目,代码改动不是很大,但是如果是一个耦合程度很高的板块,想想都头疼。但是如果借助oneproxy中间件,可以非常轻松得完成读写分离。
2 垂直分库,水平分表,假如把一个系统 根据不同的业务板块给解耦,分成N个数据库,又有某些表是大表,还得水平分表,那么当有一些业务请求需要请求不同库的不同表,甚至涉及到事务,这个时候处理起来就会很麻烦。oneproxy 同样可以轻松完成垂直分库,并且程序端无需改动或者甚少改动。
3 高可用,定义好规则后,oneproxy在面对主库或者从库宕机后,会迅速切换数据节点,保证业务的正常运转
4 对应用端透明 比起在应用端去完成这些复杂的读写分离,分库分表,节点切换等功能,oneproxy对程序端是完全透明无感知的,感觉就像用着一个单库。
总结就一句:oneproxy 类似一个连接池,管理着程序端的所有数据连接,根据不同的请求类型和请求目标,分发到不同的数据库,是一个处于应用端和数据库端的高效中间件
那么我们要怎么来使用oneproxy来做读写分离呢,首先你需要几台装好mysql的服务器 ,然后将主机