聊聊客户端/服务器与订阅/发布两大模型
创始人
2024-09-25 01:25:14
0

f66f27aec6a5a2df0adaf539f43134e5.gif

正文

大家好,我是bug菌~

在项目开发中根据不同的应用场景通常会去尝试各种各样的通信方式,可能试来试去可能又回到了原地,而对于一个相对比较大的网络系统,不同的场景得考量不同的通信架构模型,那么今天就跟大家聊聊两个主流的网络架构模型:C/S模型与订阅发布模型

1

C/S模型

大家在学习计算机网络的时候,基本上都会接触到客户端-服务器(Client-Server,C/S)模型,在我们平时的生活中也是经常说服务器异常等等其实都是说的客户端与服务器架构,这种网络架构主要就是两种角色:客户端和服务器。

客户端(client)可以是应用程序也可以计算机,它主要是向服务器发起请求(该请求通常是某项服务或者资源),客户同时会接收并处理服务器的响应。

客户端通常用于用户交互,处理用户输入,并且把服务器的响应处理显示数据。它可以是桌面应用程序、移动应用程序或Web浏览器,Chatgpt这样的AI等等。

服务器(server)是为客户端提供服务或资源的计算机或程序。它接收客户端的请求,处理这些请求,并将结果返回给客户端。

服务器通常具备处理请求、存储数据和提供服务的能力。它可以是Web服务器、数据库服务器、邮件服务器等。

2

订阅与发布模型

大订阅与发布模型(Publish-Subscribe Model)是一种消息传递和事件处理的架构模式,最典型的就是目前主流的MQTT了。

该模型主要用于在分布式系统中实现消息的分发和接收。这种模型使得系统的组件可以松耦合地进行通信,通常被广泛应用于消息队列、事件驱动架构、通知服务等场景。通常该模型有如下四部分组成:

发布者(Publisher)

发布者是消息的发送者或生产者。它创建并发送消息到一个或多个主题(Topic),而不关心消息会被哪些订阅者接收。发布者将消息发布到指定的主题中,任务完成后不再处理该消息的分发。

订阅者(Subscriber)

订阅者是消息的接收者或消费者。它向系统注册感兴趣的主题,以便接收相关的消息。订阅者对一个或多个主题进行订阅,从而接收到这些主题中发布的所有消息。

主题(Topic)

主题是一个逻辑上的消息分类标准,消息发布时会指定一个主题,订阅者根据主题来筛选和接收消息。主题作为消息的分类标识,帮助系统将消息分发给正确的订阅者。

消息代理(Message Broker)

消息代理是处理消息传递的中间件,负责接收、存储、分发消息。消息代理充当发布者和订阅者之间的中介,处理消息的路由和传递。

可以看出来这种模型相对C/S模型要灵活更多。

3

两大模型对比

前面大致介绍了两大模型的基本组成,那么这里我们聊聊看两个模型的区别,以及在实际项目中如何去选择。

C/S模型是一种请求响应机制,应对比较频繁的数据交互的需求会采用一种长时间的持续连接,当然了也有一些临时的连接形式主要用于处理一些请求和响应周期较短的应用。

如果客户端需要不断地请求服务器且还需等待服务器响应,那网络带宽的消耗非常之高。而发布/订阅模式允许设备仅在需要时传递数据,而不是不断地轮询,这减少了频繁的网络请求和带宽消耗。

C/S模式相对订阅发布模式角色管理上更加的集中,资源共享能力会更强,服务器的安全等级越高,整个系统也会相应的更加稳定安全。

而订阅与发布模式通过了主题和代理进行了解耦,增减角色对系统核心结构不会发生很大变化,其扩展性会好很多。当然也因为订阅与发布模式增加了代理,所以相对C/S这种点对点的模式延时会增加。

4

两大模型的应用选择

所以谈了这么多,客户端与服务器模型主要适用于需要直接、同步通信的场景,如:

  1. 网页浏览:客户端请求网页内容,服务器返回页面数据。
  2. 在线交易系统:客户端发起交易请求,服务器处理并返回结果。

而发布订阅模型适用于需要解耦和异步通信的场景,如:

  1. 消息通知系统:应用向用户发布通知,用户通过订阅接收。
  2. 物联网监控:设备发布传感器数据,其他设备或系统订阅这些数据进行处理。

大家在以后的系统设计中根据实际项目需求合理的选择相应的模型,往往一个合适的模型会给后续的开发带来极大的便利。

最后

      好了,今天就跟大家分享这么多了,如果你觉得有所收获,一定记得点个~

唯一、永久、免费分享嵌入式技术知识平台~

