又一个前后端分离的整合了OpenAI大模型的高并发、高性能和可扩展的项目完结了,写到简历上,嘎嘎强!

大家好,我是冰河~~

经过四个多月的坚持,《分布式IM即时通讯系统》终于完结了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《分布式IM即时通讯系统》专栏中,学到了不少知识和技术。接下来,我们就一起对《分布式IM即时通讯系统》专栏做个总结。

一、核心需求

截止到目前,我们已经设计和实现了分布式IM即时通讯系统专栏最核心的内容, 我们来回顾下分布式IM即时通讯系统的核心需求。

分布式IM即时通讯系统本质上就是对线上聊天和用户的管理,针对聊天本身来说,最核心的需求就是:发送文字、表情、图片、文件、语音、视频、消息缓存、消息存储、消息未读、已读、撤回,离线消息、历史消息、单聊、群聊,多端同步,对接OpenAI大模型,以及其他一些需求。

对用户管理来说,存在的需求包含:添加好友、查看还有列表、删除好友、查看好友信息、创建群聊、加入群聊、查看群成员信息、@群成员、退出群聊、修改群昵称、拉人进群、踢人出群、解散群聊、填写群公告、修改群备注以及其他用户相关的需求等。

二、总体概述

分布式IM即时通讯系统是一个整体采用DDD架构设计、前后端分离的、高性能、高度可扩展的、可直接部署运行的IM即时通讯平台,涵盖:即时通讯后端服务、即时通讯SDK、大后端平台、大前端UI和OpenAI接入服务。其中,大后端平台又分为用户微服务、好友微服务、群组微服务和消息微服务。

在分布式IM即时通讯系统专栏中,完成了20个大的篇章,共103篇文章,如下图所示。

在这里插入图片描述

可以这么说,在分布式IM即时通讯系统中,我们已经完整实现了即时通讯最基础和最核心的功能,支持好友和群组关系,支持单聊和群聊,支持发送文本消息、表情消息、图片消息、文件消息、语音消息和双向视频呼叫。并且在单聊消息流程和群聊消息流程中,接入了OpenAI大模型。

在分布式IM即时通讯系统的整体架构设计和实现中,共分为即时通讯后端服务、即时通讯SDK、大后端平台、大前端UI和OpenAI接入服务。其中,大后端平台又分成了用户微服务、好友微服务、群组微服务和消息微服务。每个部分都是高度可扩展、可独立部署运行的,并且每一部分都支持集群化部署。

在这里插入图片描述

通过《分布式IM即时通讯系统》专栏,让大家需求设计、原型设计、架构设计、编码实现、项目优化、项目部署、极致优化等多个层面真正掌握高并发、高性能、高可用、高可扩展和高可维护项目的架构设计与实际落地方案。

另外,每一篇专栏的内容,冰河都会为其录制对应的视频课程进行加持。

在这里插入图片描述

通过文章+视频+小册+源码+答疑的方式进行全方位学习,还有比这更爽的事情吗?

三、技术选型

在技术选型上,除了采用SpringBoot等基础框架外,也会采用容器化方案。为了尽量降低技术门槛,在整个分布式IM即时通讯系统的技术选型中,主要采用市面上比较主流的技术框架和方案,具体技术选型如下所示。

  • 开发框架:SpringBoot、SpringCloud、SpringCloud Alibaba、Dubbo。
  • 缓存:Redis分布式缓存+Guava本地缓存。
  • 数据库:MySQL、TiDB、HBase。
  • 流量网关:OpenResty+Lua。
  • 业务网关:SpringCloud Gateway + Sentinel。
  • 持久层框架:MyBatis、Mybatis-Plus。
  • 服务配置、服务注册与发现:Nacos。
  • 消息中间件:RocketMQ。
  • 网络通信:Netty。
  • 文件存储:Minio。
  • 日志可视化治理:ELK。
  • 容器化管理:Swarm、Portainer。
  • 监控:Prometheus、Grafana。
  • 前端:Vue。
  • 单元测试:Junit。
  • 基准测试:JMH。
  • 压力测试:JMeter。

