第三届字节跳动青训营讲师非常用心给大家整理了课前、中、后的学习内容,同学们自我评估,选择性查漏补缺,便于大家更好的跟上讲师们的节奏,祝大家学习愉快,多多提问交流~
第十六节:走进消息队列
概述
本节课程主要分为五个方面:
- 消息队列的前世今生
- 消息队列-Kafka
- 消息队列-BMQ
- 消息队列-RocketMQ
- 最佳实践
课前部分主要罗列课程中涉及到的概念。对于不熟悉的概念,同学们可以提前查询预习;课中部分主要罗列每一部分的关键思路,帮助同学们跟上课程的进度;课后部分是一些问题,帮助同学们在课后梳理本课程的重点。
课前
消息队列的前世
- 消息队列应用场景
- 消息队列的发展历史
常见消息队列
- Kafka使用场景、架构、高级特性
- Pulsar使用场景、架构、高级特性
- Rocket使用场景、架构、高级特性
课中
消息队列是什么
- 解耦
- 削峰
- 异步
- 日志处理
消息队列的前世今生
消息队列-Kafka
kafka使用场景,业务日志、用户行为数据、Metrics数据
基本概念,Producer、Cluster、Consumer、Topic、Partition
数据迁移、Offset、Partition选主
一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑
消息队列-BMQ
Kafka在使用中遇到问题
BMQ架构
BMQ各模块是如何工作的,Broker、Proxy、HDFS、MetaStorage
BMQ多机房容灾
消息队列-RocketMQ
RocketMQ使用场景
RocketMQ和Kafka对比
RocketMQ架构介绍,Producer、Broker、Nameserver、Consumer
一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑
消息队列在字节
一些最佳实践的场景,包括数据展示
课后
- 消息队列的应用场景有哪些?
- Kafka的哪些Feature让其可以支撑大吞吐写入的场景?
- Kafka Consumer Rebalance的流程简述?
- BMQ相比较Kafka有哪些优势?
- RocketMQ有哪些特有的Feature?
- RocketMQ事务消息处理流程简述?
- 你认为MQ后面应该如何发展?(开放题)
第十七节:分布式定时任务那些事儿
概述
本节课程主要分为五个方面:
- 分布式定时任务整体架构
- 控制台Admin详细设计
- 触发器Trigger详细设计
- 调度器Scheduler详细设计
- 执行器Executor详细设计
课前部分主要罗列课程中涉及到的概念。对于不熟悉的概念,同学们可以提前查询预习;课中部分主要罗列每一部分的关键思路,帮助同学们跟上课程的进度;课后部分是一些问题,帮助同学们在课后梳理本课程的重点。
课前
分布式定时任务发展历史
- Linux命令-CronJob
- 单机定时任务-Timer、Ticker
- 单机定时任务-ScheduledExecutorService
- 任务调度- Quartz
- 分布式定时任务
分布式定时任务核心架构
- 控制台Admin
- 触发器Trigger
- 调度器Scheduler
- 执行器Executor
知识点扩充
- 时间轮
- 延时消息
- 离线计算引擎 Hive
- 实时计算引擎 Flink
课中
前言
- 每年春节抖音都会有很多有意思的玩法,如果同学们是字节的后端同学,怎么设计今年春节集卡瓜分20亿的技术方案?
-
业务流程
- 定时扫描抖音用户集卡状态
- 汇总计算用户的瓜分金额
- 定时开奖
-
技术体量
- 亿级用户规模
- 十亿级资金规模
- 百万级读写QPS
-
方案引出
- 自动化 + 定时执行 + 海量数据 + 高效稳定 = 分布式定时任务
发展历程
-
发展历史
- Linux命令-CronJob
- 单机定时任务-Timer、Ticker
- 单机定时任务-ScheduledExecutorService
- 任务调度- Quartz
- 分布式定时任务
-
概述
-
定义
- 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。
- 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。
-
特点
-
执行模式
- 单机任务
- 广播任务
- Map任务
- MapReduce任务
-
现状
- 业内流行框架 | | Xxl-job | SchedulerX | TCT | Elastic-job | Saturn | | ----- | ------- | ---------- | --- | ----------- | ------ | | 来源公司 | 美团点评 | 阿里巴巴 | 腾讯 | 当当网 | 唯品会 | | 是否开源 | 是 | 否 | 否 | 是 | 是 | | 任务编排 | 子任务依赖 | 支持 | 支持 | 不支持 | 不支持 | | 任务分片 | 支持 | 支持 | 支持 | 支持 | 支持 | | 高可用 | 支持 | 支持 | 支持 | 支持 | 支持 | | 故障转移 | 支持 | 支持 | 支持 | 支持 | 支持 | | 可视化运维 | 支持 | 支持 | 支持 | 支持 | 支持 |
- 美团点评Xxl-job
- 阿里巴巴SchedulerX
- 腾讯TCT
-
-
关联方案
- 单机定时任务
- 大数据处理引擎
实现原理
-
整体架构
- 核心架构
- 数据流
- 功能架构
-
控制台Admin
-
触发器Trigger
- 方案一:腾讯字节方案
- 方案二:Quartz方案——时间轮
-
调度器Scheduler
-
资源来源
- 业务系统
- 定时任务平台
-
-
执行器Executor
业务应用
-
业务应用
- 所有需要定时、延时、周期性执行任务的业务场景,都可以考虑使用分布式定时任务
-
知识面扩充
- 分布式定时任务
- 单机定时任务
- 延时消息
- 离线计算引擎Hive
- 实时计算引擎Flink
课后
- 分布式定时任务可以帮助我们处理哪些业务场景?
- 春节集卡瓜分20亿的玩法,发奖金额计算、实时开奖两个阶段分别用到分布式定时任务什么执行模式?
- 有了分布式定时任务,单机定时任务还有适用场景么?
- 时间轮这种数据结构,在定时/延时场景相比其他数据结构有哪些优势?
- 分布式定时任务的调度中心怎么判断一台执行器的机器处于可被调度状态?
- 你能想到哪些业务场景,实时计算引擎优于分布式定时任务?