应用架构——集群、分布式、微服务的概念及异同

news/2024/7/7 22:17:40
一、什么是集群?
        集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题。
集群主要具有以下特征:
(1)、 伸缩性
        在一些大系统中,预测最终用户的数量和行为是非常困难的,伸缩性是指系统使用不断增长的用户数的能 力;随着用户数的增长,我们只需将新的服务器加入集群中即可,对于用户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。
(2)、 高可用性
        单一服务器的解决方案并不是一个健壮方式,因为容易出现单点失效,在某些关键的应用程序是不能容忍 的,哪怕几分钟的死机;高可用性集群的出现就是为了使集群的整体服务尽可能可用,以便考虑软硬件的易错性;如果高可用性集群中的主节点发生了故障,那么这段时间内由次节点代替它。
(3)、负载均衡
        负载均衡集群为企业需求提供了更实用的系统,该系统使负载可以在计算机集群中尽可能平均地分摊处理,该负载可能是需要均衡的应用程序处理负载或网络流量负载;这样的系统非常适合运行同一组应用程序的大量用户;每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。
(4)、高性能
        这种设计用来开发并性编程应用模式,以解决复杂的科学问题,并行计算是相对于串行计算来说的,并行计算能力的目的是用来提高计算速度。
二、什么是分布式?
        分布式服务是指多台服务器集中在一起,服务是分散部署在不同的机器上; 每台机器都实现总体中的不同业务,做不同的事情;一个服务可能负责几个功能,是一种面向SOA的架构;各分开部署的部分彼此通过各种通讯协议交互信息,并且每台服务器都缺一不可,如果某台服务器故障,则部分功能缺失,或者导致整体无法运行;
        分布式存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。
        将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。
三、什么是微服务?
        微服务的概念和分布式比较相似,微服务是一种架构风格;简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能;每个微服务仅关注于完成一件任务并很好地完成该任务,这个服务可以单独部署运行;
        各个服务之间是松耦合的,服务之间可以通过RPC来相互交互;微服务与分布式还有一点区别是: 微服务的应用不一定是分散在单个服务器上,它也可以是同一个服务器。
        微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,敏捷性也更高;但服务微服务化后带来的挑战也是显而易见的,例如服务粒度小、数量大、后期运维难度增大等。
四、集群、分布式、微服务的异同及联系
(1)分布式是以缩短单个任务的执行时间来提升效率,而集群则是通过提高单位时间内执行的任务数来提升效率;但 分布式需要做好事务管理。
(2)集群模式是不同服务器部署同一套服务,对外提供服务,实现服务的负载均衡;区别集群的方式是根据部署多台服务器业务是否相同,分布式中的每个节点都可以做集群;而集群并不一定就是分布式的。
        注意:集群需要做好Session共享,也就是接口要具有无状态特征,确保在不同服务器切换的过程中不会因为没有获取到Session而引起服务终止。
(3)分布式与微服务的架构很相似,只是部署方式不一样而已;生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的。
(4)在设计与开发中我们可以将分布式与集群的分开吗?
        分布式的主要功能是将我们的系统模块化,将系统进行解耦,方便维护和开发;但并不能解决系统的并发性和高可用性问题;而集群恰好弥补了分布式的缺陷,一方面可以解决或者说改善系统的并发问题,另一方可以解决服务器如果出现宕机后,系统仍然可以正常运转;好的设计应该是分布式和集群相结合,具体实现就是业务拆分成很多子业务,然后对每个子业务进行集群部署。

http://lihuaxi.xjx100.cn/news/1876701.html

相关文章

Python ItsDangerous库:构建安全可靠的数据传输

更多资料获取 📚 个人网站:ipengtao.com ItsDangerous是Python中一个轻量级的库,旨在提供安全且简单的数据传输和签名功能。本文将深入介绍ItsDangerous的核心特性、基本用法以及在实际应用中的一些示例,通过丰富的示例代码&…

microblaze仿真

verdivcs (1) vlogan/vcs增加编译选项 -debug_accessall -kdb -lca (2) 在 simulation 选项中加入下面三个选项 -guiverdi UVM_VERDI_TRACE"UVM_AWARERALHIERCOMPWAVE" UVM_TR_RECORD 这里 -guiverdi是启动verdi 和vcs联合仿真。UVM_VERDI_TRACE 这里是记录 U…

macOS 获取文件夹大小

macOS 获取文件夹大小 获取文件夹大小的扩展如下: extension URL {var fileSize: Int? { // in bytesdo {let val try self.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])return val.totalFileAllocatedSize ?? val.fileAll…

库卡LBR_iisy_3_R760协作机器人导入到coppeliasim

1.从库卡官网xpert下载模型 一般载都是这个step文件格式,其他的好像不太好用。coppeliasim导入格式用的是stl,需要用freeCAD打开重新转换一下。下载下来后,很多都是一个整体,在freeCAD导入中,导入选择要不勾选合并。 下载完用CAD …

ERPNext SQL 注入漏洞复现

0x01 产品简介 ERPNext 是一套开源的企业资源计划系统。 0x02 漏洞概述 ERPNext 系统frappe.model.db_query.get_list 文件 filters 参数存在 SQL 注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权…

vue pc官网顶部导航栏组件

官网顶部导航分为一级导航和二级导航 导航的样子 文件的层级 router 文件层级 header 组件代码 <h1 class"logo-wrap"><router-link to"/"><img class"logo" :src"$config.company.logo" alt"" /><i…

Ubuntu 20.04安装禅道开源版

## Ubuntu 20.04安装禅道开源版 ## jerry 20231208 # 下载解压 cd /opt wget https://dl.cnezsoft.com/zentao/18.9/ZenTaoPMS-18.9-zbox_amd64.tar.gz tar xvzf ZenTaoPMS-18.9-zbox_amd64.tar.gz # 配置&#xff08;没啥可配的&#xff09; # 启动 启动所…

Linux:使用pv实现执行进度监控

pv全称&#xff1a;Pipe Viewer&#xff0c;通过管道显示数据处理进度的信息 安装 yum install pv -y示例 复制文件 # 显示进度 pv data.sql > ./data-new.sql330MiB 0:00:00 [1.32GiB/s] [>] 100%限制mysql数据导出速率 mysqldump | pv -L10m > data.sql# -L, -…