分布式与集群,二者区别是什么?

🐓分布式

分布式系统是由多个独立的计算机节点组成的系统,这些节点通过网络协作完成任务。每个节点都有自己的独立计算能力和存储能力,可以独立运行。分布式系统的目标是提高系统的可靠性、可扩展性和性能。

分布式服务包含的技术和理论

负载均衡:

Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层

LVS:Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层

webserver:

Java:Tomcat,Apache,Jboss

service:

SOA、微服务、spring boot,django

容器:

docker,kubernetes

cache:

memcache、redis等

协调中心:

zookeeper、etcd等

zookeeper使用了Paxos协议Paxos是强一致性,高可用的去中心化分布式。zookeeper的使用场景非常广泛,之后细讲。

rpc框架:

grpc、dubbo、brpc

dubbo是阿里开源的Java语言开发的高性能RPC框架,在阿里系的诸多架构中,都使用了dubbo + spring boot

消息队列:

kafka、rabbitMQ、rocketMQ、QSP

消息队列的应用场景:异步处理、应用解耦、流量削锋和消息通讯

实时数据平台:

storm、akka

离线数据平台:

hadoop、spark

db:

mysql、oracle、MongoDB、HBase

搜索:

elasticsearch、solr

日志:

  • rsyslog、elk、flume

🐓集群

集群是由多个计算机组成的一个单一的系统,这些计算机通过网络连接在一起,共享资源和任务。集群中的每个计算机都有相同的硬件和软件配置,可以同时执行同样的任务。集群的目标是提高系统的可靠性、可扩展性和性能。

集群的特征

高可靠性(HA)

利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

相当于古代皇帝有一个太子,皇上如果驾崩了,太子可以继续完成皇上应该做的工作

高性能计算(HP)

即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析、化学分析等。

相当于一群蚂蚁一起工作干一件事情,利用好自身的最大资源

负载均衡(LB)

即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

HTTP重定向负载均衡

当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过重定向,来达到“负载均衡”的目标。例如,我们在下载JAVA源码包的时候,点击下载链接时,为了解决不同国家和地域下载速度的问题,它会返回一个离我们近的下载地址。重定向的HTTP返回码是302。优点:比较简单。缺点:浏览器需要两次请求服务器才能完成一次访问,性能较差。重定向服务自身的处理能力有可能成为瓶颈,整个集群的伸缩性国模有限;使用HTTP302响应码重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。

DNS域名解析负载均衡

DNS(Domain Name System)负责域名解析的服务,域名url实际上是服务器的别名,实际映射是一个IP地址,解析过程,就是DNS完成域名到IP的映射。而一个域名是可以配置成对应多个IP的。因此,DNS也就可以作为负载均衡服务。事实上,大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段,即域名解析得到的一组服务器并不是实际提供Web服务的物理服务器,而是同样提供负载均衡服务的内部服务器,这组内部负载均衡服务器再进行负载均衡,将请求分发到真是的Web服务器上。优点:将负载均衡的工作转交给DNS,省掉了网站管理维护负载均衡服务器的麻烦,同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成举例用户地理最近的一个服务器地址,这样可以加快用户访问速度,改善性能。缺点:不能自由定义规则,而且变更被映射的IP或者机器故障时很麻烦,还存在DNS生效延迟的问题。而且DNS负载均衡的控制权在域名服务商那里,网站无法对其做更多改善和更强大的管理。

反向代理负载均衡

反向代理服务可以缓存资源以改善网站性能。实际上,在部署位置上,反向代理服务器处于Web服务器前面(这样才可能缓存Web相应,加速访问),这个位置也正好是负载均衡服务器的位置,所以大多数反向代理服务器同时提供负载均衡的功能,管理一组Web服务器,将请求根据负载均衡算法转发到不同的Web服务器上。Web服务器处理完成的响应也需要通过反向代理服务器返回给用户。由于web服务器不直接对外提供访问,因此Web服务器不需要使用外部ip地址,而反向代理服务器则需要配置双网卡和内部外部两套IP地址。优点:和反向代理服务器功能集成在一起,部署简单。缺点:反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

