分布式系统架构中的相关概念

1.1、衡量网站的性能指标

  • 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。
  • 并发数:指系统同时能处理的请求数量。
    • 并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量
    • 请求数:也称为QPS(Query Per Second) 指每秒多少请求
    • 并发用户数:单位时间内有多少用户
  • 吞吐量:指单位时间内系统能处理的请求数量。
    • QPS:Query Per Second 每秒查询数。
    • TPS:Transactions Per Second 每秒事务数。
    • 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
    • 一个页面的一次访问,只会形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,就会有多个QPS

1.2、集群和分布式

  • 集群:很多“人”一起 ,干一样的事。(一个业务系统,部署在多台服务器上)
  • 分布式:很多“人”一起,干不一样的事。这些不一样的事,合起来是一件大事。(一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上)

2、架构演进

随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。

2.1、单体应用架构(单机单体架构、集群单体架构)

在企业发展的初期,一般公司的网站流量都比较小,只需要一个应用,将所有的功能代码打包成一个服务,部署到服务器上就能支撑公司的业务。这样也能够减少开发、部署和维护的成本。比如,大家都很熟悉的电商系统,里面涉及的业务主要有:用户管理、商品管理、订单管理、支付管理、库存管理、物流管理等等模块,初期我们会将所有模块写到一个Web项目中,然后统一部署到一个Web服务器中。

优点: 简单:开发部署都很方便,小型项目首选

缺点: 项目启动慢 可靠性差 可伸缩性差 扩展性和可维护性差 性能低

2.2、垂直架构(拆分成多个单体架构)

垂直架构是指将单体架构中的多个模块拆分为多个独立的项目,形成多个独立的单体架构。

垂直架构根据业务属性将一个大的单体应用拆分成多个模块或子系统,子系统之间没有直接关联。 垂直架构相较于单体架构而言,进行了部分解耦,但是不够彻底,在各个子系统相互依赖的代码和模块中,存在模块功能重复开发和重复代码拷贝的情况。

垂直架构存在的问题: 重复功能太多。

2.3、分布式架构(重复模块抽取为公共服务)

将系统演变为垂直应用架构之后,当垂直应用越来越多时,重复编写的业务代码就会越来越多。此时,我们需要将重复的代码抽象出来,形成统一的服务,供其他系统或者业务模块调用,这就是分布式架构。

分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。

这种架构的优点如下:

  1. 将重复的业务代码抽象出来,形成公共的访问服务,提高了代码的复用性。
  2. 可以有针对性地对系统和服务进行性能优化,以提升整体的访问性能。

这种架构的缺点如下:

  1. 服务之间直接调用,服务提供方地址等信息一旦产生变更,所有消费方都需要变更。
  2. 系统之间的调用关系变得复杂,系统之间的依赖关系变得复杂,系统维护成本高。

在分布式架构中,我们会将系统整体拆分为服务层和表现层。服务层封装了具体的业务逻辑供表现层调用,表现层则负责处理与页面的交互操作。分布式系统架构如下图示例:

RPC:Remote Procedure Call 远程过程调用。有非常多的协议和技术来都实现了RPC的过程。比如:HTTP REST风格,Java RMI规范、WebService SOAP协议、Hession等等。

2.4、SOA架构(调度中心)

在分布式架构下,当部署的服务越来越多时,重复的代码就会变得越来越多,不利于代码的复用和系统维护。为此,我们需要增加一个统一的调度中心对集群进行实时管理,这就是SOA(Service-Oriented Architecture,面向服务的架构)架构。

这种架构的优点是通过注册中心解决了各个服务之间服务依赖和调用关系的自动注册与发现。

这种架构的缺点:服务之间的依赖与调用关系复杂,增加了测试和运维的成本。

2.5、微服务架构

微服务架构是在SOA架构的基础上进行进一步的扩展和拆分。在微服务架构下,一个大的项目拆分为一个个小的可独立部署的微服务,每个微服务都有自己的数据库。微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成。

微服务架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

优点:服务彻底拆分,各服务独立打包、独立部署和独立升级。每个微服务负责的业务比较清晰,利于后期扩展和维护。微服务之间可以采用REST和RPC协议进行通信。

缺点:架构非常复杂,运维、监控、部署难度提高。开发的成本比较高。涉及到各服务的容错性问题。涉及到数据的一致性问题。涉及到分布式事务问题

3、分布式和微服务架构的区别

总的来说,分布式主要是有多个服务器,而微服务主要注重服务的拆分,微服务并不一定是部署在多个服务器上,也可能只是在一个服务器上(基本很少见)。

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。

微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也可以是同一个服务器。

分布式服务架构强调的是服务化以及服务的分散化,而微服务则更强调服务拆分的专业化和精细分工。分布式也可以理解为属于微服务,但可能服务拆分没那么细致,而微服务架构通常也是分布式的架构

4、框架

Dubbo 是 SOA 时代的产物,SpringCloud 是微服务时代的产物。

4.1、Dubbo

Dubbo框架是由阿里巴巴开发的开源式的分布式服务化治理框架,它会通过RPC请求方式访问。Dubbo是在阿里巴巴的电商平台中逐渐探索演进所形成的,经历过复杂业务的高并发挑战。

4.2、Spring Cloud

