常见的概念 及 分布式系统的演变过程

news2024/11/30 2:29:37

文章目录

  • 一. 概念解释
    • 1. 应用(Application)/ 系统(System)
    • 2. 模块(Module)/ 组件(Component)
    • 3. 分布式(Distributed)
    • 4. 集群(Cluster)
    • 5. 主(Master)/ 从(Slave)
    • 6. 中间件(Middleware)
    • 7. 可用性(Availability)
    • 8. 响应时长(Response Time RT)
    • 9. 吞吐(Throughput)vs 并发(Concurrent)
  • 二. 架构演进
    • 1. 单机架构
    • 2. 应用数据分离架构
    • 3. 应用服务集群架构
    • 4. 读写分离/主从分离架构
    • 5. 引入缓存----冷热分离架构
    • 6. 垂直分库分表
    • 7. 微服务架构

一. 概念解释

1. 应用(Application)/ 系统(System)

一个应用, 就是一个/一组服务器程序

2. 模块(Module)/ 组件(Component)

一个应用, 里面有很多功能, 每个独立的功能, 就可以称为是一个模块/组件

3. 分布式(Distributed)

系统中的多个模块被部署于不同服务器之上,即可以将该系统称为分布式系统。如 Web 服务器与
数据库分别⼯作在不同的服务器上,或者多台 Web 服务器被分别部署在不同服务器上。

4. 集群(Cluster)

被部署于多台服务器上的、为了实现特定⽬标的⼀个/组特定的组件,整个整体被称为集群。

分布式 vs 集群。通常不⽤太严格区分两者的细微概念,细究的话,分布式强调的是物理形态,即
⼯作在不同服务器上并且通过⽹络通信配合完成任务;⽽集群更在意逻辑形态,即是否为了完成特定
服务⽬标。

5. 主(Master)/ 从(Slave)

集群中,通常有⼀个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从。⽐如
MySQL 集群中,只有其中⼀台服务器上数据库允许进⾏数据的写⼊(增/删/改),其他数据库的数据
修改全部要从这台数据库同步⽽来,则把那台数据库称为主库,其他数据库称为从库。

6. 中间件(Middleware)

和业务无关的服务, 例如数据库, 缓存, 消息队列…

7. 可用性(Availability)

考察单位时间段内,系统可以正常提供服务的时间 / 总的时间
平时我们常说的 4 个 9 即系统可以提供 99.99% 的可⽤性,5 个 9 是 99.999% 的可⽤性,以此类推。
我们平时只是⽤⾼可⽤(High Availability HA)这个⾮量化⽬标简要表达我们系统的追求。

8. 响应时长(Response Time RT)

指用户完成输⼊到系统给出用户反应的时长。
这个指标原则上是越⼩越好,但很多情况下由于实现的限制,需要根据实际情况具体判断

9. 吞吐(Throughput)vs 并发(Concurrent)

吞吐考察单位时间段内,系统可以成功处理的请求的数量。
并发指系统同⼀时刻⽀持的请求最高量。
实践中,并发量往往⽆法直接获取,很多时候都是⽤极短的时间段(⽐如 1 秒)的吞吐量做代替。
我们平时用高并发(Hight Concurrnet)这个⾮量化⽬标简要表达系统的追求。

二. 架构演进

1. 单机架构

只有一台服务器, 这个服务器负责所有的工作
在这里插入图片描述
应用服务, 指的是我们写的服务器程序
数据库服务, 值得指的是如MySQL
如果业务进一步增长, 用户量和数据量都变多, 服务器不够用的场景:

  1. 开源
    增加更多的硬件资源
    但是, 一个主机上面能增加的硬件资源也是有限的, 取决于主板的扩展能力
    如果一台主机扩展到极限了, 还是不够用, 这时就要引入多台主机了, 此时的系统就叫做**“分布式系统”**
    但是并不是引入更多的主机就可以解决问题, 还需要在软件上做出对应的调整
    (引入分布式, 是万不得已, 系统的复杂程度会大大提高, 出现bug的概率也会提高)
  2. 节流
    在软件上进行优化
    (需要进行性能测试, 找到是哪个环节出现了瓶颈, 再去对症下药, 是很困难的)

2. 应用数据分离架构

应用服务和数据服务分离
在这里插入图片描述
应用服务器, 包含更多的业务逻辑, 会更吃CPU和内存
数据库服务器, 需要更大的硬盘空间, 更快地数据访问速度
(机械硬盘, 便宜, 慢 固态硬盘(SSD硬盘), 贵, 快)
可以根据不痛的作用来选择不同配置的服务器, 达到更高的性价比

