分布式架构专题(一)概述

分布式架构的一个概述 现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。 那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布... 阅读详情

前言:

每个程序员都梦想有一天能成为架构师,技术大牛,当然我也想。所以现在慢慢将分布式架构的技术栈整理成一个个专题,慢慢积累,在工作中实践,希望一天可以到达那个高度看看那里的风景。下面引用架构师流行的一句话:作为一名架构师,我们要专业,要能看懂代码,即使光着臂膀去机房,也能独挡一面!即使同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室里滔滔不绝,如若无人,让不懂技术的妹子看你的眼神迷离,就好像落霞与孤鹜齐飞。好牛逼的独白!

什么是分布式?

互联网技术架构里面最大的两个特点是:高并发,海量数据。而且用户量是没有上限的。这两个特点在传统项目中一般是不会出现的。分布式是:把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题。第一个是任务分解,第二个是节点通信。通俗讲就是由多个小型的服务器或者由多个节点组成的一台超级服务器。

任务分解:领域模型,对不同的业务进行任务拆分。

节点通信:通过rpc框架或消息中间件等使不同的节点之间相互通信传递信息。

分布式架构示意图:

分布式和集群的关系?

分布式是一个业务拆分成多个子系统,部署在不同的服务器上,比如说一个电商系统可以拆分出:用户,商品,订单,交易。

集群是指将同一个业务部署在多台服务器上,保证服务的高可用。分布式真正解决的问题是:高性能,而集群解决高可用的问题。

计算机的发展历史:

计算机的演变历史和架构的发展历史关系紧密。

  • 第一台计算机发明与1946 年,情人节。
  • 第一台大型主机诞生于1964 年, IBM SYSTEM/360。
    • 超强的算力
    • 高可靠性

大型机凭借自身的超强算力和高可靠性在金融领域和通信领域大展身手。随着计算机性能的提升,软件架构也开始往集中式方向发展。

  • 大型主机之后,计算机以 X86 CPU 往个人的 PC 机方向发展。
  • RISC CPU 小型机。

分布式架构的发展:

当时在大型主机的这种背景下,软件架构相对稳定。但随着互联网的发展,这种架构慢慢出现了瓶颈。

大型机被替代的原因:

  • 大型主机体型庞大。
  • 维护复杂,对人员培养要求很高。
  • 大型主机价格昂贵。
  • 单点问题,如果大型主机出现问题,整个服务会不可用。
  • PC 机的性能不断提升,很多企业放弃了大型机,用 PC 机替代(里程碑)。

分布式架构的出现:

  • 时机成熟了,pc机的性能不断提升
  • 企业必须要做了,2008-2009 年淘宝的去 IOE(I:IBM 小型机,O:Oracle Rac,E:EMC 存储设备) 运动。因为阿里庞大的业务,单纯靠增加昂贵的机器性价比已经不高。于是用 PC 机来替代。数据库用 msql。2013 5月 17 号阿里最后一台小型机下线,意味着去 IOE 运动的成功。去 Oracle Rac 是因为商业系统,价格昂贵,对分布式的扩展支持不够好,是个瓶颈。

单机计算机架构到分布式架构:

计算机最早的模型是冯诺依曼模型,这也是单机模型。如果把分布式架构的组成也看作是一个超级单机模型,那么在分布式架构中的每个物理节点在冯诺依曼模型中分别代表什么呢?

  • 输入设备:用户界面,RPC,消息中间件。
  • 输出设备:用户展示的终端,RPC,消息中间件。
  • 存储器:数据库服务器,缓存服务器。
  • 运算器:WEB 服务器,业务逻辑。
  • 控制器:负载均衡,高可用的主/备模型。

架构的发展演变过程:

一个成熟的大型分布式架构不是一开始就非常完美,而是随着业务的发展而去逐渐演变,逐渐完善的。所以架构发展的源动力是业务。BAT ,百度侧重点是海量数据的搜索,阿里的侧重点是商品和下单支付,腾讯的侧重点是数亿级别的用户消息的实时传输。每一个企业的业务不一样,架构也不一样。

什么是大型架构:

怎么取衡量一个大型架构?

  • 访问量(tps,qps)。
  • 数据量(存储量)。