Spring Cloud不是一个单独框架,它是一整个系列的框架合计,它是基于HTTP(s)的RETS服务构建服务体系的。Spring Cloud能够帮助架构师构建一整套完整的微服务架构技术生态链。

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。 SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:

springcloud 与 springboot的版本兼容关系:

4.3、微服务框架对比

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

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

相关文章

一款免费、开源、可批量识别的离线OCR软件,适用于 Windows7 x64及以上平台

免费:本项目所有代码开源,完全免费。方便:解压即用,离线运行,无需网络。高效:自带高效率的离线OCR引擎,内置多种语言识别库。灵活:支持命令行、HTTP接口等外部调用方式。功能&#x…

超越常规:用PHP抓取招聘信息

在人力资源管理方面,有效的数据采集可以为公司提供宝贵的人才洞察。通过分析招聘网站上的职位信息,人力资源专员可以了解市场上的人才供给情况,以及不同行业和职位的竞争状况。这样的数据分析有助于企业制定更加精准的招聘策略,从…

记录一个Kafka客户端Offset Explore连不上的问题

我昨天把集群重装了一下,再连这个工具就连不上了(你先把zk和kafka在集群启起来),报错截图如下: 英文翻译过来大概就是说遍历zk指定路径不存在,我还以为zk的问题,回去又把zk的文档翻了一遍&#…

【AI基本模型】简化生成对抗网络 (GAN)

目录 一、说明 二、GAN的工作 三、如何手动计算生成对抗网络(GAN)?✍️ 四、GAN的应用 一、说明 生成对抗网络 (GAN) 是一种机器学习算法,可以生成与现实世界数据几乎无法区分的合成数据。它们的工作原理是…

【JSON2WEB】14 基于Amis的CRUD开发30分钟速成

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

【Java探索之旅】方法重载 递归

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、方法重载1.1 为什么要有方法重载1.2 方法重载的概念与使用1.3 方法签名 二、递归2…

Go语言中如何正确使用 errgroup

不管是哪种编程语言,重新发明轮子都不是一个好主意。代码库重新实现如何启动多个goroutine并汇总错误也很常见。但是Go生态系统中的一个包旨在支持这种常见的用例。让我们来看看这个包并了解为什么它应该成为Go开发人员工具集的一部分。 golang.org/x是一个为标准库提供扩展的…

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版

Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…

李廉洋;4.11#黄金,WTI原油#行情走势分析策略。

美国银行预计,在今天召开的欧洲央行会议上不会有重大的政策变化,但欧洲央行正逐渐接近开始降息,尽管它采取的是一种谨慎的、依赖数据的方式。虽然欧洲央行对降息轨迹的信心不断增强,但降息的具体速度和幅度仍未公布,而…

K8S node节点执行kubectl get pods报错

第一个问题是由第二个问题产生的,第二个问题也是最常见的 网上找的都是从master节点把文件复制过来,这样确实可以解决,但是麻烦,有一个node节点还好,如果有多个呢?每个都复制吗?下面是我从外网…

基于SSM的在线学习系统的设计与实现(论文+源码)_kaic

基于SSM的在线学习系统的设计与实现 摘要 随着信息互联网购物的飞速发展,一般企业都去创建属于自己的管理系统。本文介绍了在线学习系统的开发全过程。通过分析企业对于在线学习系统的需求,创建了一个计算机管理在线学习系统的方案。文章介绍了在线学习系…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

VS2015 自定义模板

VS2015 自定义模板 文章目录 VS2015 自定义模板写在前面自定义项目模板导出模板 更新模板vstemplate 文件元素修改参考 参考 写在前面 ​ VS自定义模板是为了,将一些习惯性、通用性的设置预先设置到项目中,再次创建项目时就不用重复设置相同的参数了。 …

密码知识汇总

文章目录 密码学知识CIA三要素机密性(Confidentiality)完整性(Integrity)可用性(Availability) 非安全信道的风险以及应对措施风险应对措施使用加密技术(防窃…

基于SSM+Jsp+Mysql的网络视频播放器

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

Leetcode面试题 01.06. 字符串压缩

Every day a Leetcode 题目来源:面试题 01.06. 字符串压缩 解法1:分组循环 分组循环统计连续字符的出现次数,构造压缩字符串,比较原字符串和压缩字符串的长度,返回长度较小的那个。 代码: class Solut…

Docker部署WebRTC-Streamer

文章目录 WebRTC-Streamer概述Docker部署WebRTC-StreamerVue使用WebRTC-Streamer一些问题 WebRTC-Streamer概述 WebRTC-Streamer是一个基于WebRTC技术的流媒体传输工具,它可以通过Web浏览器实现实时音视频流的传输和播放。它提供了一种简单而强大的方式&#xff0c…

SSRF+Redis未授权getshell

SSRFRedis未授权getshell 1.前言 当一个网站具有ssrf漏洞,如果没有一些过滤措施,比如没过滤file协议,gophere协议,dict等协议,就会导致无法访问的内网服务器信息泄露,甚至可以让攻击者拿下内网服务器权限 …

MySQL 主从复制部署(8.0)

什么是主从数据库 主从数据库是一种数据库架构模式,通常用于提高数据库的性能、可用性和可伸缩性。 它包括两种类型的数据库服务器: 1)主数据库(Master):主数据库是读写数据的主要数据库服务器。所有写操…

RobotFramework功能自动化测试框架基础篇

概念 RobotFramework是什么? Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试…