3. 应用服务集群架构

引入更多的应用服务器
在这里插入图片描述
负载均衡, 就像一个组的领导一样, 要负责管理, 要负责把任务分配给每一个组员
用户的请求, 先到达负载均衡器/网关服务器(单独的服务器)
如果请求量达到一个负载均衡器也扛不住了, 就需要引入更多的负载均衡器(引入多个机房)
与此同时, 存储服务器要承担的服务器也就更多了

4. 读写分离/主从分离架构

实际的应用场景, 读的频率是要比写高的
在这里插入图片描述

主服务器一般是一个, 从服务器可以有多个
但是数据库响应速度是很慢的

5. 引入缓存----冷热分离架构

把数据区分"冷热", 热点数据放在缓存中, 缓存的访问速度往往比数据库要快很多
(二八原则: 20%的数据, 能够支持80%的访问量)
但是缓存, 存储空间小
在这里插入图片描述
Redis在一个分布式系统中, 通常就扮演者缓存这样的角色

6. 垂直分库分表

针对数据库进行进一步拆分
在这里插入图片描述
本来一个数据库服务器, 这个数据库服务器上可能有多个数据库(database)
现在就可以引入多个数据库服务器, 每个数据库服务器存储一个或一部分数据库(如果某个表特别大, 也可以根据表进行拆分)

7. 微服务架构

之前的应用服务器, 一个服务器程序里面做个很多业务, 这就可能会导致一个服务器的代码也越来越复杂
为了方便代码维护, 就可以把这样的一个复杂的服务器, 拆分成更多的, 功能更单一, 但是更小的服务器, 称为微服务
在这里插入图片描述
微服务, 本质上是在解决"人"的问题
当应用服务器复杂了, 就需要更多的人来维护, 人多了, 就需要配套的管理, 把这些人组织好, 划分组织结构, 分成多个组, 就要将业务按照功能, 拆分成多组微服务

引入微服务, 付出的代价:

  1. 系统性能下降
    拆分出更多的服务, 多个功能之间要更依赖网络通信, 网络通信的速度很可能是比硬盘还要慢的
    (现在硬件技术, 网卡有万兆网卡, 读写速度已经能超过硬盘读写了, 但就是贵!!)
  2. 系统复杂程度提高, 可用性受到影响
    服务器多了, 出现问题的概率就更大了, 就需要一系列手段, 保证徐彤的可用性

微服务的优势:

  1. 解决了人的问题
  2. 使用微服务, 可以更方便于功能的复用
  3. 可以给不同的服务, 进行不同的部署

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

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

相关文章

探讨播客的生态系统

最近对播客发生了兴趣,从而引起了对播客背后的技术,生态的关注。本文谈谈播客背后的技术生态系统。 播客很简单 播客(podcast)本质上就是以语音的方式发布信息。它和博客非常类似。如果将CSDN 网站上的文字加一个语音播报。CSDN …

微信小程序WXSS全局样式与局部样式的使用教程

微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…

Apache-maven在Windows中的安装配置及Eclipse中的使用

Apache Maven 是一个自动化项目管理工具,用于构建,报告和文档的项目管理工具。以下是在不同操作系统上安装和配置 Maven 的基本步骤: 安装 Maven 下载 Maven: apache-maven-3.9.9下载地址,也可访问 Apache Maven 官方网站 下载最…

【Web前端】如何构建简单HTML表单?

HTML 表单是 Web 开发中非常重要的组成部分。它们是与用户交互的主要方式,能够收集用户输入的数据。表单的灵活性使它们成为 HTML 中最复杂的结构之一,但若使用正确的结构和元素,可以确保其可用性和无障碍性。 表单的基本结构 HTML 表单使用…

“不可能三角”的“宿敌”,AI辅助技术撕开“第一道口子”

尽管,打破看得好病、看得起病和看得上病这个“不可能三角”,无法一蹴而就,但是在人工智能浪潮的推动下,“不可能”也在逐渐向“可能”转变。 近日,国家医保局在相关新闻发布会上表示,目前已编制发布17批立…

Java-AOP

AOP,面向切面编程是一种思想,动态代理就是这种思想的最主要表现形式。 实现步骤 1、自定义一个注解类 Documented //让自定义注解出现在javadoc中 Target(ElementType.METHOD) //目标对象是方法 Retention(RetentionPolicy.RUNTIME) //在runtime时生效 …

电脑无互联网连接怎么解决?分享5种解决方案

