C++从0实现百万并发Reactor服务器

具备“三高”框架设计能力,突破高级工程师技术瓶颈

已完结
|
难度:高级
|
时长:共 20 小时
¥299.00
距离活动结束
立即购买
加购物车
已有 160 人在学
  • 从0打造一个百万级并发框架
  • 实践分布式系统设计核心
  • 深入高并发Reactor设计原理
  • 搞懂高效的网络通信机制
  • 掌握事件驱动编程设计思想
  • 自如应用智能指针等高阶技术
试看本节课 06:25
1-1 C++从0实现百万并发的Reactor服务器-课程概览

课程预览

检测到您还没有关注慕课网服务号,无法接收课程更新通知。请扫描二维码即可绑定
重新观看
是否具备高并发、高性能、分布式、事件驱动框架设计能力,是优秀C++中高级工程师的分水岭。本课程通过带大家纯手写一个Reactor服务器( Reactor是大名鼎鼎的redis、nginx、rpc等框架核心模型),让你高效掌握三高框架设计思维,同时让你对C++网络编程、线程、智能指针、C++11标准高阶技术等运用自如,最终倍增编程内功,突破进阶高级工程师技术瓶颈,提升职业核心竞争力。

本章介绍:

C++从0实现百万并发的Reactor服务器-课程概览

第1章 C++从0实现百万并发的Reactor服务器-课程概览
1 节|7分钟
展开
  • 视频:
    1-1 C++从0实现百万并发的Reactor服务器-课程概览
    试看
    06:25

本章介绍:

在实际工作中,90%的C++程序运行在Linux平台,离开了Linux操作系统,谈并发没什么意义。

第2章 C++工程师必须掌握-脱离Linux操作系统,谈并发没什么意义
9 节|83分钟
收起
  • 视频:
    2-1 Linux环境高级编程导学
    02:26
  • 视频:
    2-2 Linux的Hello world
    11:13
  • 视频:
    2-3 VSCode的安装和配置
    14:30
  • 视频:
    2-4 静态库和动态库
    11:20
  • 视频:
    2-5 编译规则文件makefile
    16:11
  • 视频:
    2-6 main函数的参数
    07:19
  • 视频:
    2-7 gdb常用命令
    09:57
  • 视频:
    2-8 gdb调试core文件
    05:44
  • 视频:
    2-9 gdb调试正在运行中的程序
    03:38

本章介绍:

在Linux系统中,一切皆文件。网络通讯的Socket是文件、信号是文件、定时器等都是文件。

第3章 对网络通讯重要的-Linux的目录、文件和时间操作
4 节|35分钟
收起
  • 视频:
    3-1 Linux的时间操作
    08:10
  • 视频:
    3-2 Linux的目录操作
    06:24
  • 视频:
    3-3 Linux的系统错误
    11:29
  • 视频:
    3-4 目录和文件的更多操作
    08:03

本章介绍:

如果用现代C++的思路开发服务程序,首选C++11标准的线程。但是,线程也不是万能的,在某些场景中,进程可能比线程更合适。有一个高频面试题:进程和线程有什么区别?如果答不出来,估计下面没有了。

第4章 进程控制和进程同步
12 节|136分钟
展开
  • 视频:
    4-1 Linux的信号
    20:22
  • 视频:
    4-2 进程终止
    09:11
  • 视频:
    4-3 调用可执行程序
    11:58
  • 视频:
    4-4 创建进程
    18:31
  • 视频:
    4-5 僵尸进程
    12:58
  • 视频:
    4-6 多进程与信号
    07:29
  • 视频:
    4-7 共享内存
    09:21
  • 视频:
    4-8 循环队列
    17:12
  • 视频:
    4-9 信号量
    16:47
  • 视频:
    4-10 多进程的生产消费者模型
    04:50
  • 视频:
    4-11 pthread线程库
    03:13
  • 视频:
    4-12 UNIX环境高级编程
    03:09

本章介绍:

本章介绍网络编程的基础知识,包括Socket库函数的使用方法和注意事项,以及网络通讯的原理。