推荐专辑  点击蓝色字体即可跳转

☞  MCU进阶专辑 ce0af126b5471022c58ed14a3ac1ef0a.gif

☞  嵌入式C语言进阶专辑 67816a298e125febda02484ec1428c16.gif

☞  “bug说”专辑 573d1f79f1e407e56f4946686a4fa672.gif

☞ 专辑|Linux应用程序编程大全

☞ 专辑|学点网络知识

☞ 专辑|手撕C语言

☞ 专辑|手撕C++语言

☞ 专辑|经验分享

☞ 专辑|电能控制技术

☞ 专辑 | 从单片机到Linux

0ded34e189319ca452f920f4a77ff4b9.gif

相关内容

热门资讯

闹钟安卓系统个人总结,闹钟安卓... 闹钟,这个看似普通的小玩意儿,却在我日常生活中扮演着不可或缺的角色。自从我拥有了安卓手机,这个系统自...
华为安卓系统不能更新,迈向自主... 最近网上闹得沸沸扬扬的,说华为的安卓系统不能更新了,这可把咱们这些华为手机用户给急坏了。别急,别急,...
苹果系统安装安卓应用,轻松体验... 亲爱的果粉们,你是不是也和我一样,对安卓应用爱得深沉呢?虽然苹果手机自带的应用商店琳琅满目,但有时候...
安卓机重装系统windows系... 亲爱的手机控们,你们有没有想过,你的安卓手机也能变身成Windows系统的超级战士呢?没错,就是那个...
安卓系统安装xp系统教程视频,... 你有没有想过,在手机上也能玩Windows XP呢?没错,就是那个经典的操作系统,现在它竟然能在安卓...
游戏手机推荐安卓系统,性能与体... 你有没有想过,一款好的游戏手机,就像是你的游戏世界里的超级英雄呢?它不仅能让你在虚拟的世界里所向披靡...
安卓系统都是通用吗,通用性与个... 你有没有想过,安卓系统是不是真的像它的名字一样,通用到无处不在呢?咱们今天就来聊聊这个话题,看看安卓...
安卓系统视频倍速播放,倍速播放... 亲爱的手机控们,你是否有过这样的经历:一部精彩的电影,一部有趣的纪录片,或者一段重要的教学视频,因为...
苹果手机壁纸安卓系统,苹果手机... 哇塞,你有没有发现,手机壁纸可是我们个性展示的小天地呢!想象每天看着自己心爱的手机,背景是你的最爱,...
苹果手机说安卓系统,兼容性与创... 你知道吗?在这个科技飞速发展的时代,手机已经成为了我们生活中不可或缺的好伙伴。而说到手机,那可真是各...
安卓系统广告怎么关,享受纯净体... 手机里的广告是不是让你烦得要命?别急,今天就来教你几招,让你轻松告别安卓系统广告的烦恼!一、设置篇:...
hinova属于安卓系统吗,体... 你有没有听说过hinova这个牌子?最近,它可是手机圈里的小热门呢!不过,说到hinova,你是不是...
安卓手机开启双系统,安卓手机开... 你有没有想过,你的安卓手机也能变身成“双胞胎”呢?没错,就是那种一个手机里藏着两个系统的神奇操作!是...
小米安卓系统设置下载,轻松设置... 亲爱的米粉们,你是否曾为小米安卓系统的设置和下载而烦恼?别担心,今天我要带你一起探索这个神秘的世界,...
安卓平板适配鸿蒙系统,体验全新... 你知道吗?最近科技圈可是炸开了锅,因为安卓平板适配鸿蒙系统这个大事件,让不少平板用户都兴奋不已。想象...
小米手机提示安卓系统,解锁手机... 亲爱的手机控们,你们有没有遇到过这种情况:你的小米手机突然跳出来一个提示,告诉你安卓系统需要更新啦!...
安卓12系统和121,功能升级... 安卓12与121:揭秘新一代安卓系统的魅力与挑战亲爱的手机控们,你是否也和我一样,对安卓系统的每一次...
锤子系统改安卓系统吗,打造独特... 你有没有想过,你的手机系统是不是也能来个华丽变身呢?今天,就让我带你一起探索锤子系统是不是可以改安卓...
大众系统连接安卓手机,“大众车... 亲爱的车主朋友们,你们是不是也和我一样,开车的时候总想用手机来听听音乐、导航导航,或者接个电话呢?不...
网鱼鱼管家安卓系统,智能生活新... 你有没有发现,最近手机上的网鱼鱼管家安卓系统可是火得一塌糊涂呢!这不,我就来给你好好扒一扒,看看这个...