[分布式网络通讯框架]----集群与分布式的区别

news2024/12/23 15:24:39

单机聊天服务器

聊天系统做了模块化设计,每一个模块都包含很多特定的业务
在这里插入图片描述

缺点:

  1. 单机聊天服务器极大程度的受限于硬件资源,服务器所能承受的用户并发量是有限的,即使我们通过改变最大连接量等参数,但是受到单机本身物理性质的限制,并发量是存在上限的;

  2. 在项目中,客户需求发生改变的时候,我们对任意模块进行修改,即使很小的模块,很小的修改,都会导致整个项目代码重新编译、部署,对于大型项目来说,十分耗时,如果修改有误,再次修改就会导致重新编译;

  3. 系统中,有些模块是CPU密集型,有些是IO密集型,造成各模块对硬件资源的需求是不一样的,我们对此的部署也应该是不同的,否则会导致CPU性能利用率低等现象。

集群聊天服务器

每一台服务器都是一套独立的聊天系统
在这里插入图片描述

优点

用户并发量得到了提升,集群部署简单!

缺点

  1. 修改模块项目代码还是需要重新编译,并且不同的服务器都需要进行再次编译,从而要进行多次编译,相比于单机聊天服务器,编译更加费时费力

  2. 有些模块是CPU密集型,有些是IO密集型,造成各模块对硬件资源的需求是不一样的,比如后台管理不需要高并发,所以不需要每台机器都部署相同的聊天系统。

分布式聊天服务器

一个项目拆分成多个模块,每一个模块独立部署在一个服务器上,所有服务器协同工作共同完成项目需要,对客户提供所需服务。对此,每一台服务器称作分布式的一个节点,根据节点的并发要求,对一个节点可以再做节点模块集群部署,比如下图分布式节点1可以再集群部署出分布式节点1-1,分布式节点1-2,…针对不同的需求,可以按需部署相应的资源。

在这里插入图片描述

分布式聊天系统存在的问题

  1. 对于系统中的各类软件模块,如果合理的进行划分?各个模块之间的耦合问题会造成各模块可能会实现大量重复的代码,如何去避免这样的事件的发生。

  2. 各模块都运行在不同的进程里(如docker虚拟化环境中),各模块之间如何通信呢?例如机器1上的模块怎么调用机器2上的模块的一个业务方法?机器1上的一个模块进程1怎么调用机器1上的模块进程2里面的一个业务方法呢?

这也是我们这个项目要解决的问题,接下来我们将会一步一步的解决这些问题。

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

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

相关文章

VUE div的右上角的角标/标签

一、效果图 二、代码 <div class"comp-overview"><div class"overview-item" v-for"(item,index) in overviewInfoList" :key"index"><div class"angle_mark"><span>{{item.label}}</span>&…

CRMEB 多商户Java版v1.6公测版发布,付费会员上线,立即体验

新版本来袭&#xff01;CRMEB 多商户Java版v1.6正式发布&#xff01; 在v1.6新版本中&#xff0c;我们带来了付费会员体系&#xff0c;这将让商业模式更加灵活多元&#xff0c;新增加的移动端商家管理&#xff0c;也让运营触手可及&#xff0c;更加便捷&#xff0c;还有商家端员…

Pixel Heroes Fantasy Editor

使用Pixel Heroes: Fantasy Editor创建令人惊叹的像素角色!它是如何工作的?只需在编辑器中构建角色并保存动画精灵表。运行时动态构建角色使用角色构建器脚本!想将角色与不同的游戏引擎一起使用?只需制作PNG精灵表并导入其他软件! 特征: ● 角色编辑器,用于生成64x64帧的…

【SQL Server数据库】简单查询

目录 用SQL语句完成下列查询。使用数据库为SCHOOL数据库 1. 查询学生的姓名、性别、班级名称&#xff0c;并把结果存储在一张新表中。 2. 查询男生的资料。 3. 查询所有计算机系的班级信息。 4&#xff0e;查询艾老师所教的课程号。 5. 查询年龄小于30岁的女同学的学号和姓名。…

基于Java中的SSM框架实现萌宠优购系统项目【项目源码】计算机毕业设计

基于Java中的SSM框架实现萌宠优购系统演示 研究背景 现在人们在生活中、工作中压力与日俱增&#xff0c;而宠物也在人们的生活扮演者越来越重要的角色。然而&#xff0c;对于一些宠物爱好者来说&#xff0c;宠物早已经是他们生活中不可或缺的一部分。因为宠物能与人有心灵的沟…

【开放词汇分割】GroupViT: Semantic Segmentation Emerges from Text Supervision

论文链接&#xff1a;GroupViT: Semantic Segmentation Emerges from Text Supervision 代码链接&#xff1a;https://github.com/NVlabs/GroupViT/tree/main 作者&#xff1a;Jiarui Xu, Shalini De Mello, Sifei Liu, Wonmin Byeon, Thomas Breuel, Jan Kautz, Xiaolong Wa…

Centos 9Ubuntu 22.0.3图形搭建网桥

1、安装bridge-utils软件 [root@devcops612 ~]# yum install bridge-utils.x86_64 2、创建桥接器 [root@devcops612 ~]# cd /etc/NetworkManager/system-connections [root@devcops612 ~]# nmcli connection show #查看网络连接,确认桥接物理接口 [root@devcops612 system…