🐓总结

举一个例子:假设有一个在线商店,它包含订单处理、库存管理和支付处理等多个功能。在传统的单体应用程序中,所有这些功能都由一个应用程序处理。但在微服务架构中,我们可以将每个功能拆分成一个独立的服务,例如订单服务、库存服务和支付服务。这些服务可以独立开发、测试、部署和扩展,同时通过网络协议进行通信和协作。这样,当其中一个服务出现问题时,我们只需要处理该服务,而不需要影响整个应用程序。这就是微服务架构的优点之一。

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

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

相关文章

EPSON X1G004481000300 SG7050CAN晶体振荡器

在射频拉远单元(RRU)设计中,一般需要用到以太网PHY芯片发送和接收以太网的数据帧,与主控芯片进行网络数据交互,为保证以太网PHY芯片正常工作,一般需要选择25MHz标准频率的有源晶振用于以太网PHY芯片时钟设计,为保证射频拉远单元(RRU&#xff…

面向对象(下)

目录 01、static1.1、static的使用1.2、static应用举例1.3、单例(Singleton)设计模式 02、main方法的语法03、类的成员之四:代码块04、关键字:final05、抽象类与抽象方法5.1、多态的应用:模板方法设计模式(TemplateMethod) 06、接口(interfac…

《Learning Hierarchical Modular Networks for Video Captioning》论文笔记

论文信息 原文链接: Learning Hierarchical Modular Networks for Video Captioning | IEEE Journals & Magazine | IEEE Xplore 原文代码 GitHub - MarcusNerva/HMN: [CVPR2022] Official code for Hierarchical Modular Network for Video Captioning. Ou…

数字多空策略(实盘+回测+数据)

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

AI智能分析网关V4将HTTP消息推送至安防监控视频汇聚EasyCVR平台的操作步骤

TSINGSEE青犀视频智能分析网关V4内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结果,并能进行语音告警播放。硬件管理平台支持RTSP、GB28181协议、以及厂家私有协议接入,可兼容市面上常…

熔断降级的方案实现

熔断降级的方案实现 Spring Cloud Netflix Hystrix 提供线程隔离、服务降级、请求缓存、请求合并等功能可与Spring Cloud其他组件无缝集成官方已宣布停止维护,推荐使用Resilience4j代替 Spring Cloud Resilience4j 轻量级服务熔断库 提供类似于Hystrix的功能 具有更…

谁将是RAG的头部玩家?

开篇 菩提修妙树,接引证法源,屠龙万仙阵,玉虚祭封神。 混战是国内技术圈的常态,在众仙跟风与追捧的大潮中,如何看清方向至关重要,决定谁最终将封神。 语言大模型(LLM),多模态(MM),…

吴恩达deeplearning.ai:使用多个决策树随机森林

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 为什么要使用树集合使用多个决策树(Tree Ensemble)有放回抽样随机森林XGBoost(eXtream Gradient Boosting)XGBoost的库实现何时使用决策树决策树和树集合神经网络 使用单个决策树的…

SpringBoot集成Redisson实现接口限流

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Dat…

yolov8 分割 模型 网络 模块图

下图是使用yolov8n-seg-p6.yaml imgsz1472 类别数2的情况下训练得到的静态导出的onnx文件使用netron工具可视化的结果 简单标注了yolov8n-seg-p6.yaml配置文件中各层和netron工具可视化的结果的对应关系(head 中的 Segment除外)

【Codesys】-获取系统负载-获取总线周期计数和任务名字

获取PLC负载: 支持库: 获取每个当前Pou的任务周期计数、名字

Xcode调试Qt 源码

在Mac下使用Xcode 开发Qt程序,由于程序断点或者崩溃后,Qt库的堆栈并不能够正确定位到源码的cpp文件,而是显示的是汇编代码,导致不直观的显示。 加载的其他三方库都是同理。 所以找了攻略和研究后,写的这篇文章。 一&a…