电商平台的发展:

 

  • 初始阶段:用户,商品,订单三个平台。早期做会选择开源技术栈:tomcat容器,jsp/servlet;数据库:mysql。
    • 特征:应用程序,数据库,文件等所有资源都放在一台服务器上。
    • 示意图:

  • 应用服务 和 数据服务 以及 文件服务 分离:
    • 说明:好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver。
    • 特征:应用程序、数据库、文件分别部署在独立的资源上。
    • 示意图:

  • 使用缓存改善性能:
    • 说明:系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。
    • 缓存分为 本地缓存 和 远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。

    • 特征:数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。

    • 示意图:

  • 使用“应用服务器”集群:
    • 说明:在做完分库分表这些工作后,数据库上的压力已经降到比较低了,又开始过着每天看着访问量暴增的幸福生活了。突然有一天,发现系统的访问又开始有变慢的趋势了,这个时候首先查看数据库,压力一切正常,之后查看webserver,发现apache阻塞了很多的请求,而应用服务器对每个请求也是比较快的,看来是请求数太高导致需要排队等待,响应速度变慢。
    • 特征:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
    • 描述:使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。
    • 示意图:

  • 数据库读写分离:
    • 说明:享受了一段时间的系统访问量高速增长的幸福后,发现系统又开始变慢了,这次又是什么状况呢,​​​​​​​经过查找,发现数据库写入、更新的这些操作的部分数据库连接的资源竞争非常激烈,导致了系统变慢。
    • 特征:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
    • 描述:使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,使得服务器的负载压力不在成为整个系统的瓶颈。
    • 示意图:

  • 反向代理和CDN加速:​​​​​​​
    • 特征:采用CDN和反向代理加快系统的访问速度。
    • 描述:为了应付复杂的网络环境和不同地区用户的访问,通过CDN和反向代理加快用户访问的速度,同时减轻后端服务器的负载压力。CDN与反向代理的基本原理都是缓存。
    • 示意图:

  • “分布式文件”系统 和 “分布式数据库”:
    • ​​​​​​​说明:随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作
    • 特征:数据库采用分布式数据库,文件系统采用分布式文件系统。
    • 描述:任何强大的单一服务器都满足不了大型系统持续增长的业务需求,数据库读写分离随着业务的发展最终也将无法满足需求,需要使用分布式数据库及分布式文件系统来支撑。分布式数据库是系统数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。
    • 示意图:

  • 使用NoSQL和搜索引擎 :
    • ​​​​​​​特征:系统引入NoSQL数据库及搜索引擎。
    • 描述:随着业务越来越复杂,对数据存储和检索的需求也越来越复杂,系统需要采用一些非关系型数据库如NoSQL和分数据库查询技术如搜索引擎。应用服务器通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
    • 示意图:

  • 业务拆分:
    • ​​​​​​​特征:系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署。
    • 描述:为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的产品线,应用之间通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。

    • 纵向拆分:将一个大应用拆分为多个小应用,如果新业务较为独立,那么就直接将其设计部署为一个独立的Web应用系统 纵向拆分相对较为简单,通过梳理业务,将较少相关的业务剥离即可。

    • 横向拆分:将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务 横向拆分需要识别可复用的业务,设计服务接口,规范服务依赖关系。

    • 示意图:

  • 分布式服务:
    • 特征:公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用。
    • 描述:随着业务越拆越小,应用系统整体复杂程度呈指数级上升,由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务。
    • 示意图:

分布式服务应用会面临哪些问题?

 

  • 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
  • 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
  • 服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
  • 服务多了,沟通成本也开始上升,调某个服务失败该找谁?服务的参数都有什么约定? 
  • 一个服务有多个业务消费者,如何确保服务质量?
  • 随着服务的不停升级,总有些意想不到的事发生,比如cache写错了导致内存溢出,故障不可避免,每次核心服务一挂,影响一大片,人心慌慌,如何控制故障的影响面?服务是否可以功能降级?或者资源劣化? 
计算机体系架构初步入门 中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。 ​ 阅读详情

相关推荐

001:InVEST学习——产水/水源涵养

InVEST产水模块介绍 前言 (一些碎碎念着急的可以忽略)最开始做inVEST模型是2020年中,应该说对这个软件有很特殊的感情,之前一直想出一个教程,但是因为事情多加上拖延加上懒就耽搁了,事实证明东西不用就确实荒废了,现在面对当初自己做的东西顶多也就能想起一些思路,很多细节都忘了,所以这个教程也相当于是一个备忘录吧。 ...

