中间件同步程序的压测(存储过程的应用)
拆库版本--验收这边,需要提供清晰的需求文档(之前只是一个数据流走向图),果然产品再次梳理时,发现了一些隐藏问题。
中间件同步程序的测试:
考虑方向:down掉或者延时发生,需要有容错机制,比如熔断、降级等。同时要考虑好数据的托底展示,比如本机缓存,remote缓存。
拆库版本的数据库一致验证:在老数据测试阶段,比对了两边数据库中,相关表的记录数是否相同,(比较笨的方法)
下面是对中间库同步程序down后重启的压测场景:
- #1、 暂停中间库同步服务,往TB库插入数据 190……#
SELECT * from users_front ORDER BY id DESC LIMIT 1;
#DELIMITER #
CREATE PROCEDURE test_usersfront8163()
BEGIN
declare temp int default 120000; #temp被赋值为12万次#
declare i_id int default 替换; #id 主键 不需要+1#
declare str_username varchar(20); #用户名
declare str_mobile varchar(20) default '19000450001'; #手机号
while temp>0 DO
SET i_id=i_id+1;
SET str_mobile=str_mobile-1;
SET str_username=str_mobile;
INSERT INTO users_front(id,username,password,mobile,status,vip_flag,regist_type) VALUES(i_id,str_username,'d6767b23d81f1cc9fa0f844822360290',str_mobile,'1','0','1');
SET temp=temp-1;
END WHILE;
END
CALL test_usersfront8163();
- #2、暂停中间库,往TB库导入学生数据 160…… 共7547条#
- #3、暂停中间库,往APP库插入数据 点播的观看记录#
SELECT * from user_history ORDER BY id DESC LIMIT 1; #查询user_history表中id的最大值 #
SELECT * from user_history_all ORDER BY id DESC LIMIT 1; #查询user_history表中id的最大值 #
CREATE PROCEDURE test_userhistory816()
BEGIN
declare temp int default 330001; #temp被赋值为33万次 330001#
#declare i_id3 int default 替换; #id 主键 需要+1#
declare i_id4 int default 替换;
while temp>0 DO
#INSERT INTO user_history VALUES(i_id3,5,1265,1265,1453,'2017-08-26 14:43:20',3,10,0);
INSERT INTO user_history_all VALUES(i_id4,5,1265,1265,1453,'2017-08-26 14:43:20',10,0);
#SET i_id3=i_id3+1;
SET i_id4=i_id4+1;
SET temp=temp-1;
END WHILE;
END
CALL test_userhistory8162();
- #4、在APP数据库修改APP认证用户信息#
SELECT * FROM student WHERE is_in_school=1 LIMIT 15000;
UPDATE student SET birthday = '1999-08-01' WHERE is_in_school=1 LIMIT 15000;
- #5、在app数据库插入用户数据 190……,与TB端产生冲突#
SELECT * from users_front ORDER BY id DESC LIMIT 1; #查询表中id的最大值 #
#DELIMITER #
CREATE PROCEDURE test_usersfront_app8163()
BEGIN
declare temp int default 20; #temp被赋值为20次#
declare i_id int default 替换; #id 主键 不需要+1#
declare str_username varchar(20); #用户名
declare str_mobile varchar(20) default '19000450001'; #手机号
while temp>0 DO
SET i_id=i_id+1;
SET str_mobile=str_mobile-1;
SET str_username=str_mobile;
INSERT INTO users_front(id,username,password,mobile,status,vip_flag,regist_type) VALUES(i_id,str_username,'d6767b23d81f1cc9fa0f844822360290',str_mobile,'1','0','4');
SET temp=temp-1;
END WHILE;
END
CALL test_usersfront_app8163();

浙公网安备 33010602011771号