无互联网连接是指设备无法与互联网进行通信或连接失败。这可能会导致我们无法正常上网,给我们的日常生活和工作带来很大的不便。但请不要担心,下面将为您介绍一些解决无互联网连接问题的方法。 一、检查网络是否正常连接 首先,确保您的路由器…

MemVerge与美光科技利用CXL®内存提升NVIDIA GPU利用率

该联合解决方案将 GPU 利用率提高了 77%,并将 OPT-66B 批量推理的速度提高了一倍以上。 2023 年 3 月 18 日,作为大内存软件领域领导者的 MemVerge,与美光科技联手推出了一项突破性解决方案,该方案通过智能分层的 CXL 内存&#x…

Mysql中的 TEXT 和 BLOB 解析

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…

Oracle LinuxR7安装Oracle 12.2 RAC集群实施(DNS解析)

oracleLinuxR7-U6系统Oracle 12.2 RAC集群实施(DNS服务器) 环境 RAC1RAC2DNS服务器操作系统Oracle LinuxR7Oracle LinuxR7windows server 2008R2IP地址172.30.21.101172.30.21.102172.30.21.112主机名称hefei1hefei2hefei数据库名hefeidbhefeidb实例名…

Redis(5):哨兵

一、作用和架构 1. 作用 在介绍哨兵之前,首先从宏观角度回顾一下Redis实现高可用相关的技术。它们包括:持久化、复制、哨兵和集群,其主要作用和解决的问题是: 1)持久化:持久化是最简单的高可用方法(有时甚…

Goland或Idea启动报错

Goland或Idea启动不了 报错如图: 原因:破解导致 解决方案 环境变量中有关Goland的全部删除

麒麟系统x86安装达梦数据库

一、安装准备前工作 操作系统:银河麒麟V10,CPU: x86_64 架构 下载地址,麒麟官网:https://www.kylinos.cn/ 数据库:dm8_20220915_x86_kylin10_64 下载地址,达梦数据库官网:https://…

(0基础保姆教程)-JavaEE开课啦!--11课程(初识Spring MVC + Vue2.0 + Mybatis)-实验9

一、什么是Spring MVC? Spring MVC 是一个基于 Java 的 Web 框架,遵循 MVC 设计模式,用于构建企业级应用程序。它通过控制器(Controller)处理用户请求,模型(Model)处理业务逻辑,视图(View)展示数据,实现了请…

NLP信息抽取大总结:三大任务(带Prompt模板)

信息抽取大总结 1.NLP的信息抽取的本质?2.信息抽取三大任务?3.开放域VS限定域4.信息抽取三大范式?范式一:基于自定义规则抽取(2018年前)范式二:基于Bert下游任务建模抽取(2018年后&a…

【JavaEE初阶 — 网络编程】TCP流套接字编程

TCP流套接字编程 1. TCP & UDP 的区别 TCP 的核心特点是面向字节流,读写数据的基本单位是字节 byte 2 API介绍 2.1 ServerSocket 定义 ServerSocket 是创建 TCP 服务端 Socket 的API。 构造方法 方法签名 方法说明 ServerS…

记录一次 k8s 节点内存不足的排查过程

背景:前端服务一直报404,查看k8s日志,没发现报错,但是发现pods多次重启。 排查过程: 查看pods日志,发现日志进不去。 kubectrl logs -f -n weave pod-name --tail 100查看pod describe kubectl describ…

Java文件遍历那些事

文章目录 一、简要概述二、文件遍历几种实现1. java实现2. Apache common-io3. Spring 三、最终结论 一、简要概述 文件遍历基本上是每个编程语言具备的基本功能,Java语言也不例外。下面我们以java原生实现,Apache common-io、spring框架实现为例来比较…

硬件基础22 反馈放大电路

目录 一、反馈的基本概念与分类 1、什么是反馈 2、直流反馈与交流反馈 3、正反馈与负反馈 4、串联反馈与并联反馈 5、电压反馈与电流反馈 二、负反馈四种组态 1、电压串联负反馈放大电路 2、电压并联负反馈放大电路 3、电流串联负反馈放大电路 4、电流并联负反馈放大…

【JS】React与Vue的异步编程对比:深度解析与实战案例全面指南

文章目录 前言更多实用工具React与Vue概述ReactVue 异步编程基础回调函数PromiseAsync/Await React中的异步编程使用Axios进行数据请求异步操作与组件生命周期React Hooks中的异步处理 Vue中的异步编程使用Axios进行数据请求异步操作与Vue生命周期Vue Composition API中的异步处…