第5章 网络服务器基石-网络编程与网络通讯原理
12 节|161分钟
展开
  • 视频:
    5-1 网络编程基础导学
    00:55
  • 视频:
    5-2 .第一个网络通讯程序
    15:57
  • 视频:
    5-3 基于Linux的文件操作
    14:42
  • 视频:
    5-4 socket函数详解
    10:52
  • 视频:
    5-5 主机字节序与网络字节序
    05:23
  • 视频:
    5-6 万恶的结构体
    17:50
  • 视频:
    5-7 封装socket客户端
    19:41
  • 视频:
    5-8 封装socket服务端
    09:15
  • 视频:
    5-9 多进程的服务端
    13:44
  • 视频:
    5-10 实现文件传输功能
    20:57
  • 视频:
    5-11 三次握手与四次挥手
    21:08
  • 视频:
    5-12 TCP缓存
    09:50

本章介绍:

本章介绍网络高并发的基石-I/O多路复用,从select、poll到epoll,所有的高并发项目,如redis、memcache、nginx,都是基于epoll。

第6章 高并发的基石-I/O多路复用
7 节|98分钟
展开
  • 视频:
    6-1 IO多路复用-select模型(上)
    20:47
  • 视频:
    6-2 IO多路复用-select模型(下)
    12:09
  • 视频:
    6-3 IO多路复用-poll模型
    09:24
  • 视频:
    6-4 IO多路复用-epoll模型
    13:32
  • 视频:
    6-5 阻塞&非阻塞的IO
    16:25
  • 视频:
    6-6 水平触和&边缘触发
    24:03
  • 视频:
    6-7 epoll的原理
    01:20

本章介绍:

从本章开始,我将手把手的带大家从0实现百万并发的Reactor服务器。注意,我们的目标是自己写一个高性能的、可扩展的网络库(类似muduo,而不是使用其它的第三方库,如libevent),在这个网络库之上,可以开发出像QQ和微信等亿级用户的应用。使用第三方库(如libevent)来做应用开发不难,而自己写一个网络库绝非易事。

第7章 开始手把手带大家从0实现百万并发的Reactor服务器
9 节|122分钟
展开
  • 视频:
    7-1 从0实现百万并发的Reactor服务器导学
    02:29
  • 视频:
    7-2 优化epoll服务端程序,为封装做准备
    14:28
  • 视频:
    7-3 优化epoll服务端程序,为封装做准备
    06:13
  • 视频:
    7-4 把网络地址协议封装成InetAddress类
    14:03
  • 视频:
    7-5 把socket的库函数封装成Socket类
    19:48
  • 视频:
    7-6 把epoll的各种操作封装成Epoll类
    14:12
  • 视频:
    7-7 把与TCP连接通道封装成Channel类(上)
    11:18
  • 视频:
    7-8 把与TCP连接通道封装成Channel类(中)
    29:20
  • 视频:
    7-9 把与TCP连接通道封装成Channel类(下)
    09:53

本章介绍:

在传统编程思想中,服务程序一般为顺序结构。Reacor模式是一种事件驱动机制,他逆转了事件处理的流程,不再是主动的等待事件就绪,而是它提前注册好的回调函数,当有对应事件发生时就调用回调函数,以实现不同的功能。

第8章 Reacor模式中的事件驱动机制核心原理
8 节|71分钟
展开
  • 视频:
    8-1 用C++11的function实现函数回调
    12:05
  • 视频:
    8-2 把事件循环封装成EventLoop类
    07:07
  • 视频:
    8-3 优化EventLoop类
    06:24
  • 视频:
    8-4 把服务端封装成TcpServer类
    09:10
  • 视频:
    8-5 把接受客户端连接封装成Acceptor类
    11:55
  • 视频:
    8-6 把TCP连接封装成Connection类
    07:34
  • 视频:
    8-7 在Channel类中回调Acceptor类的成员函数
    06:59
  • 视频:
    8-8 在Acceptor类中回调TcpServer类的成员函数
    08:55

本章介绍:

本章介绍单线程的Reactor服务器,先实现功能,暂时不考虑性能。

