走进分布式系统(分布式系统简介)

news2024/11/19 7:31:44

走进分布式系统

  • 分布式系统简介
    • 分布式系统的架构演变过程
      • 初创期
      • 发展期
      • 成熟期
    • 分布式系统的特性
      • 什么是分布式系统
      • 特性
    • 分布式系统带来的问题
  • 分布式中间件简介
    • 什么是分布式中间件
    • 常用的分布式中间件

分布式系统简介

分布式系统的架构演变过程

讲在前面,首先我们要了解,并非所有的业务都需要使用到分布式的系统架构,它只是作为技术演进的一个方向,在不同的场景下,演进的方向是不同的,但最初的技术架构都大同小异,差不多都是一个单体应用架构。在一般情况下,可以把架构演变的过程分为几个不同的阶段:初创期、发展期、成熟期。

初创期

在这个时期,公司有新的产品问世,在没有经过用户使用、指正、迭代等环节是不可能直接就到一个完善的效果。在这个阶段的业务对技术就一个要求:快。技术架构相对来说也比较简单,一台服务器需要同时兼任应服务器、数据库服务器等职责。

在这里插入图片描述

发展期

初期产品经过了市场的考验之后来到了发展期,此时已经有一定数量用户的支持,同时在完善业务的过程中不断的将新功能加入到产品中,随着功能的增加,原有的系统会越来越缓慢,技术架构也会越来越复杂,这时可以通过优化系统和升级架构的方式解决发展期所遇到的问题。

优化系统就是在原有的系统技术架构之上对模块进行划分,代码进行重构、SQL优化、增加缓存等方式来提升系统运行速度,这种方式相对于升级架构来说相对温和平稳,用户在体验上也能得到显著的提升。但随着系统功能的增加以及业务场景复杂度的不断加深,很快就会有新的问题出现,这时就可以采用升级架构的方式来进行优化。

升级架构无非就是拆,拆功能、拆服务、拆服务器、拆数据库等。经过架构升级这个步骤后系统可以支撑比较长期的业务发展,但是也有很明显的缺点,工作流庞大,开发周期长等问题。

在这里插入图片描述

成熟期

企业以及产品经历了市场的洗礼趋于稳定,技术架构也基本成熟,这时发展的核心就是求精和求稳,也就是要保证系统性能的优化以及数据的安全。在优化这个角度来说,无非就是缓存、网络等任意优化手段,数据安全主要是实现系统高可用、数据备份、漏洞分析等。

用户规模对应的系统演进

所处阶段演进过程
初创期技术压力小,单体架构足以支撑
发展期用户规模及需求对系统产生压力,进行系统架构优化升级
成熟期业务及系统架构趋于稳定,逐渐考虑性能优化及安全等细节问题

分布式系统的架构是由于系统的发展,随着技术的演进而出现的,在做技术选型的时候要根据实际的业务情况及用户规模进行选型。

分布式系统的特性

什么是分布式系统

百科解释

分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。

这里可以进行简单的理解,如果一个系统正常运行的条件是需要多个相关系统/子系统进行配合共同协作且分布在不同的服务器上,这个整体来说就是一个分布式系统

特性

资源共享

在分布式系统架构下,不同系统之间存在一定的通信,这里就涉及到数据以及资源的共享,比如共同的数据库、文件系统等。

高内聚低耦合

分布式系统一定是高内聚低耦合的系统,单独模块或子系统的异常故障不会影响整体系统的运行。

扩展性

分布式系统的扩展一般来说比较简易,通过简单的步骤即可实现,这里就是水平扩展的思想。

分布式系统带来的问题

分布式系统虽然可以解决单机系统的性能、速度、用户体验等问题,但同时也伴随着其他的疑难杂症。

技术复杂度

技术架构演进后变得更加复杂,不再像单体架构那样只管增加、读取、更新、删除就可以了,相对来说,对于开发和运维人员的要求以及成本也在增加,学习成本亦如此。

