六大高并发场景驱动教学,轻松玩转直播业务,从容面对三高难题
1、从0到1完整搞定六大高并发场景
掌握用户中台系统架构设计与开发
掌握高并发场景下的IM架构体系
掌握礼物、钱包系统全链路代码实现
掌握红包雨、直播PK、直播带货技术实现
2、掌握整套通用分布式解决方案
掌握分布式ID在业务中的生成和优化
掌握缓存数据一致性解决方案
掌握亿级数据存储方案落地
掌握高性能IM系统从0到1落地方案
3、全面提升高并发主流技术综合实战能力
实战学习MySQL数据库分库分表、读写分离
掌握分布式缓存、网关组件、配置中心技术
深入理解Docker容器技术原理和使用技巧
掌握SpringCloud Alibaba等技术栈原理及应用
设计异常的接口定义
Java
public interface QiyuBaseError {
int getErrorCode();
String getErrorMsg();
}
将常用的异常类型实现给定义出来
Java
package org.qiyu.live.web.starter.error;
/**
* @Author idea
* @Date: Created in 11:25 2023/8/2
* @Description
*/
public enum BizBaseErrorEnum implements QiyuBaseError{
PARAM_ERROR(100001,"参数异常"),
TOKEN_ERROR(100002,"用户token异常");
private int errorCode;
private String errorMsg;
BizBaseErrorEnum(int errorCode, String errorMsg) {
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
@Override
public int getErrorCode() {
return 0;
}
@Override
public String getErrorMsg() {
return null;
}
}
带你创建直播业务的数据库模块搭建
创建我们的数据库:
TypeScript
CREATE DATABASE qiyu_live_user CHARACTER set utf8mb3 COLLATE=utf8_bin;
创建一百张分表的脚本:
TypeScript
DELIMITER $$
CREATE
PROCEDURE qiyu_live_user.create_t_user_100()
BEGIN
DECLARE i INT;
DECLARE table_name VARCHAR(30);
DECLARE table_pre VARCHAR(30);
DECLARE sql_text VARCHAR(3000);
DECLARE table_body VARCHAR(2000);
SET i=0;
SET table_name='';
SET sql_text='';
SET table_body = '(
user_id bigint NOT NULL DEFAULT -1 COMMENT \'用户id\',
nick_name varchar(35) DEFAULT NULL COMMENT \'昵称\',
avatar varchar(255) DEFAULT NULL COMMENT \'头像\',
true_name varchar(20) DEFAULT NULL COMMENT \'真实姓名\',
sex tinyint(1) DEFAULT NULL COMMENT \'性别 0男,1女\',
born_date datetime DEFAULT NULL COMMENT \'出生时间\',
work_city int(9) DEFAULT NULL COMMENT \'工作地\',
born_city int(9) DEFAULT NULL COMMENT \'出生地\',
create_time datetime DEFAULT CURRENT_TIMESTAMP,
update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;';
WHILE i<100 DO
IF i<10 THEN
SET table_name = CONCAT('t_user_0',i);
ELSE
SET table_name = CONCAT('t_user_',i);
END IF;
SET sql_text=CONCAT('CREATE TABLE ',table_name, table_body);
SELECT sql_text;
SET @sql_text=sql_text;
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i=i+1;
END WHILE;
END$$
DELIMITER ;