当前位置:首页 > Java技术 > 浅谈分布式与集群的概念

浅谈分布式与集群的概念

2022年05月15日 22:00:23Java技术549

各位好友,好久不见,最近由于自己工作的原因+疫情,一大堆事情导致断更,不知道各位大佬有没有想我这个菜鸟,最近也是看到许多的大佬都在发自己的文章,所以我也决定出来献丑了。

浅谈分布式与集群的概念 _ JavaClub全栈架构师技术笔记


进入正题,随着互联网生态的迅速发展,中国的网民数量已经达到9亿多(据《报告》数据显示:截至2020年3月28,我国网民规模为9.04亿),越来越多的企业走向互联网;电商,小程序,云服务,短视频等等相关服务异常火爆,在这些互联网产品的背后,是一个很强大的服务后台支撑,强大的数据支撑,这当然离不开分布式服务与集群,正是这两个技术的产生,提升了互联网产业的承载力,也推动了互联网产业的发展。

什么是分布式呢?

这个词语,对程序员朋友来说其实并不陌生,在项目中、面试中,分布式在大型和重型企业都已经运用到了项目之中,对于一些刚刚入行的朋友可能只是听过这些词语:分布式,高并发,QPS每秒查询率(Query Per Second)、吞吐量。下面我来讲讲什么是分布式:

先说概念:

分布式服务是将一个完整的系统拆分为许多服务分散部署在不同的机器上,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的。

名词解释:

SOA :是一种面向服务的架构,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来

RPC : 远程过程调用,通俗的讲, RPC就是要像调用本地的函数一样去调远程函数Webservice : 可以使应用程序以与平台和编程语言无关的方式进行相互通信的一种技术

这时候可能会有朋友还是会一脸懵x

浅谈分布式与集群的概念 _ JavaClub全栈架构师技术笔记

其实概念性的东西不太好理解,我给大家讲个故事:

一个电商系统,前期用户量较少,他们将所有的服务都在同一个机器上部署(单机),随着业务的推广,网站的访问量逐渐上升,单机器的承载量有限,系统最终会承载不了更多的用户使用的时候,如何处理呢?

此时:公司的程序员A提出了一个方案,我们可以将系统的用户服务,商品服务,支付服务等服务进行拆分,调用每层服务时,使用定义好的协议调用,这样子服务一个服务器的压力可以分发给多个服务了。

此时,这个程序员A提出的方案,就是分布式的解决方案,将服务进行分发,调用服务时,采用自己定义的调用协议,简单解决承载量的问题。

分布式解决方案

分布式解决方案(分布式服务框架)

•分布式服务框架:提供了服务调用协议,服务注册发现,服务治理与一体的框架,目前主流的分布式框架有:Dubbo、JSF、Motan,都是基于RPC(远程服务调用协议)来实现服务的治理。

使用分布式框架解决了什么呢?如下图,随着系统业务的增加,服务的调用关系会更加复杂,服务之之间的调用关系也会变成如下图这种,相对复杂的调用关系,层级交错,也对服务治理造成了维护上的困扰。

浅谈分布式与集群的概念 _ JavaClub全栈架构师技术笔记

分布式架构可以将服务进行治理,将错综复杂的关系统一管理,如下图。

浅谈分布式与集群的概念 _ JavaClub全栈架构师技术笔记

一个完整的分布式服务框架才能被大众所认可,目前主流的分布式服务框架的构成如下:

(1)Provider:服务提供者,无论是业务服务,还是一个系统中公用的SAAS,都属于Provider•

(2)Consumer:即发起调用的客户端

(3)Registry:服务注册中心,是分布式服务系统中的一个重要组成模块,管理Provider的Manager,在实际的运行环境中,服务注册中心Registry被动通知或Consumer主动询问,在Provider有节点宕机或新增节点时,客户端也可实时感知到,从而避免了某个Provider被无限调用或是无限闲置

(4)Gateway:网关也是分布式服务框架中不可或缺的部分,每种系统与框架都有自己的一套协议,当异构系统互相调用时,网关的作用即显现出来,Gateway接受各种外部HTTP请求,完成相应的权限校验,报文适配,路由转发到对应的Provider,再将Provider返回的结果传递给异构系统的Consumer,完成异构系统的互相调用

(5)负载均衡,服务分流:Consumer从Registry获得具体的Provider列表后,如何选取合适的Provider,取决与一定的负载均衡算法,常见的算法有轮询法,随机法,源地址哈希,加权轮询,加权随机等

(6)监控:接收来自Consumer和Provider异步上报的性能监控数据,对有风险的节点发出告警

一个优秀的分布式框架,能够将一个系统服务进行解耦,拥有注册中心,服务可以提供和消费,完整地网关,负载,能够使系统的业务被拆分,拆分之后又能无感知的调用服务(就像在用一个模块调用服务)一样。

集群的概念

集群:顾名思义,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。结合负载均衡策略,将服务的请求压力进行分发,从而能将服务的承载量进行提升,更多的服务肯定能承载更多的请求,用数量增加的方案来支撑更多的业务量。