第9章 来,先实现单线程的Reactor服务器的功能
9 节|132分钟
展开
  • 视频:
    9-1 用map容器管理Connection对象
    09:44
  • 视频:
    9-2 在Channel类中回调Connection类的成员函数
    09:40
  • 视频:
    9-3 在Connection类中回调TcpServer类的成员函数
    08:59
  • 视频:
    9-4 网络编程为什么需要缓冲区Buffer?
    13:08
  • 视频:
    9-5 封装缓冲区Buffer类
    16:47
  • 视频:
    9-6 使用接收缓冲区inputbuffer
    20:28
  • 视频:
    9-7 使用发送缓冲区outputbuffer
    17:56
  • 视频:
    9-8 优化回调函数
    14:31
  • 视频:
    9-9 实现回显服务器EchoServer
    20:32

本章介绍:

单线程的Reactor模型不能发挥多核CPU的效率,本章介绍使用线程池技术,实现多线程的Reactor服务器,Reactor服务器最完美的解决方案是:1)主Reactor只负责接收客户端的连接,并把客户端连接分配给从Reactor;2)从Reactor接收到客户端的请求报文后,交给工作线程,由工作线程对业务进行处理;3)工作线程处理完业务后,生成回应报文,交给从Reactor,从Reactor再把回应报文发送给客户端。

第10章 单线程不能发挥多核CPU的效率-线程池技术实现多线程的Reactor服务器
4 节|58分钟
展开
  • 视频:
    10-1 简单优化Buffer
    06:11
  • 视频:
    10-2 封装线程池ThreadPool类
    13:35
  • 视频:
    10-3 多线程的主从Reactor模型
    22:34
  • 视频:
    10-4 增加工作线程
    14:53

本章介绍:

本章将优化Reactor服务器的各种细节:1)使用智能指针管理资源;2)异步唤醒事件循环;3)定时清理不活跃的清理空闲的TCP连接。

第11章 优化Reactor服务器的种种细节
9 节|184分钟
展开
  • 视频:
    11-1 在多线程中如何管理资源?
    11:51
  • 视频:
    11-2 用shared_ptr管理共享资源
    23:08
  • 视频:
    11-3 用unique_ptr管理自己的资源
    28:52
  • 视频:
    11-4 用eventfd实现事件通知
    17:40
  • 视频:
    11-5 异步唤醒事件循环(上)
    15:16
  • 视频:
    11-6 异步唤醒事件循环(下)
    24:03
  • 视频:
    11-7 性能优化-阻止浪费,清除空闲的TCP连接(上)
    15:36
  • 视频:
    11-8 性能优化-阻止浪费,清除空闲的TCP连接(中)
    15:42
  • 视频:
    11-9 性能优化-阻止浪费,清除空闲的TCP连接(下)
    31:00

本章介绍:

本章将把Reactor服务程序在正式的PC服务器上进行测试,充分压榨服务器的硬件(CPU和内存),实现每秒百万并发的目标。

第12章 真金不怕火炼-在正式PC服务器测试,见证每秒百万并发
4 节|82分钟
展开
  • 视频:
    12-1 如何让多线程的网络服务程序体面的退出
    21:19
  • 视频:
    12-2 如何设计更高效的Buffer
    17:12
  • 视频:
    12-3 性能测试-100万秒的吞吐量
    16:07
  • 视频:
    12-4 如何基于Reactor服务器开发业务
    26:33

本章介绍:

有问题继续在问答区提问,祝大家都顺利找到高薪offer!

第13章 课程总结-有问题常来问答区,给你更多帮助。
1 节|4分钟
展开
  • 视频:
    13-1 课程复盘
    03:21
本课程已完结
适合人群
1、想进阶的1~2年初级c++工程师
2、想提升编程内功,突破瓶颈的同学
3、想提升高阶技术应用水平的同学
技术储备
1、掌握C++基础知识,包括C++11标准
2、掌握Linux基本的使用方法
环境参数
操作系统: CentOS7.x
编译器: gcc、g++
集成开发环境: VSCode、vim
数据库: Oracle12c
不为别的,只为提升面试通过率
尽管课程时间很长,
但没关系,我们有老师的陪伴,
还有同学之间互相鼓励,彼此帮助,
完成学习后,还能获得慕课网官方认证的证书。
立即购买
数据加载中...
《C++从0实现百万并发Reactor服务器》的真实评价
综合评分:分,共 人参与
篇幅原因,只展示最近100条评价

学习咨询

选课、学习遇到问题?

扫码添加指导老师 1V1 帮助你!

添加后老师会第一时间解决你的问题

意见反馈 帮助中心 APP下载
官方微信