Victoriaac的博客 2万+

【计算机硬件体系架构】计算机电脑基本架构

【计算机硬件体系架构】计算机电脑基本架构

不僈的博客 5930

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 741

常见计算机处理器架构

常见计算机处理器架构,如x86、x86_64/x64、amd64和arm64/aarch64

关于我的学习记录 6784

HarmonyOS开发第一步:Dev Eco Studio4.0保姆级安装配置指南(含Node.js环境)

本文提供HarmonyOS开发环境搭建的保姆级教程,重点详解Dev Eco Studio 4.0的安装与配置,并攻克Node.js环境与Ohpm包管理器的关键设置难点。通过清晰的步骤指引,帮助开发者从零开始,高效完成开发环境部署,顺利迈出鸿蒙应用开发的第一步。

lake5的博客 569

电商数据分析19——数据分析在电商平台价格弹性研究中的应用

价格弹性是一个衡量产品价格变化对销量影响的经济学指标,对于电商平台而言,深入理解和有效运用价格弹性,对于制定竞争策略、优化产品定价具有重要意义。随着大数据时代的到来,通过数据分析研究产品的价格弹性,成为了电商企业制定价格策略、调整市场定位、优化促销活动的重要依据。

theskylife的博客 2833

计算机体系结构

计算机体系结构,冯·诺依曼体系结构,运算器、控制器、存储器,输入输出设备

L752034395的博客 3068

戴维南和诺顿定理到底怎么选?一个实际维修案例讲透两种等效电路用法

本文通过工业电源模块维修案例,详细解析戴维南和诺顿定理在实际电路分析中的选择策略。针对电压敏感型故障、电流分配问题及功率传输异常,提供三大黄金法则,帮助工程师高效选择等效电路方法,提升故障排查效率。特别强调诺顿定理在电流分析中的优势。

weixin_31854867的博客 357

计算机知识架构一:计算机组成、体系结构

计算机体系结构简介计算机系统的组成:硬件和软件硬件、功能部件基本组成、处理机(冯诺依曼)一、输入、输出设备二、存储器主存、内存(CPU能直接访问)辅存、外存(需调入主存,才能被CPU访问)三、运算器(CPU中)算术逻辑单元(ALU)寄存器四、控制器(控制中心,CPU中)更多概念:CPU、主机、外部设备处理机总线软件分类、三个级别的语言 简介 计算机体系结构:能够被( 汇编、机器语言)程序员看到的计...

谅至的博客 5420

网络攻防实验——网络监听

利用CAIN实现ARP监听。

Trieyes_of_feng的博客 3196

【电磁场与电磁波课程设计】基于HFSS的双频微带天线仿真及设计

第五代移动通信技术(5G)的商用已经近在眼前,作为移动通信中最为重要的功能组件,面向5G通信应用的手机天线与基站天线的技术研究与设计成为近年来的热点。随着移动通信中“跳频”“扩频”等通信技术发展,为了满足与多个终端的通信要求,实现多系统共用和收发共用等功能,这就要求天线在不同频段下工作。根据国家工信部的最新规定,5G移动通信的中频段被划定在3.3 GHz-3.5 GHz及4.8 GHz-5.0 GH,面向5G移动通信的天线应具有高增益、小型化、宽频段及高隔离度等技术特征,以满足5G通信的高传输速率、波束智能

weixin_44450575的博客 1万+

分布式架构概述及设计