网络稳定性

不同的子系统与节点均是采用网络通信,但网络无法保证时时刻刻可用,总会经历延时、中断等情况,所以使用分布式系统一定要考虑网络出现问题后的解决手段。

分布式中间件简介

什么是分布式中间件

采用分布式系统架构不可避免会带来很多单机系统不用考虑的问题,为了解决这些问题,就一定需要引入一些新的工具,中间件就是解决这些问题的工具之一,它主要用于协调不同业务系统之间的工作。

常用的分布式中间件

数据库中间件MyCat

前端用户采用MySQL的客户端和命令访问,后端实现数据库的分库分表,可以将它当做一个数据库的代理工具。

消息中间件RocketMQ

由阿里开源的使用Java开发的消息中间件,用于消息的异步发送、消息限流、延时队列等。

缓存中间件Redis

支持key-value存储,内存级数据库,可以解决分布式锁等问题。

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

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

相关文章

【uniapp】文件授权验真系统(含代码)

文章目录 前言一、框架选用二、数据库设计三、设计上传列表四、上传操作1.前端2.后端 五、修改操作六、访问操作七、二维码生成八、二维码访问九、删除操作总结 前言 吐槽:终于开通了【资源绑定】的功能了,之前还要一个一个的去贴链接 之前的同学联系…

ts学习基础篇(一)

旨在记录! 这篇人都学废了,本想记录常用类型,越学越多,每一个都很重要… 一、string: 字符串类型二、number: 数字类型三、boolean: 布尔值四、array:数组五、tuple: 元组六、字面量七、object:对象八、any: 任意类型九、unknown:…

【KingFusion】用趋势曲线组件实现实时曲线的步骤

哈喽,大家好,我是雷工! 本节学习测试用KingFusion趋势曲线组件实现电流的实时曲线的展示。 一、效果演示: 展示实时曲线的运行效果,效果为KingFunsion3.6通过KingIOServer连接现场系统中实际数据的演示效果。 二、…

代码随想录-单调栈|ACM模式实践

代码随想录感想 ​​​​​​739. 每日温度 题目描述: 输入输出示例: 思路和想法: 496. 下一个更大元素 I 题目描述: 输入输出示例: 思路和想法: 503. 下一个更大元素 II 题目描述: …

我开源了团队内部基于SpringBoot Web快速开发的API脚手架stater

我们现在使用SpringBoot 做Web 开发已经比之前SprngMvc 那一套强大很多了。 但是 用SpringBoot Web 做API 开发还是不够简洁有一些。 每次Web API常用功能都需要重新写一遍。或者复制之前项目代码。于是我封装了这么一个 抽出SpringBoot Web API 每个项目必备需要重复写的模块…

【100天精通python】Day3:python的基本数据类型和数据类型转换

一. python的基本数据类型 以下是一些常见的举例和详细解释: 整数(int):表示整数值。例如: x 5:将整数值5赋给变量x。 y -10:将整数值-10赋给变量y。 浮点数(float)&a…

【聚焦机器学习与实践经验的实用指南——《Python机器学习项目实战》】

《Python机器学习项目实战》引领大家在构建实际项目的过程中,掌握关键的机器学习概念!使用机器学习,我们可完成客户行为分析、价格趋势预测、风险评估等任务。要想掌握机器学习,需要有优质的范例、清晰的讲解和大量的练习。本书完全满足这三点…

漏洞复现-CVE-2022-24112原理与复现

目录 漏洞原理漏洞描述影响范围 apisix学习漏洞复现config.yaml环境搭建exp代码 入侵检测与修复总结参考 漏洞原理 漏洞描述 An attacker can abuse the batch-requests plugin to send requests to bypass the IP restriction of Admin API. A default configuration of Apa…

基于JavaSwing+MySQL的电影票购票管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88051172?spm1001.2014.3001.5503 JDK1.8 MySQL5.7 功能:管理员与用户两个角色登录,管理员可以对电影进行增删改查处理,可以对影院增删改查管理&#x…