简单理解:将项目后台功能复制多份,结合网关,负载均衡策略,来支撑更大的业务量,用数量来提升访问量的方式,称为集群部署。

一个小故事来理解(接上一个故事):

系统被拆分之后,每一块的业务不会影响彼此,但是随着用户量的上升,某些服务会存在挂掉的情况,公司的程序员B提出了一个问题,即使我们进行了拆分,只是将每个模块业务拆开了,电商平台,商品服务肯定是使用最多的服务,那这个服务不够用,或者挂掉的时候,我们的业务不就瘫痪了吗?如何做一个备份,提高可用性,或者多个服务备份,提供更多的服务支撑呢?

此时,万能的程序员A又说:我们可以使用集群呀!

万能的程序员将拆分后的服务,进行多次拷贝,将服务的注册中心也进行拷贝,结合nginx的负载均衡,解决了项目某些模块总是被挂掉的问题。

此时:万能的程序员A使用的技术就是集群技术,但是这个技术是在分布式的基础上增加了集群,故这个系统采用的是分布式集群部署方案

下面给大家张图,这张图就是我之前简单设计的分布式集群架构图。

浅谈分布式与集群的概念 _ JavaClub全栈架构师技术笔记

分布式集群部署架构才是目前主流的高并发解决方案,在使用集群的与同时,肯定会遇到分布式锁,分布式事务的问题,这个问题我们下次再讲。

我们下次再会,欢迎各位指出问题

作者:Java小白_Mr.Yang
来源链接:http://www.it-online.cn/2020/06/11/%E6%B5%85%E8%B0%88%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%8E%E9%9B%86%E7%BE%A4%E7%9A%84%E6%A6%82%E5%BF%B5/

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/10033.html

分享给朋友:

“浅谈分布式与集群的概念” 的相关文章

什么是重载or重写,二者的区别是?

目录 1.重写 2.重载 3.重载(Overload) 和重写(Override) 的区别? 1.重写 重写必须满足如...

一分钟搞定Java环境变量配置

一分钟搞定Java环境变量配置

对于学Java的人来说,成功配置环境变量是第一步,因为后期不论 你做什么工作,会发现都需要这些,接下来介绍如何安装与配置,我按照jdk1.6来说明,其他一致。 下载官网 首先将jdk安装好后进行配置。 右击“计算机”,右键打开“属性”,...

linux系统(CentOS7)下安装tomcat8及加载缓慢处理

linux系统(CentOS7)下安装tomcat8及加载缓慢处理

一、下载tomcat 地址奉上 二、linux下安装 1.使用SecureCRT终端连接服务器 2.使用sftp Session上传tomcat压缩包到服务器上 3.使用tar -zxvf 命令解压tomcat 4.进入bin目录启动tomcat(./sta...

设计模式系列(一)—简单工厂模式

设计模式系列(一)—简单工厂模式

​ hello各位程序员大哥大姐好,上期我讲解了设计模式的概念及分类,学习了UML类图的认识,今天我们就趁热打铁,学习一下简单工厂模式,以后每一个模式会出一篇文章,供各位及我自己查阅学习。斗图还是不能忘的,为了苟且的生活,大家加油,生活不止眼前的苟且,还有远方的苟且。 第一节:简单工...

常用设计模式系列(二)—工厂方法模式

常用设计模式系列(二)—工厂方法模式

一、前言 hello各位小伙伴好,天气贼冷,多冻手,但是还是不能降低我编写设计模式讲解的热情。设计模式的魅力就像那冬天里的一把火,怎么也浇不灭; 上期讲解了简单工厂模式的应用场景及优缺点分析,今天开始我们的设计模式第二弹——工厂方法模式,其实工厂方法模式类似于简单工厂模式的一个升级...

常用设计模式系列(三)—抽象工厂模式

常用设计模式系列(三)—抽象工厂模式

一、前言 各位大佬好,又是一个冷嗖嗖的日子,这个城市的天气最近一直都不太好,说下雪吧也不下,天气也不晴,让人甚是难受。前段时间周围的城市都下雪了,盼了好久的雪也没盼到,只等来了冷风作祟。基于我的心情,我来吟诗一首: ​ 《盼雪》 昨日已别大雪, 吾昼夜盼雪至。...

常用设计模式系列(四)—建造者模式

常用设计模式系列(四)—建造者模式

一、前言 “山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?” ​ ——《陋室铭》刘禹锡 ​ 唐代诗人刘禹锡使用短...

java基础知识讲解(一)数据类型和运算符

java基础知识讲解(一)数据类型和运算符

Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- b...

数组转LIst的几种方法

第一种方式 /** * 针对数组类型转换 * 分别是int[]、long[]、double[],其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持 */ List<...

常用锁原理的介绍(上)

常用锁原理的介绍(上)

本文是学习《多处理器编程的艺术》的笔记。下面主要介绍了一些常用的锁的原理,这些只是一些理论,离我们实际使用还是有一些差距的。不过这种理论也往往是相对比较好容易理解了掌握的,只有了解了这些理论,可以加深我们对锁原理知识的理解。有能力的同学更可能根据这些理论定制开发符合自己场景的高性能的锁。本篇...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。