需要单机还是集群部署_单机、分布式、集群的区别与联系

一、单机结构

  一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供。这就是单机结构。单机结构的缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式。

二、集群结构

  单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。

  但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”有个牛逼了名字——负载均衡服务器

  集群结构的好处就是系统扩展非常容易。如果随着你们系统业务的发展,当前的系统又支撑不住了,那么给这个集群再增加节点就行了。但是,当你的业务发展到一定程度的时候,你会发现一个问题——无论怎么增加节点,貌似整个集群性能的提升效果并不明显了。这时候,你就需要使用微服务结构了。

三、分布式结构

  从单机结构到集群结构,你的代码基本无需要作任何修改,你要做的仅仅是多部署几台服务器,每台服务器上运行相同的代码就行了。但是,当你要从集群结构演进到微服务结构的时候,之前的那套代码就需要发生较大的改动了。所以对于新系统我们建议,系统设计之初就采用微服务架构,这样后期运维的成本更低。但如果一套老系统需要升级成微服务结构的话,那就得对代码大动干戈了。所以,对于老系统而言,究竟是继续保持集群模式,还是升级成微服务架构,这需要你们的架构师深思熟虑、权衡投入产出比。

  下面开始介绍所谓的分布式结构。

  分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

  举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。

  这样的好处有很多:

  1、系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。

  2、系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。

  3、服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

四、三者之间的区别和联系

  以下漫画图很形象地说明三者之间的区别和联系:

842e98fe6d12eec11ad223f37381b353.png

五、总结

  集群是个物理形态,分布式是个工作方式。只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,嗯,C/S架构也可以叫分布式。
集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

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

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

相关文章

拖动卡顿_四招教你解决PS软件卡顿问题!

你是不是经常会遇到这样的问题?刚装的Ps速度很快,使用一段时间以后发现越来越卡,时不时还会死机崩溃?大多数人遇到这种问题都是选择重装软件,或者重做系统,耗时耗力不说,过不了多久又会出现同样…

极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)

本篇将重点关注 Sentienl 实时数据收集,即 Sentienl 具体是如何收集调用信息,以此来判断是否需要触发限流或熔断。Sentienl 实时数据收集的入口类为 StatisticSlot。我们先简单来看一下 StatisticSlot 该类的注释,来看一下该类的整体定位。St…

文字描边_6招迅速做出炫酷PPT字效!|10分钟干货第二期(文字描边)

不点蓝字,我们哪来故事?艺术让一切枯燥变有趣 作者 | 易焦躁星人微信号 | wyx19911003每周一篇,干货满满建议收藏,慢慢实践PPT酷炫【字效】第二弹来啦!平时做PPT无从下手没灵感?根本原因还对功能实践的不够…

华为手机鸿蒙系统怎么样_华为自研操作系统“鸿蒙”已用于华为手机

重要信息有网友近日在社交网络上曝光了华为的自研操作系统,命名为“鸿蒙”,其已用于华为手机中(安全部分)。来自上海交通大学的一份PPT演示照片,图中显示,某教授领导华为操作系统团队开发了自主产权操作系统——鸿蒙。根据PPT描述…

chrome浏览器上传文件延迟_解决谷歌Chrome浏览器上传图片反应慢的办法

谷歌chrome浏览器本来非常好用,但是可能有的人在更新版本或重装电脑后,用着用着突然发现上传图片或文件的时候居然直接卡死!只能强制关闭后用ie上传,为此笔者也一度很苦恼。笔者在网上搜索答案后,并没有得到有效的帮助&#xff0c…

mysql配置两个猪数据库_Linux下安装启动多个Mysql

步骤如下:一、编译安装两个mysql,步骤如下安装第一个数据库(主数据库)(红色部分为默认数据库文件路径,可改成其他如:data、var等)tar zxvf mysql-6.0.11-alpha.tar.gzcd mysql-6.0.11-alpha./configure --prefix/usr/local/mysql3…

linux 两个mysql_Linux下安装两个MySQL的方法

问题的产生:在已有的Red Hat Enterprise Linux AS 3.0系统上已经运行了一套web程序,使用MySQL4, tomcat41, 现在又要求安装一套新程序,依旧使用该tomcat41, 但数据库变为mysql5。注意事项:新的程序需要注意字符集的问题&#xff0…