吴恩达机器学习作业ex4:反向神经网络学习(Python实现)详细注释

文章目录 1.神经网络1.1 可视化数据1.2 模型表示1.3 前馈和成本函数1.4 正则化代价函数 2.反向传播2.1 Sigmoid的导数2.2随机初始化2.3 反向传播2.4梯度检测2.5 正则化神经网络2.6 优化参数 3.可视化隐藏层 1.神经网络 在上一个练习中&#xff0c;您为神经网络实现了前馈传播&…

Steam怎么卸载DLC Steam怎么只卸载DLC不卸载游戏教程

我们玩家在steam中玩游戏&#xff0c;有一个功能特别重要&#xff0c;那就是DLC&#xff0c;其实也就是一款游戏的扩展&#xff0c;很多游戏都有DLC&#xff0c;让游戏玩法特别丰富&#xff0c;比如都市天际线的DLC&#xff0c;给城市中就增加了很多建筑&#xff0c;或者更便捷…

第十二次作业

成功做出insert 点击新增跳转到insert.html 点击增加&#xff0c;跳转回studentinformation2.html 数据表和页面都显示出新增的数据了 成功做出来删除 点击删除按钮 点击确定&#xff0c;丽丽被成功删除&#xff01; 一些代码

【Linux】进程间通信_2

文章目录 七、进程间通信1. 进程间通信分类管道 未完待续 七、进程间通信 1. 进程间通信分类 管道 管道的四种情况&#xff1a; ①管道内部没有数据&#xff0c;并且具有写端的进程没有关闭写端&#xff0c;读端就要阻塞等待&#xff0c;知道管道pipe内部有数据。 ②管道内部…

混合云管道的未来:集成 MinIO、Tailscale 和 GitHub Actions

数据处理是现代软件开发的基本实践。它使团队能够自动收集、处理和存储数据&#xff0c;确保高质量的数据和高效的处理。 在本文中&#xff0c;我们将探讨如何建立一个全面的数据处理管道&#xff0c;重点介绍如何使用 Tailscale GitHub Action 进行安全网络。此设置还将包含 …

MindManager2024思维导图大升级!轻松绘制思维导图

思维导图大升级&#xff01;MindManager2024新体验 最近在用MindManager2024制作思维导图&#xff0c;感觉它是一款非常专业的软件。它的界面设计简洁明了&#xff0c;操作流畅&#xff0c;让我能够轻松地整理思绪、规划计划和记录灵感&#x1f4a1;。 MindManager思维导图工具…

电商平台是申请ICP许可证还是EDI许可证?

随着直播行业大火热&#xff0c;越来越多的企业开始从事电商业务&#xff0c;那么电商平台的&#xff0c;需要办理什么许可证&#xff1f;是ICP许可证还是EDI许可证&#xff1f;今天小编为您详细说明一下。 首先&#xff0c;不管是ICP许可证还是EDI许可证&#xff0c;都属于增…

写一个坏越的个人天地(三)

昨天卡巴卡巴还是投出了学习代码以来的第一份简历,遇到好的岗位还是想争取下的吧,虽然我觉得大概率还是gg了。 昨天完成了首页的上半部分 下半部分我的构思是左右栏,左侧为菜单栏,右侧为业务栏,左侧调整右侧router进行切换内容 可以用来展示js css的小demo 稍微调整下ro…

ONLYOFFICE8.1版本震撼来袭

目录 软件简介 产品概述&#xff1a; 功能特点&#xff1a; 技术原理&#xff1a; 版本与部署&#xff1a; 8.1版本更新 全新的PDF编辑器 1.文本编辑 2.页面处理 &#xff08;添加、旋转、删除&#xff09; 3.插入和调整各种对象&#xff0c;例如表格、形状、文本框、…

Redis之商品缓存

文章目录 什么是缓存添加Redis缓存缓存更新策略缓存穿透缓存空对象布隆过滤器 缓存雪崩给不同的key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略给业务添加多级缓存 缓存击穿互斥锁逻辑过期 缓存工具封装方法1 写入redis方法2 设置逻辑过期方法3 解…

Android集成高德地图SDK(1)

1.新建Android应用&#xff0c;确定应用包名 2.注册高德开放平台&#xff0c;打开控制台页面&#xff0c;应用管理&#xff0c;我的应用&#xff0c;创建新应用 3.添加Key 4.获取SHA1码 找到Android Studio自带的keytool 将其拖到cmd中&#xff0c;输入命令 -v -list -keystor…

Qt:2.环境搭建

目录 1.搭建需要的三个组件&#xff1a; 2.下载Qt安装包&#xff1a; 3.安装qt&#xff1a; 4.配置环境变量&#xff1a; 1.搭建需要的三个组件&#xff1a; C编译器&#xff08;gcc&#xff0c;cl.exe等&#xff09;Qt的SDK&#xff1a;软件开发工具包&#xff0c;Windows…

component-切换选中状态更改

1.例 实现默认选中初始值&#xff0c;点击选中对应状态。 2.代码 2.1 html <span click"ponIn()" class"market-switch" :style"{color: SelectedOne ? :#1890FF,borderBottom:SelectedOne ? :1px solid #1890FF}">业务1</span>…