授人以鱼,不如授人以渔。后续我会把监控平台、容器化管理、日志可视化、大数据等等内容单独拿出来讲,每项技术、每个框架单独写个小项目实操,这样安排的话,相信大家会对这部分内容有更加深刻的理解,后续无论是哪个项目,只要是涉及到监控、容器化、链路追踪、日志可视化、大数据相关的内容时,大家都可以参考这部分内容进行实现。

所以,通过分布式IM即时通讯系统,可以学习到微服务领域和DDD架构领域的主流核心技术。

四、适应人群

由于分布式IM即时通讯统是从需求立项开始,从零一步步搭建环境、设计原型、设计架构、编码开发、运行调试和上线部署的,使用到的技术也是带着大家直接上手的。所以,整个专栏从小白到有一定开发经验的中高级工程师,有一定基础的架构师都可以学习。如果你当前或者长期受如下问题困扰,那你就更需要学习《分布式IM即时通讯系统》专栏了。

  • 在校大学生,想在毕业设计时,写一个有亮点的项目让导师眼前一亮。
  • 应届毕业生,找实习或工作时,想让自己的项目更具竞争力。
  • 一直在小公司做CRUD,并发编程没接触过,更别提如何高并发实际项目了。
  • 公司项目没什么并发,在线人数也不多,学了很多并发编程相关的知识不知道怎么用。
  • 学了很多并发编程的知识,也知道一些概念,能说出一些简单的方案,但是没实际项目经验。
  • 自我感觉掌握了一些高并发编程的技术方案,但是如果真正做项目时,还是不知道如何下手。
  • 简历上写了熟悉并发编程,在面试过程中,面试官一般会问秒杀系统,实时消息推动系统,IM即时通讯系统,或者其他高并发项目实战问题,不知道怎么回答。
  • 在大厂工作多年,参与了一些系统的建设与研发,但是也没机会参与像秒杀系统,IM即时通讯系统这样高并发、大流量的系统的整个建设过程。
  • 其他问题。。。

可以看到,如果小公司的小伙伴受限于业务,接触不到高并发、大流量的业务场景,大厂的小伙伴由于某些原因没有被分到高并发、大流量业务部门。没有系统性落地成实际高并发项目的经验,这样的小伙伴更需要学习《分布式IM即时通讯系统》。

如果小伙们是在线大学生,想让自己的毕业设计项目更加具备亮点,如果是应届毕业生,找实习或者工作时,想让自己的项目更具竞争力,都可以学习《分布式IM即时通讯系统》。

另外,冰河在星球分享了1000+套精美简历模板,助力小伙伴们跳槽面试、升职加薪,加入星球,猛戳如下链接获取。

  • 简历模板:https://t.zsxq.com/193DYfk3U

五、如何学习

1.加入 冰河技术 知识星球(文末有知识星球优惠券,IM即时通讯系统完结了,即将涨价),才能查看星球专栏文章,学习专栏视频课程,查看置顶消息,申请加入项目,才能看到项目代码和技术小册,如果未申请加入项目,点击项目链接,你会发现是404页面。

2.专栏的每一章会对应一个代码分支,需要切换对应的分支学习对应的视频和文章的代码分支,同时,分布式IM即时通讯系统的每个服务模块都对应着一个单独的代码仓库,大家对照学习即可。

3.学习过程中最好按照章节顺序来学习,每一章前后都是比较连贯的,并且每一章的代码实现也有先后顺序,这样按照从前往后的顺序学习,最终你会实现一个完整的分布式IM即时通讯系统。

注意:学习的过程,不是复制粘贴代码的过程,赋值粘贴代码是没有任何意义的,最好的学习方式就是自己动手实现代码,然后思考、总结。

4.代码结构:master分支是最新的全量代码,专栏中每一个章节和视频都会对应一个代码分支,切换到章节对应的代码分支后,即可根据当前章节和视频学习对应的代码实现,不然,在master分支中看到的是全量的代码。

5.对应代码实现上的问题,可以在专栏对应的源码提issuse

6.冰河会为《分布式IM即时通讯系统》专栏录制完整的视频课程。

六、提交作业

在学习秒杀系统的过程中,为了有助于大家更好的消化吸收《分布式IM即时通讯系统》的知识,冰河会为大家布置相应的作业。当然,也是为了希望在学习的过程中,留下你真实的足迹,让我们一起努力,突破自身技术瓶颈。

