前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试官问:如何快速开发一个类似微信的聊天系统?

面试官问:如何快速开发一个类似微信的聊天系统?

作者头像
用户1737318
发布2020-03-11 10:26:56
2.4K0
发布2020-03-11 10:26:56
举报
文章被收录于专栏:人工智能头条人工智能头条

去年我们公司要我去面试一位候选人,当时刚好我接手了公司的 IM 系统,借这个机会,就问了候选人这个问题:如何快速开发一个类似微信的聊天系统?

这个问题的确让候选人回答起来很吃力:

  1. 从分析 PC 端微信界面的实现到怎么处理框体与业务代码分离;
  2. 从通信模型定义到怎么处理消息协议、半包粘包到流量整型;
  3. 从架构模式设计到怎么合理的搭建出完善且易于扩展的模块。

等等问题点的抛出和解答,候选人也确实用心在思考。但我知道因为这里有些技术栈和通信架构设计的缺失,使得解答这些问题变得很艰难。

恰好那段时间我刚写完 36 篇 Netty 系列教程,看似系统,但是回顾起来还是零散。看完后,一些读者反馈无法上手真实业务,问我能否写一写 Netty 在实际业务中的应用。为了让大家更好的理解,我决定采用一个大多数人熟知又有趣的场景:模仿 PC 端的微信聊天。对于学习者来说,这样不仅学习到了 Netty,还帮 Java 程序员使用自己的语言技术栈,开发出一款桌面聊天程序!

最原始的 36 篇 Netty 文章

Netty 是互联网各种框架中以及物联网里都不可缺少的一部分技术栈技能,同时它也是非常重要的一个 Socket 框架。Netty 的应用非常广泛,无论在互联网、大数据以及通信和游戏行业中,都有 Netty 的身影。比如一线大厂阿里的 RPC 框架,Dubbo 协议默认使用 Netty 作为基础通信组件,用于各节点间的内部通信。

淘宝的消息中间件 RocketMQ 的消息生产者与消费者,也是采用 Netty 作为高性能、异步通信组件。除了阿里系、淘宝系,其他很多一线大厂也都在使用 Netty 构建高性能、分布式的网络服务。

掌握一个技能最好的方式就是使用自己熟悉的工具进行实践落地,通过功能的一点点实现和逻辑的大量阅读,建设自己对代码的认知,并深化对整个框架的理解。

一个新知识点从学习到上手,往往分为三个阶段;运行 HelloWord、熟练使用 API、和最终的落地应用。而这最后一步也是最重要的一步,要将各个知识点与实际要实现的业务功能相结合,才能不断提升自己的技能。

为此我开始使用 Netty+JavaFx 以及 SpringBoot 等技术栈,搭建仿桌面版微信聊天程序,并在这个过程中梳理分析功能结构。这个过程可以使用 xmind 作为你的工具,整理自己的思路。接下来我对需要使用的技术栈做案例测试,验证核心功能是否可以满足我的需求。验证完成后,开始做架构设计以及业务流程,直到最终通过编码实现功能。

这个专栏是我使用了 JavaFxNetty4.xSpringBootMysql 等技术栈和偏向于 DDD 领域驱动设计方式,搭建的仿桌面版微信聊天工程实现通信核心功能。

专栏内容

第一部分 - UI 开发:使用JavaFx 与 Maven 搭建 UI 桌面工程,逐步讲解登录框体、聊天框体、对话框、好友栏等各项 UI 展示及操作事件。从而在这一章节中让 Java 程序员学会开发桌面版应用;

第二部分 - 架构设计:在这一部分中我们会使用 DDD 领域驱动设计的四层模型结构与 Netty 结合使用,架构出合理的分层框架。同时还有相应库表功能的设计。相信这些内容学习后,你一定也可以假设出更好的框架;

第三部分 - 功能实现:这部分我们主要将通信中的各项功能逐步实现,包括;登录、添加好友、对话通知、消息发送、断线重连等各项功能。最终完成整个项目的开发,同时也可以让你从实践中学会技能。

界面效果展示

登陆页面

聊天页面

添加好友

消息提醒

多图解析

作者介绍

小傅哥,一线互联网后端工程师,CSDN 博客专家,精通 Java、Netty、Spring、SpringBoot 等技术栈,以及擅长中间件开发。

通过这个专栏,我们可以学到什么?
  • 以 DDD 领域驱动设计的分层模型结合 Netty,编写清晰简洁可扩展的框架结构,完成仿微信聊天核心功能项目开发。
  • 使用 JavaFX 做 UI 窗体并且与业务代码分离的方式实现桌面版程序功能。在事件驱动与接口调用的方式中,使代码更加清晰、更加易于扩展。
  • 清晰的设计,明确到位的落地,让理论与实践结合起来。快速上手掌握 Netty、JavaFx、架构、库表的设计与编码。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 界面效果展示
  • 通过这个专栏,我们可以学到什么?
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档