Netty+SpringBoot开发即时通讯系统
章节目录:
第1章课程介绍与学习指南2节|12分钟
本章主要对课程内容、课程特色、课程内容安排等做整体介绍,给用户在学习上提出指导性建议。
1-1课前必读(不读错过一个亿)
1-2即时通讯系统-课程导学(11:44)
试看
第2章为什么要自研一套即时通讯系统?4节|20分钟
本章节将介绍如何为应用加上即时通讯功能,有哪些途径。分别对开源(开源也有商业版和免费版),付费sdk,自研三种途径做对比,三种方式各有优劣势。学完本章可以对各种即时通讯的解决方案有深刻认识,在项目中遇到即时通讯选择时,可以选择最优解。…
收起列表
2-1章节介绍(00:57)
2-2纵多成熟的IM系统,我们仍需要自研(08:52)
2-3如何自研一套即时通讯系统?(07:53)
2-4章节总结(01:49)
第3章基础数据开发-用户&关系&群组24节|192分钟
本章节开发用户基础模块,通过腾讯云即时通讯官方文档、用户模块的api文档。分析我们的用户服务如何设计。参考腾讯云的设计来实现自己的模块。学完本章节后,可以对即时通讯、社交领域的数据库表设计有清晰的了解,技术是触类旁通的,学完以后对自身db设计能力有很大提升。…
收起列表
3-1章节介绍(01:12)
3-2业务系统的基石-用户模块业务分析&数据库设计(04:47)
3-3带你看看大型企业级项目使用什么结构管理项目骨架的(03:18)
3-4导入用户资料,删除用户资料,修改用户资料,查询用户资料(17:34)
3-5即时通讯中最有价值的数据-关系链模块业务分析&数据库设计(04:11)
3-6导入、添加、更新好友业务功能实现(33:00)
3-7删除好友、所有好友的业务功能实现(07:14)
3-8拉取指定好友信息&拉取所有好友信息业务功能实现(03:32)
3-9校验好友关系其实比你想象中的复杂(24:16)
3-10添加、删除、校验黑名单业务功能实现(01:39)
3-11获取所有好友申请列表&好友申请列表已读&审批好友申请业务功能实现(18:20)
3-12好友分组(类似微信的好友标签)业务介绍&DB设计(01:59)
3-13好友分组创建、添加&删除成员&好友分组删除业务功能实现(04:17)
3-14即时通讯最复杂的模块-群组模块业务分析&数据库设计(07:40)
3-15导入群、群成员(19:59)
3-16创建群组、修改群信息&获取群信息业务功能实现(17:10)
3-17获取用户加入的群列表业务功能实现(07:54)
3-18解散群组、转让群主业务功能实现(01:44)
3-19拉人入群成员、移除群聊&退出群聊业务功能实现(03:09)
3-20获取群成员信息&修改群成员信息接口业务功能实现(02:26)
3-21禁言群、禁言群成员业务功能实现(02:33)
3-22即时通讯为什么难?
3-23作业:想实现和腾讯云类似的拓展资料,数据库要如何设计?
3-24章节总结(03:45)
第4章BIO,NIO&Netty入门9节|41分钟
本章节介绍BIO和NIO,通过代码的方式演示两者的线程模型,做出对比。通过Netty官网和开源项目中使用Netty的情况分别进行介绍。根据官方文档的案例上手写Netty程序。学完本章节后,可以掌握NIO和BIO概念,可以对Netty程序有初步的认识,可以实现简单的服务端与客户端的交互程序
4-1章节介绍(01:44)
4-2BIO线程模型详解-彻底搞懂BIO如何工作(08:23)
4-3NIO线程模型详解-彻底搞懂NIO如何工作(11:26)
4-4BIO和NIO总结(03:30)
4-5详解Netty(03:51)
4-6Nett初体验-上手写第一个Netty程序(10:02)
4-7NIO与BIO详解
4-8作业:使用Netty实现分数录入返回是否及格
4-9章节总结(01:14)
第5章Netty企业开发必须掌握的技能13节|92分钟
本章节介绍Netty的进阶功能,包括:Netty编解码、Netty粘包拆包、Netty心跳机制,介绍Netty私有协议。最后会通过python作为客户端连接我们的Netty服务,演示私有协议及本阶段开发。学完本章节后可以掌握企业开发中Netty的高级特性,应对企业开发需求。…
5-1章节介绍(00:59)
5-2使用Netty实现聊天室(08:11)
5-3窥探编解码器-初识Netty编解码(08:08)
5-4Netty底层数据流转的核心-pipeline机制详解(06:56)
5-5传输层协议TCP留给我们的难题-Netty解决半包、粘包方案(一)(10:48)
5-6传输层协议TCP留给我们的难题-使用私有协议解决半包、粘包(二)(10:18)
5-7ByteBuf核心API讲解(08:48)
5-8IdleStateHandler心跳机制源码详解-揭开主流注册中心心跳机制实现原理(12:07)
5-9Netty的源码解析-掌握Netty核心功能的实现(11:16)
5-10使用Netty实现文件上传(12:16)
5-11Nett服务端启动流程源码详解
5-12作业:使用Netty实现简单的HTTP服务器
5-13章节总结(01:30)
第6章IM开发核心之构建TCP网关(上)7节|49分钟
本章节主要开发TCP网关服务,网关服务开发采用轻量级,包括Socket、Websocket。yml配置文件启动,开发IM私有协议。学完本章节后可以使Netty实现自己的私有协议。
收起列表
6-1章节介绍(00:35)
6-2正式开始编写IM主程序ServerBootstrap(05:54)
6-3WebSocketServerProtocolHandler-给我们的程序添加webSocket支持(02:50)
6-4Snakeyaml解析配置文件-动态配置tcp程序(12:35)
6-5大白话讲通信协议-详解主流通信协议(06:52)
6-6私有协议编解码-设计篇(05:52)
6-7私有协议编解码-实现篇(14:00)
第7章IM开发核心之构建TCP网关(下)17节|163分钟
本章节主要开发IM业务,包括多端登录,心跳机制、消息收发、服务注册。通过RabbitMQ与业务服务交互。本章使用的中间件较多,如Redis,Zookeeper,RabbitMQ。学完本章节后可以快速上手Zookeeper,RabbitMQ,掌握市面上的APP踢人机制如何实现。学会如何使用私有消息进行通信。学懂主流负载均衡策略。…
收起列表
7-1章节介绍(03:37)
7-2登录消息-保存用户NioSocketChannel为channel设置自定义属性(09:56)
7-3分布式缓存中间件-Redisson快速入门操作数据&发布订阅(09:46)
7-4用户登录网关层-保存用户Session(12:46)
7-5用户退出网关层-离线删除用户Session(09:28)
7-6服务端心跳检测-IdleStateHandler(13:57)
7-7RabbitMQ的安装、发布订阅、路由模式详解(11:20)
7-8TCP接入RabbitMQ,打通和逻辑层交互(14:38)
7-9分布式TCP服务注册中心的技术选型(06:38)
7-10TCP服务注册-Zookeeper注册TCP服务(12:39)
7-11服务改造-TCP服务分布式改造(13:40)
7-12即时通讯系统支持多端登录模式-应对多端登录的场景(一)(08:16)
7-13即时通讯系统支持多端登录模式-应对多端登录的场景(二)(10:05)
7-14即时通讯系统如何支持多端登录模式-应对多端登录的场景(三)(23:08)
7-15拓展:详解Zookeeper
7-16作业:利用这两章知识来实现一个简易版的登录+单聊即时通讯系统
7-17章节总结(02:39)
第8章打通业务服务器与IM服务器&多端同步24节|163分钟
本章节开头对用户,好友,群组的变更和IM系统进行联动,介绍IM服务回调机制,通过腾讯云文档详细介绍需要哪些回调并实现,回调事件是IM系统保证拓展性的重中之重。本章节实现事件通知,将用户操作同步给自己的同步端,目前主流应用都是支持多端登录的,在这种场景下多端数据同步尤为重要。还会补充接口加密。学完本章节可以…
收起列表
8-1章节介绍(02:19)
8-2负载均衡策略-随机模式(13:24)
8-3负载均衡策略-轮训模式(02:58)
8-4负载均衡策略-一致性hash方式(TreeMap实现)(15:36)
8-5配置文件配置负载均衡策略(06:42)
8-6回调机制介绍-业务系统和im系统同步数据(02:50)
8-7使用Apache-HttpClient封装http请求工具类和回调方法(06:59)
8-8编写用户资料变更回调(03:00)
8-9编写好友模块回调(08:43)
8-10编写群组模块回调(10:07)
8-11启动一个新的应用服务验证回调机制(02:44)
8-12tcp通知机制介绍-多端数据同步(04:02)
8-13封装查询用户Session工具类(07:19)
8-14封装MessageProducer给用户发送消息(13:41)
8-15编写用户资料变更通知(06:30)
8-16编写好友模块TCP通知(10:06)
8-17封装GroupMessageProducer给群组用户发送消息(04:43)
8-18编写群组模块TCP通知(07:47)
8-19TCP服务处理逻辑层投递的MQ消息(08:41)
8-20接口调用鉴权加密-加解密算法HMAC-SHA256演示(03:00)
8-21接口调用鉴权加密-统一入口拦截器加密校验用户请求(20:55)
8-22拓展:RabbitMQ简介
8-23根据一致性hash自己实现一个自定义负载均衡策略
8-24章节总结(00:34)
第9章消息业务的流程之打通消息收发核心14节|106分钟
本章节开始开发IM消息服务,构建单聊/群聊消息系统,包括消息分发,消息回包,消息存储。实现基础版本打通流程并演示。后面章节会介绍如何高性能的保证消息有序性、一致性做到消息不丢不漏不串。学完本章节可以掌握消息收发的主流程,分布式自增ID生成技术选型,能够准确定位在工作中遇到读扩散or写扩散时选择最优方案。…
收起列表
9-1章节介绍(00:57)
9-2重中之重-消息收发核心流程梳理(03:17)
9-3单聊消息分发逻辑-RabbitMQ连接tcp层和网关层(08:56)
9-4单聊消息分逻辑-发送消息前置校验(16:17)
9-5单聊消息分发逻辑-消息分发主流程(19:25)
9-6详细分析群聊业务(01:03)
9-7发送群聊消息前置校验(06:32)
9-8群聊消息分发逻辑是怎样的?(13:09)
9-9即时通讯聊天记录存储结构&单聊群聊读扩散or写扩散选型(08:15)
9-10IM消息ID专题-分布式自增id解决方案介绍(01:45)
9-11如何将单聊消息持久化到DB上?(13:21)
9-12如何将群聊消息持久化到DB上?(04:09)
9-13手把手带你编写发送单聊&群聊消息的接口(06:57)
9-14章节总结(00:59)
第10章消息业务的核心之消息可达性、一致性、幂等性、实时性23节|215分钟
本章节会开始着手优化单聊和群聊,补充撤回功能,优化点包括如何保证消息不乱序,消息不丢失,提升消息处理效率,存储离线消息,解决消息重复发送等问题。该章节还会讲解TCP是如何保证消息不丢不漏不串。学完本章节可以掌握即时通讯系统的核心-如何保证消息可达性、一致性、有序性。…
收起列表
10-1章节介绍(01:52)
10-2消息实时性-利用多线程解决消息串行问题,提升处理效率(06:01)
10-3消息实时性-校验逻辑前置由tcp通过feign接口提前校验(一)(15:26)
10-4消息实时性-校验逻辑前置由tcp通过feign接口提前校验(二)(03:05)
10-5消息实时性-利用mq异步持久化消息(一)(07:13)
10-6消息实时性-利用mq异步持久化消息(二)(12:38)
10-7用了tcp就不会丢包,丢消息了吗?(09:50)
10-8单人消息可靠性-双重ack保证上下行消息可靠(一)(06:11)
10-9单人消息可靠性-双重ack保证上下行消息可靠(二)(15:21)
10-10(9分22喷麦)单人消息有序性-消息并行可能导致消息乱序,如何保证客户端消息有序性(12:18)
10-11消息幂等性-保证消息不“重复”(一)(07:49)
10-12消息幂等性-保证消息不“重复”(二)(11:43)
10-13单聊优化总结(04:39)
10-14群聊消息实时性-消息并行,持久化解耦,校验前置(11:33)
10-15群聊消息有序性-消息并行可能导致消息乱序,如何保证客户端消息有序性(02:35)
10-16群聊消息消息幂等性-保证消息不“重复”(04:59)
10-17详解消息已读的实现方案(05:14)
10-18构建聊天会话-消息已读功能实现(一)(13:34)
10-19构建聊天会话-消息已读功能实现(二)(16:27)
10-20构建聊天会话-会话置顶,删除会话接口(15:12)
10-21离线消息-离线消息计与实现(一)(06:10)
10-22离线消息-离线消息设计与实现(二)(23:32)
10-23章节总结(01:20)
第11章揭秘QQ、微信数据同步的演进14节|120分钟
本章节会着手资料同步的优化,让全量同步的操作改为增量同步。并使用APP端演示优化前后差距。学完本章节可以了解微信和QQ背后数据同步的思路和过程,可以上手优化自己系统的数据同步问题。
收起列表
11-1剖析qq和微信背后数据同步的完整过程(11:48)
11-2关系链模块问题修复(03:39)
11-3如何将关系链数据全量拉取改为增量拉取?(一)(15:00)
11-4如何将关系链数据全量拉取改为增量拉取?(二)(16:56)
11-5如何将会话数据全量拉取改为增量拉取?(04:29)
11-6如何将群组数据全量拉取改为增量拉取?(05:05)
11-7手把手带你实现增量同步接口(一)(05:52)
11-8手把手带你实现增量同步接口(二)(09:02)
11-9手把手带你实现增量同步接口(三)(13:41)
11-10手把手带你编写获取用户sequence接口(06:27)
11-11如何实现增量拉取离线消息(12:11)
11-12客户端数据库sqlite介绍(04:46)
11-13sqlite案例-uniapp-nview模式开发原生客户端演示sqlite数据库(06:48)
11-14章节总结(04:07)
第12章打造QQ在线状态功能之为你的应用增添色彩8节|58分钟
本章节会讲解即时通讯中在线状态的开发,由于手机在线/离线的频率要远大于发消息,当APP切到后台,对于服务端来说也属于离线状态,而且每次在线/离线触达的用户数要比一般的群组大很多,群内如果有500个用户那么一个用户下线了,其他群成员如何感知?设计的不合理,可能系统90%的资源都会消耗在在线状态功能。本章节将揭晓…
收起列表
12-1章节介绍(02:18)
12-2在线状态设计(02:17)
12-3netty网关用户状态变更通知&登录ack(08:25)
12-4逻辑层处理用户上线下线(12:47)
12-5在线状态订阅-临时订阅(11:58)
12-6带你实现手动设置客户端状态接口(08:36)
12-7推拉结合实现在线状态更新(10:12)
12-8章节总结(01:21)
第13章IM拓展之IM能做的事还有很多11节|61分钟
本章节将会介绍如何利用IM实现一些市面上应用常见的功能。学完本章节后可以掌握常见应用场景的解决方案。
收起列表
13-1章节介绍(01:42)
13-2IM进阶拓展-如何让陌生人只能发送几条消息&消息监管、鉴黄功能(05:36)
13-3IM进阶拓展-如何实现消息撤回(17:23)
13-4IM进阶拓展-如何设计亿级聊天记录存储方案(一)(15:32)
13-5IM进阶拓展-如何设计亿级聊天记录存储方案(二)(09:08)
13-6IM进阶拓展-视频通话实现思路和流程(10:10)
13-7IM进阶拓展-红包功能如何实现?
13-8IM进阶拓展–智能对话机器人
13-9IM进阶拓展–如何开发匿名聊天
13-10IM进阶拓展–如何开发公众号
13-11章节总结(00:54)
第14章系统对接&sdk讲解3节|48分钟
本章节将从前端和后端系统讲解如何对接我们开发的即时通讯系统,会有web版sdk源码提供,使用typeScript编写,使用sdk的方式演示im的对接,上层app引入sdk无需关心任何的webSocket开发就能够开发即时通讯应用。
收起列表
14-1演示开发一款应用如何接入我们的系统(一)(15:50)
14-2演示开发一款应用如何接入我们的系统(二)(14:02)
14-3web版sdk讲解(17:47)
第15章课程总结1节|6分钟
本章主要对课程整体内容进行总结,帮助大家梳理课程的重、难点,确保学习效果。
收起列表
15-1课程总结(05:12)
本课程已完结