1.代码作业

  • 作业空间:https://gitcode.net/BingheProjects/im-projects-startball
  • 空间说明:为知识星球的用户提供项目代码提交空间,方便针对项目进行技术交流,你可以把自己实现的《分布式IM即时通讯系统》源码提交到空间中,按照 项目名称-用户星球编号-作者名称 的格式创建仓库,例如 bh-im-server-1-binghe
    在这里插入图片描述

2.文字打卡

  • 大家可以在 冰河技术 知识星球中,提交文字作业也可以进行文字打卡。

主要按照如下方式进行总结:

1.今天你学了哪些章节?

2.遇到的问题是什么?

3.你是怎么解决问题的?

4.今天的收获是什么?

基于大家的打卡或者作业反馈的问题,冰河会在后续以文章和直播的形式统一解决大家学习过程中的疑问。

七、获取源码

分布式IM即时通讯系统不仅可以用在真实的聊天场景中、还能接入多种真实的消息推送场景。这些真实场景的项目设计与落地实现,在冰河的知识星球除了分布式IM即时通讯系统外,还有其他5个项目,像Sekill分布式秒杀系统、手写RPC、简易商城系统等等,这些项目的需求、方案、架构、落地等均来自互联网真实业务场景,让你真正学到互联网大厂的业务与技术落地方案,并将其有效转化为自己的知识储备。

值得一提的是:冰河自研的比某些开源网关项目性能更优的生产级网关项目即将启动,你还在等啥?不少小伙伴经过星球硬核技术和项目的历练,早已成功跳槽加薪,实现薪资翻倍,而你,还在原地踏步,抱怨大环境不好。2024年抛弃焦虑和抱怨,我们一起塌下心来沉淀硬核技术和项目,让自己的薪资更上一层楼。

好了,今天就到这儿吧,我是冰河,我们下期见~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++][设计模式]介绍

目录 1.设计模式1.何为设计模式?2.深入理解面向对象3.软件设计的目标4.三大模式及其特点5.设计模式分类 2.面向对象设计原则1.为什么要面向对象2.重新认识面向对象3.面向对象设计原则4.C对象模型 3.重构1. 重构获得模式(Refactoring to Patterns)2.重构关键技法 4.代…

【Oracle】实验二 体系结构、存储结构与各类参数

【实验目的】 理解Oracle体系结构了解初始化参数文件以及初始化参数的含义掌握查看三类数据字典视图和动态性能视图的方法 【实验内容】 如何查看初始化参数?有哪几种方法?初始化参数文件有几种?默认的保存位置在哪里?在SQL*Pl…

【开发】内网穿透ztncui搭建私有节点

文章目录 写在前面一键部署ztnuci记录后续 写在前面 前面搭建moon节点转发的确会降低延迟,但是总有出现moon节点解析不成功的例子,于是疯狂寻找答案是为什么?终于在知乎上找到这样一个答案。 一键部署ztnuci 参考这篇很完善的教程和贴心的…

AI味太重怎么办?1个超简单的方法就能解决

我们知道随着GPT技术的迅速发展,解决了我们大部分写作的难题。但是很多小伙伴想必都会遇到同样的问题,就是写出来的文章太正式-我们叫这“AI味”。 这AI味让人感觉内容虽然条理清楚,但就是缺了点人情味,读起来不够亲切。 其实&a…

基于YOLOv5的口罩佩戴检测系统的设计与实现(PyQT页面+YOLOv5模型+数据集)

简介 在各种工作环境和公共场所,确保人们正确佩戴口罩对个人防护和公共卫生至关重要,尤其是在医疗设施、制造业车间和拥挤的公共交通中。为了满足这一需求,我们开发了一种基于YOLOv5目标检测模型的口罩佩戴检测系统。本项目不仅实现了高精度的口罩佩戴检测,还设计了一个可…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验6 生成树协议STP的功能

一、实验目的 1.验证以太网交换机生成树协议的功能; 2.理解网络环路对网络的负面效应; 3.理解生成树协议的作用。 二、实验要求 1.使用Cisco Packet Tracer仿真平台; 2.观看B站湖科大教书匠仿真实验视频,完成对应实验。 三、实…

