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

走进分布式系统

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

分布式系统简介

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

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

初创期

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

在这里插入图片描述

发展期

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

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

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

在这里插入图片描述

成熟期

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

用户规模对应的系统演进

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

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

分布式系统的特性

什么是分布式系统

百科解释

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

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

特性

资源共享

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

高内聚低耦合

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

扩展性

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

分布式系统带来的问题

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

技术复杂度

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

网络稳定性

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

分布式中间件简介

什么是分布式中间件

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

常用的分布式中间件

数据库中间件MyCat

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

消息中间件RocketMQ

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

缓存中间件Redis

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

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

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

相关文章

耳夹式骨传导耳机有哪些比较好用?这三个款式不容错过!

骨传导耳机由于不入耳,不用担心耳道健康问题,越来越受到广大网友的喜欢,而传统的入耳式耳机,则因为长时间佩戴会耳朵痛,容易掉落等问题逐渐的被网友抛弃,那么在骨传导耳机市场种类这么多的情况下&#xff0…

X6 基于VUE流程编辑器开发

先看效果图 主要插件X6 x6-vue-shape antv/x6-plugin-dnd 代码太多没有整理出来

100天精通Golang(基础入门篇)——第16天:深入解析Go语言包的使用和包管理

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

【ArcGIS微课1000例】0070:制作宾馆酒店分布热度热力图

本文讲解在ArcGIS中,基于长沙市酒店宾馆分布矢量点数据(POI数据)绘制酒店分布热力图。 相关阅读: 【GeoDa实用技巧100例】004:绘制长沙市宾馆热度图 【ArcGIS Pro微课1000例】0028:绘制酒店分布热力图(POI数据) 文章目录 一、加载宾馆分布数据二、绘制热度图一、加载宾…

使用亚马逊(AWS)云服务在S3上实现图片缩放功能(CloudFront/S3[AccessPoint/LambdaAccessPoint])

亚马逊云服务中的S3对象存储功能和国内阿里云的oss对象存储使用基本一致。但是涉及到存储内容处理时,两家有些差别。 比如:对于云存储中的图片资源,阿里云比较人性化对于基本的缩放裁剪功能已经帮我们封装好了,只需要在url地址后…

window环境下安装Node并修改保存缓存的位置

0, 卸载Node 打开cmd命令行窗口 输入: npm cache clean --force然后在控制面版中卸载node 1,官网下载Node.js 点击官网下载 如一台电脑需要多个node环境 可使用nvm命令进行操作安装并且可以切换 2, 配置环境变量 安装成功之后&#x…

计算机存储设备

缓存为啥比内存快 内存使用 DRAM 来存储数据的、也就是动态随机存储器。内部使用 MOS 和一个电容来存储。 需要不停地给它刷新、保持它的状态、要是不刷新、数据就丢掉了、所以叫动态 、DRAM 缓存使用 SRAM 来存储数据、使用多个晶体管(比如6个)就是为了存储1比特 内存编码…

RabbitMQ ---- 死信队列

RabbitMQ ---- 死信队列 1. 死信的概念2. 死信的来源3. 死信实战3.1 代码架构图3.2 消息 TTL 过期3.3 队列达到最大长度3.4 消息被拒 1. 死信的概念 死信,顾名思义就是无法被消费的消息,字面意思可以这样解释,一般来说,producer …

python中文版下载安装教程,python中文版下载官网

大家好,本文将围绕python中文版软件下载百度网盘展开说明,python中文版下载安装教程是一个很多人都想弄明白的事情,想搞清楚python中文最新版下载需要先了解以下几个事情。 1、python下载安装教程_百度知道 python下载安装教程:自…

ant 后台自定义左侧菜单的图标

最终达成结果: 操作步骤 1.登录阿里图库新增项目 iconfont-阿里巴巴矢量图标库 ,点击资源管理-我的项目-新增项目,如图所示: 填写项目名称,项目名称随便填,不重要 填写前缀和font family,如上…

create-react-app -V 报错无法将“create-react-app”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

create-react-app -Vcreate-react-app : 无法将“create-react-app”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果 包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + create-react-app -V + ~~~~~~~~~~~~~~~~+ CategoryInfo …

探索字符与字符串:基本库函数的使用(二)

目录 文章目录 前言 函数模拟实现 strlen strcpy strcat strstr strcmp memcpy memmove 总结 前言 继接上文,本片文章我将带领大家去模拟实现一些基本的库函数。 函数模拟实现 strlen 前文我们已将基本了解了strlen函数是用于计算字符串长度的,那么接…