![1.png](https://static.golangjob.cn/231109/8631d5f13a96614523463ff8c2c8ccf2.png)
直播领域发展迅速,人才需求量极大,但能完整驾驭高并发场景下直播场景的人才还不多。 本课程通过六个高并发场景-用户中台服务,IM即时通讯,礼物打赏、直播PK、红包雨、直播带货秒杀,带你从0到1,循序渐进实战落地,让你对直播业务场景有更透彻的理解,对直播技术栈有更全面的掌握,对高并发解决方案有更强的设计与实战能力。课程旨在助力你提升在直播领域的职业竞争力。
六大高并发场景驱动教学,轻松玩转直播业务,从容面对三高难题
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;
/**
* <a href="/user/Author" title="@Author">@Author</a> 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 ;
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)