【C语言】类型转换和优先级

👦个人主页:Weraphael ✍🏻作者简介:目前正在回炉重造C语言(2023暑假) ✈️专栏:【C语言航路】 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你…

【Linux系统编程】Linux第一个小程序——进度条

文章目录 1. 对回车(\r)和换行(\n)的理解1.1 概念理解1.2 测试 2. 缓冲区的理解2.1 观察现象2.2 原因解释 3. 倒计时小程序4. 进度条小程序4.1 基本思路及实现4.2 改进及优化4.3 增加百分比显示4.4 增加旋转光标4.5 给进度条配色 …

基于FT232HL的USB2.0转ARINC429板卡

基于FT232HL的USB2.0转ARINC429板卡 1 概述 《USB2.0转ARINC429板卡》采用底板子板,层叠安装的结构;使用同样的底板,变换不同功能的子板实现不同的功能版本。 a) 降低硬件设计复杂度:新板卡设计只需要设计子板,子板的…

类和对象(C++)( static成员、explicit、友元、内部类、匿名对象)

类和对象 static成员概念static成员“登场”特性static成员使用 注意 explicit从一段代码引入explicit和explicit相关特性 友元友元函数引入问题解决 小结 友元类 内部类概念特性 匿名对象引入使用 static成员 概念 类的静态成员:声明为static的类成员。 静态成员变…

【黑客】网络安全靠自学?只会毁了你!

1️⃣网安现状 ❗本文面向所有 想要涉足网安领域 或 已经涉足但仍处在迷茫期 的伙伴,如果你月薪达到了3w,那么请你离开。 如果没有,希望你继续看下去,因为你人生的转折点将从这篇文章开始。 ✈️网络安全,一个近几年大…

5 个能出色完成数据恢复的免费数据恢复软件知识分享。

有时,由于意外删除或某些问题,您可能会丢失 Windows 10 笔记本电脑或台式机上的重要数据。Windows 操作系统不提供任何内部工具来恢复已删除的数据。但是有一些非常好的数据恢复软件可以更专业地完成这项工作。最好的人总是有报酬的,但不用担…

按键精灵、auto.js等一些移动端脚本 如何连接云服务器的数据库, 进行读写操作

一、技术背景 按键手机版和auto.js,只支持连接本地数据库sqllite,该数据库只存在本地 其他设备无法读写,就像本地的txt一样。 而很多脚本作者的需求是:多个脚本,甚至在全国不同城市的脚本也能读取和写入同一批数据&…

AJAX-day01

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 AJAX 概念和 axios 使用 什么是 AJAX 怎么用 AJAX ? axios 使用 认识 URL 什么是 URL&…

韦东山Linux教学视频中的makefile文件详细介绍

前言 (1)在学习韦东山Linux教学视频的时候,他的makefile并没有做详细的介绍。以至于我学了很长时间对他的makefile文件不理解。所以本文将会详细介绍韦东山Linux教学视频中的makefile文件含义。 (2)注意:我…

使用 docker-compose 部署 Jenkins

注:我是在虚拟机(Ubuntu)上部署了 docker-compose,然后才使用 docker-compose 部署 Jenkins! 关于如何在 Ubuntu 部署 docker-compose,可以看我其它的文章。 本文目录 1. 创建 docker_jenkins_compose 目录…

【NI USRP】每一个USRP是如何命名的呢,和原厂Ettus型号有什么关联呢?

详细的硬件配置,非常有助于设备的选型。 如果您采购了X310子板,是可以将其转化为对应的USRP型号的设备。 B系列 EttusNI-USRP频段最大带宽通道B200mini无70 MHZ - 6 GHZ56 MHz1X1B200mini-i无70 MHZ - 6 GHZ56 MHz1X1B205mini-i无70 MHZ - 6 GHZ56 MHz…