引言 随着越来越多的人参与到互联网的浪潮来,曾经的单体应用架构越来越无法满足需求,所以,分布式集群架构出现,也因此,分布式搭建开发成为了Web开发者必掌握的技能之一。那什么是分布式呢?怎么实现分布式以及怎么处理分布式带来的问题呢?本系列文章是笔者对自身学习的总结,包含但不限于Zookeeper、Dubbo、消息队列(ActiveMQ、Kafka、RabbitMQ)、Nosql(Redis、Mong...

夜勿语的博客 1万+

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2534

分布式专题(一)漫谈分布式架构

一,计算机发展史概述 1946 年情人节(2.14) , 世界上第一台电子数字计算机诞生在美国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地170平米、重达30吨,每秒可进行5000次加法运算。第一台电子计算机诞生以后,意味着一个日新月异的IT时代的到来。一方面单台计算机的性能每年都在提升:从最早的 8位 CPU 到现在的64位CPU;从早期的MB级内存到现在的GB级...

ThinkMore 465

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

01分布式基础(一)-分布式架构概述

分布式架构概述什么是分布式分布式和集群的关系计算机的发展历史架构的发展演变过程 什么是分布式 分布式和集群的关系 计算机的发展历史 架构的发展演变过程 ...

越努力越幸运的博客 1316

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

单体架构、集群架构和分布式架构概述

在现代系统架构和开发过程中,单体架构、集群架构和分布式架构是三个常见且关键的概念。本文将详细介绍这些技术的相关概念,并探讨它们之间的联系与区别。

欢乐的马的博客 1452

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

分布式架构概述

随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系架构,已经越来越不能满足当今计算机系统。同时,随着微型计算机的出现,越来越多廉价的PC机成为了各大企业IT架构的首选,分布式的处理方式越来越受到业界的青睐。本文将介绍分布式架构的发展历史和分布式架构的一些相关概念。 分布式架构的发展历史 自20世纪60年代大型主机被发明出来之后,凭借其超强的计算和I/O处理能力,以...

Embrace Change 213

分布式专题(一)什么是分布式

什么是分布式? 任务分解 节点通信   分布式和集群的关系? 电商平台:  用户、 商品、订单、 交易 分布式: 一个业务拆分成多个子系统,部署在不同的服务器上 集群:  同一个业务,部署在多个服务器上   什么是大型网站 访问量(tps、qps) 数据量(存储数据量)   第一版应用 第二版 单击负载越来越高,数据库服务器和应用服务器分离 第三版  应用服务器做...

~ 2万+

分布式专题-漫谈分布式架构01-分布式架构的演进过程

从本专题我们开始进入分布式专题,分布式作为互联网企业技术人员必备的技能之一。也是我们本套分享内容所有专题都是围绕分布式展开的,不可谓不重要~ Tips: 1.了解分布式架构中的相关概念 2.初始分布式架构及意义 3.分布式架构的发展过程和历史 4.分布式架构的演进过程 5.构建分布式架构最重要的因素

✎ℳ๓₯㎕...雲淡風輕 2725

一、什么是分布式架构

前言:   随着互联网的快速发展和进步,各个行业迎来了飞速发展的机遇,而在这其中Java这门语言在互联网时代中作为中流砥柱,也在不断的革新,而我们的互联网等公司由于越来越复杂的业务和用户需求使我们传统的单机项目越来越难以满足要求,而在这其中诞生出了另一种理念《分布式》,分布式的出现则是为了应对企业持续复杂化的业务和需求。 一、单机项目时代:   优势:     在传统的单机项目时...

anzhe6649的博客 1514

分布式架构的概述

现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。 那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式...

weixin_43746366的博客 9278

分布式专题体系学习

    本专题对分布式专题体系进行学习,学习内容分为以下各个专题:     1. 分布式架构原理         (1)分布式架构演进过程         (2)如何把应用从单机扩展到分布式         (3)CDN加速静态文件访问         (4)系统监控、容灾、储存动态扩容         (5)架构设计及业务驱动分化         (6)CAP、Base理论及其应用...

ZG_24的博客 445

分布式架构和微服务架构

分布式架构是一种将系统拆分为多个独立的组件,这些组件可以在不同的计算机或服务器上运行,并通过网络进行通信的架构。它的目标是提高系统的可伸缩性、可靠性和性能。在分布式架构中,系统的不同组件可以独立部署和扩展,每个组件可以处理自己的任务,并通过消息传递或远程调用与其他组件进行通信。这种解耦的设计使得系统更加灵活,可以根据需求动态地调整和扩展。分布式架构可以通过多种方式实现,例如集中式架构、客户端-服务器架构、对等架构等。不同的架构方式适用于不同的场景和需求。

Winter的博客 7992
上一篇: 数据结构专题—计算机中常用的数据结构
下一篇: 分布式架构专题—分布式协调服务 zookeeper
MoveFlower
博客等级 码龄10年 23粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值