ef mysql db first_Net Core使用EF之DB First

一.新建一个.net core的MVC项目新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖二.使用Nuget添加EF的依赖输入命令: Install-Package Microsoft.EntityFrameworkCore.SqlServer安装成功后就可以在依赖项中看到注意执行命令…

kali装电脑_教你Kali Linux怎么安装Nessus软件

Nessus是系统漏洞扫描与分析软件,但Nessus在Kali Linux上的安装可不简单,没有提供一个图形化的安装借口,下面小编就给大家介绍下如何在Kali Linux上安装Nessus。用w3m命令在终端下打开http://www.tenable.com/products/nessus/select-your-op…

vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹

Win10主机和Vmware linux共享文件夹1.首先确保虚拟机中的linux能ping通主机,证明虚拟机是可以访问到的主机的(这个不会可百度)2.右击你想要共享的文件夹选择属性,点击共享,同时加入一个everyone用户,权限为读取/写入3.然后点击高级…

java settings文件夹_windows下打开.m2文件夹,没有找到setting.xml

Frank作家2018-03-15 10:07已采纳那就自己创建一个手动创建本地仓库的存放路径,例如:D:\Java\m2\repository;在windows的环境变量中增加了新的用户变量M2_REPO,其对应的值为D:\Java\m2\repository(Maven仓库的本地存放路径)&#…

java 播放.pcm文件_如何在浏览器中播放pcm音频

本文记录一点工作经历,探讨音频文件的格式更多访问我的博客前言最近在整理音视频编程的知识,回忆起半年多,有一次需求是在后台播放某来源的 pcm 文件,当时处理方法用了点技巧,记录下来背景:业务需求&#x…

mysql 完全备份恢复吗_mysql完全备份与恢复

备份的重要性:在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.硬件故障软件故障自然灾害误操作 (占比最大)备份类型:物理和逻辑角度:物理备份---指对数据库操作系统的物理文件的备份逻辑备份---指对数据…

scala与java的区别_Scala学习笔记及与Java不同之处总结

Scala与Java具有许多相似之处,但又有许多不同。这里主要从一个Java开发人员的角度,总结在使用Scala的过程中所面临的一些思维转变。这里只是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方。下面…

centos6.5搭建mysql主从_mysql 主从配置,主-》windows,从-》centos6.5

1.虚拟机配置的主从关系。win7 ip地址192.168.52.102,虚拟机ip 192.168.184.128。docs进入主服务器(master)mysql目录下,添加用户,然后执行mysql>create user dba192.168.184.128 identified by 123456 ,然后grant replication…

java 定时关机_「window定时关机命令」电脑定时关机命令,这个方法适用于win7及以下系统 - seo实验室...

window定时关机命令上班族朋友们有没有碰到一种情况:临时需要外出,又不确定是否还要回来,因此办公室的电脑关与不关,小小的纠结了一下。以下方法或者可以帮你化解这个小纠结。定时关机且可以回来时取消(本法适用于 win7及以下系统…

彩票模拟选号程序java_java课程设计-彩票购买抽奖程序

彩票抽奖程序[TOC]###可实现功能:允许注册用户,用户信息包括用户id,用户名,密码,账户金额,电话号码等属性。允许注册用户购买彩票:手动选号、随机选号,并允许设置投注数。抽奖功能:要…

java给你的初步印象_Java之初印象

Java语言的跨平台性:Java语言的编程过程:只要实现了特定平台下的解释器程序(JVM),Java字节码就能通过解释器程序在该平台下运行,这是java跨平台的根本,当前并不是在所有平台下都有相应的Java解释器程序,这也是Java并不是在所有平台下都能运行的原因,它只能在实现了Java解释器程…

php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解

这次给大家带来Jquery实现跨域异步上传文件步骤详解,Jquery实现跨域异步上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。先说明白这个跨域异步上传功能我们借助了Jquery.form插件,它在异步表单方面很有成效&#xff0c…

php js offset,获取元素的偏移量offset实例详解

问题:如果获取元素距离文档顶部的距离?[javascript] view plain copyvar rect$(#elem)[0].getBoundingClientRect();//获取元素距离文档顶部的距离var toprect.top(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop|…