图解注意力

图解注意力 Part #2: The Illustrated Self-Attention 在文章前面的部分,我们展示了这张图片来展示自注意力被应用于正在处理单词"it"的一层中: 在本节中,我们将看看这是如何完成的。请注意,我们将以一种试图理解单…

网卡故障但bond0不切换原因及处理、脚本监控bond0网卡状态并做相应操作

文章目录 故障说明监控脚本脚本编写脚本测试正常场景异常场景1异常场景2脚本准备和修改网卡名脚本拷贝到所有需要监控主机修改网卡名批量执行脚本故障说明 在一次交换机升级的割接中,主备交换机重启的时候,我们发现了一个问题,有几台宿主机会中断【ping不通】,交换机重启完…

Typora最新安装教程2024

Typora是一款广受好评的跨平台Markdown编辑软件,支持Windows、MacOS和Linux操作系统。它的设计旨在提供一个无干扰、高效且直观的写作环境。户快速管理和查找文档,支持直接在软件内浏览和操作文件结构。 Typora以其简洁而强大的功能集合,成为…

Java模拟马尔可夫链类问题的验证

马尔可夫链(Markov Chain, MC)是概率论和数理统计中具有马尔可夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochasti…

学习笔记——路由网络基础——路由的高级特性

七、路由的高级特性 1、路由迭代(路由递归) 路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由迭代(路由递归)。 添加一条去往20.1.1.…

JAVA期末复习2

目录 一、Java基础知识 1. 下面几个标识符中,哪些是命名正确的 (A) 2. 分析以下代码,哪些是合法的 (C) 3. 以下代码的执行结果是( B ) 4. 下面哪个不是java中的关键字?( B ) 5. 下面对数组…

毕业设计——可视化实验仿真平台

该程序用于毕业设计,架构为前后端分离技术,涉及技术包括vue3,SpringBoot,spring-secrity,Redis,需要者进群769119544进行相关咨询。 程序分为三个角色:学生、老师、管理员。使用了spring-secrit…

字节豆包全新图像Tokenizer:生成图像最低只需32个token,最高提速410倍

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 在生成式模型的迅速发展中,Image Tokenization 扮演着一个很重要的角色,例如Diffusion依赖的VAE或者是Transformer依赖的VQGAN。这些Tokenizers会将图像编码至一个更为紧凑的隐…

Redis 学习笔记(2)

目录 1 Redis的持久化1.1 RDB持久化方案1.2 AOF持久化方案 2 Redis架构2.1 主从复制架构2.2 哨兵集群设计2.3 哨兵集群设计 3 Redis事务机制4 Redis过期策略与内存淘汰机制4.1 过期策略4.2 内存淘汰机制 5 Redis高频面试题4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩 1 Redis的持久化…

C++STL 初阶(5)vector的简易实现(上)

不同于string只实现一个最简单的版本,vector在此处我们要实现的是模版类,类模版的声明和定义分离非常不方便(会在链接时报错),所以我们都只在一个vector.h下去实现声明和定义。后续我们提及到的库里面实现的vector也是…

HCIP--OSPF(笔记3)

OSPF扩展配置 手工认证 【1】接口认证 -- 直连的邻居间,设定认证口令,进行身份核实,同时对双方交互的数据进行加密保护 [r9-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456 邻居间认证模式、编号、密码必须完全一致 【…

python实训day2

1、 from ming import * # 有点像C语言中的头文件 """在Python开发环境中,封装一个函数,功能目标为:通过两个整数参数一次性获取和、差、积、商四个值 """ def calc(a, b):return a b, a - b, a * b, a / b…

apollo规划架构

算法的基本架构 我们在最开始直接给出规划决策算法架构框图,然后一一介绍每个框图结构的细节: 模块的入口是 PlanningComponent,在 Cyber 中注册模块,订阅和发布消息,并且注册对应的 Planning 类。Planning 的过程之前…

网络技术原理需要解决的5个问题

解决世界上任意两台设备时如何通讯的?? 第一个问题,pc1和pc3是怎么通讯的? 这俩属于同一个网段,那么同网段的是怎么通讯的? pc1和pc2属于不同的网段,第二个问题,不同网段的设备是…