Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >阿里P8架构师深度概述分布式架构

阿里P8架构师深度概述分布式架构

作者头像
Java高级架构
发布于 2018-11-06 03:16:39
发布于 2018-11-06 03:16:39
6950
举报
文章被收录于专栏:JAVA高级架构JAVA高级架构

简介

作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术的妹子看你时眼神迷离,就好想落霞与孤鹜齐飞!

分布式架构是一个非常复杂的体系,任何技术都不是孤立的存在,任何技术都无法适应所有场景。作为一名分布式系统架构或者资深研发人员,我们必须尽可能多的学习与之相关的各种知识,掌握各种技术的演进路线,正式从一名码农蜕变成为架构师

什么是分布式?

互联网应用的特点是:高并发,海量数据。互联网应用的用户数是没有上限的(取决于其开放特性),这也是和传统应用的本质区别。高并发指系统单位时间内收到的请求数量(取决于使用的用户数),没有上限。海量数据包括:海量数据的存储和海量数据的处理。这两个工程难题都可以使用分布式系统来解决。

简单理解,分布式系统就是把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题:

1)任务分解

把一个问题拆解成若干个独立任务,每个任务在一台节点上运行,实现多任务的并发执行。

2)节点通信

节点之间互相通信,需要设计特定的通信协议来实现。协议可以采用RPC或Message Queue等方式。

分布式和集群的关系

分布式:一个业务分拆多个子业务,部署在不同的服务器

集群:同一个业务,部署在多个服务器上

计算机发展历史

  1. 1946年情人节(2.14) , 世界上第一台电子数字计算机诞生在美国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地170平米、重达30吨,每秒可进行5000次加法运算。

第一台电子计算机诞生以后,意味着一个日新月异的IT时代的到来。一方面单台计算机的性能每年都在提升:从最早的8位CPU到现在的64位CPU;从早期的MB级内存到现在的GB级别内存;从慢速的机械存储到现在的固态SSD硬盘存储。

|

tips: 电子计算机的问世,最重要的奠基人是英国科学家艾兰· 图灵(Alan Turing)和美籍匈牙利科学家冯· 诺依曼(John Von· Neumann)。图灵的贡献是建立了图灵机的理论模型,奠定了人工智能的基础。而冯· 诺依曼则是首先提出了计算机体系结构的设想。

经典理论-冯.诺依曼体系:计算机硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。直到今天,计算机仍没有跳出该体系的范畴。

  1. ENIAC之后,电子计算机便进入了IBM主导的大型机时代,IBM大型机之父吉恩.阿姆达尔被认为是有史以来最伟大的计算机设计师之一。1964年4月7日,在阿姆达尔的带领下,历时三年,耗费50亿美元,第一台IBM大型机SYSTEM/360诞生。这使得IBM在20实际50~60年代统治整个大型计算机工业,奠定了IBM计算机帝国的江山。

2.1 IBM大型机曾支撑美国航天登月计划

2.2 IBM主机一直服务于金融等核心行业的关键领域

由于高可靠性和超强的计算能力,几遍在X86和云计算飞速发展的情况下,IBM的大型机依然牢牢占据着一定的高端市场份额

  1. 20世纪80年代,在大型机霸主的时代,计算机架构同时向两个方向发展

以X86 CPU为架构的价格便宜的面向个人的PC

以RISC CPU为架构的价格昂贵的面向企业的小型UNIX服务器

分布式架构发展的里程碑

大型主机的出现。凭借着大型机超强的计算和I/O处理能力、稳定性、安全性等,在很长一段时间内,大型机引领了计算机行业及商业计算领域的发展。

而集中式的计算机系统架构也成为了主流。

随着计算机的发展,这种架构越来越难以适应人们的需求,比如说

  1. 由于大型主机的复杂性,导致培养一个能够熟练运维大型主机的人的成本很高
  2. 大型主机很贵,一般只有土豪(政府、金融、电信)才能用得起
  3. 单点问题,一台大型主机出现故障,那么整个系统将处于不可用状态。而对于大型机的使用群体来说,这种不可用导致的损失是非常大的
  4. 科技在进步,技术在进步。PC机性能不断提升,很多企业放弃大型机改用小型机及普通PC来搭建系统架构

阿里巴巴在2009年发起了一项"去IOE"运动

当初指的是IBM小型机、Oracle数据库、EMC的高端存储

2009年“去IOE”战略透露,到2013年5月17日最后一台IBM小型机在支付宝下线。

为什么要去IOE?

阿里巴巴过去一直采用的是Oracle数据库,并利用小型机和高端存储设备提供高性能的数据处理和存储服务。随着业务的不断发展,数据量和业务量呈爆发性增长,传统的集中式Oracle数据库架构在扩展性方面遭遇瓶颈。

传统的商业数据库软件(Oracle,DB2),多以集中式架构为主,这些传统数据库软件的最大特点就是将所有的数据都集中在一个数据库中,依靠大型高端设备来提供高处理能力和扩展性。集中式数据库的扩展性主要采用向上扩展(Scale up)的方式,通过增加CPU,内存,磁盘等方式提高处理能力。这种集中式数据库的架构,使得数据库成为了整个系统的瓶颈,已经越来越不适应海量数据对计算能力的巨大需求

架构的发展演变过程

一个成熟的大型网站系统架构并不是一开始就设计的非常完美,也不是一开始就具备高性能、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步完善演变过来的。在这个过程中,开发模式、技术架构等都会发生非常大的变化。而针对不同业务特征的系统,会有各自的侧重点,比如像淘宝这类的网站,要解决的是海量商品搜索、下单、支付等问题;像腾讯,要解决的是数亿级别用户的实时消息传输;百度所要解决的是海量数据的搜索。每一个种类的业务都有自己不同的系统架构。我们简单模拟一个架构演变过程。

什么是大型网站

如何定义一个网站是不是大型网站,一般我们会从两个纬度去考衡,访问量以及数据量,二者缺一不可。

我们以javaweb为例,来搭建一个简单的电商系统,从这个系统中来看系统的演变历史;要注意的是,接下来的演示模型,关注的是数据量、访问量提升,网站结构发生的变化, 而不是具体关注业务功能点。其次,这个过程是为了让大家更好的了解网站演进过程中的一些问题和应对策略。

假如我们系统具备以下功能:

用户模块:用户注册和管理

商品模块:商品展示和管理

交易模块:创建交易及支付结算

阶段一 , 单应用架构

网站的初期也可以认为是互联网发展的早起,我们经常会在单机上跑我们所有的程序和软件。

把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建,这个时候的讲究的是效率

阶段二,应用服务器和数据库服务器分离

随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,在服务器还没有超载的时候,我们应该做好规划,提升网站的负载能力。假如代码层面的优化已经没办法继续提高,在不提高单台机器的性能,增加机器是一个比较好的方式,投入产出比非常高。这个阶段增加机器的主要目的是讲web服务器和数据库服务器拆分,这样不仅提高了单机的负载能力,也提高了容灾能力

阶段三,应用服务器集群-应用服务器负载告警,如何让应用服务器走向集群

随着访问量的继续增加,单台应用服务器已经无法满足需求。在假设数据库服务器还没有遇到性能问题的时候,我们可以增加应用服务器,通过应用服务器集群将用户请求分流到各个服务器中,从而继续提升负载能力。此时多台应用服务器之间没有直接的交互,他们都是依赖数据库各自对外提供服务

架构发展到这个阶段,各种问题也会慢慢呈现

  1. 用户请求由谁来转发到具体的应用服务器
  2. 用户如果每次访问到的服务器不一样,那么如何维护session

阶段四,数据库压力变大,数据库读写分离

架构演变到这里,并不是终点。上面我们把应用层的性能拉上来了,但是数据库的负载也在慢慢增大,那么怎么去提高数据库层面的负载呢?有了前面的思路以后,自然会想到增加服务器。但是假如我们单纯的把数据库一分为二,然后对于后续数据库的请求,分别负载到两台数据库服务器上,那么一定会造成数据库不统一的问题。所以我们一般先考虑读写分离的方式

这个架构的变化会带来几个问题

  1. 主从数据库之间的数据同步 ; 可以使用mysql自带的master-slave方式实现主从复制
  2. 对应数据源的选择 ; 采用第三方数据库中间件,例如mycat

阶段五,使用搜索引擎缓解读库的压力

数据库做读库的话,尝尝对模糊查找效率不是特别好,像电商类的网站,搜索是非常核心的功能,即便是做了读写分离,这个问题也不能有效解决。那么这个时候就需要引入搜索引擎了

使用搜索引擎能够大大提高我们的查询速度,但是同时也会带来一些附加的问题,比如维护索引的构建。

阶段六,引入缓存机制缓解数据库的压力

随着访问量的持续增加,逐渐出现许多用户访问统一部分内容的情况,对于这些热点数据,没必要每次都从数据库去读取,我们可以使用缓存技术,比如memcache、redis来作为我们应用层的缓存;另外在某些场景下,比如我们对用户的某些IP的访问频率做限制,那这个放内存中又不合适,放数据库又太麻烦,这个时候可以使用Nosql的方式比如mongDB来代替传统的关系型数据库

阶段七,数据库的水平/垂直拆分

我们的网站演进的变化过程,交易、商品、用户的数据都还在同一个数据库中,尽管采取了增加缓存,读写分离的方式,但是随着数据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。因此我们可以考虑对数据的垂直拆分和水平拆分

垂直拆分:把数据库中不同业务数据拆分到不同的数据库

水平拆分:把同一个表中的数据拆分到两个甚至跟多的数据库中,水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈,这时可以采取讲表拆分到多个数据库中

阶段八,应用的拆分

随着业务的发展,业务越来越多,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑讲应用拆分,按照领域模型讲我们的用户、商品、交易拆分成多个子系统

这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品和交易都需要查询,所以会导致每个系统都会有用户查询访问相关操作。这些相同的操作一定是要抽象出来,否则就会是一个坑。所以通过走服务化路线的方式来解决

那么服务拆分以后,各个服务之间如何进行远程通信呢?

通过RPC技术,比较典型的有:webservice、hessian、http、RMI等等

前期通过这些技术能够很好的解决各个服务之间通信问题,but,互联网的发展是持续的,所以架构的演变和优化还在持续。

总结

我们通过这个例子来讲解了电商网站的架构演进。我要强调一下,这个架构的演进不是某个网站真实的例子,实际上是通过这样一个演进过程给大家带来一个全局的观念和感受。以及给大家在后续课程学习过程中的一些思路。

如何把单击扩展到分布式

前面我们讲到了冯.诺依曼模型,计算机一共由5个部分组成,从用户角度来看,分布式系统就像一台超级计算机。理论上也应该由输入、输出、运算、存储和控制这5部分组成。

输入设备的变化

在分布式系统架构中,输入设备可以分两类,第一类是互相连接的多个节点,在接收其他节点传来的信息作为该节点的输入;另一种就是传统意义上的人机交互的输入设备了

输出设备的变化

输出和输入类似,也有两种,一种是系统中的节点向其他节点传输信息时,该节点可以看作是输出设备;另一种就是传统意义上的人际交互的输出设备,比如用户的终端

控制器的变化

在单机中,控制器指的是CPU中的控制器,在分布式系统中,控制器主要的作用是协调或控制节点之间的动作和行为;比如硬件负载均衡器;LVS软负载;规则服务器等

运算器

在分布式系统中,运算器是由多个节点来组成的。运用多个节点的计算能力来协同完成整体的计算任务

存储器

在分布式系统中,我们需要把承担存储功能的多个节点组织在一起,组成一个整体的存储器;比如数据库、redis(key-value存储)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高级架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ima.copilot 的安装与基本使用
)是一款以知识库为核心的智能工作台,集搜索、阅读、写作为一体,全面提升用户的学习与办公效率。产品接入腾讯混元大模型与
陈明勇
2025/03/28
1.3K7
ima.copilot 的安装与基本使用
利用ima.copilot,打造你的AI知识库
和几位同学聊起了各路 AI+工具的强大特性,特别是对于团队来说很重要的知识库功能,是我个人认为对职场同学,特别是对于技术管理同学来说很重要的一种增强个人竞争力的途径。
老_张
2025/02/06
2.1K1
利用ima.copilot,打造你的AI知识库
我的智能写作&知识库管理搭子--ima.copilot
腾讯出品的一款具备“搜、读、写”能力的知识库管理AI工具,目前已经支持DeepSeek R1(慢思考)满血版、混元T1(快思考)和联网功能。
巫山老妖
2025/06/16
1230
我的智能写作&知识库管理搭子--ima.copilot
ima.copilot--腾讯推出最新的AI智能工作台产品
腾讯10月23日推出ima.copilot(简称ima)AI智能工作台产品,基于腾讯混元大模型技术支持。
AIGC新知
2024/10/28
3.8K1
ima.copilot--腾讯推出最新的AI智能工作台产品
腾讯IMA上线!数据分析+文献阅读神器,效率翻倍
ima.copilot(简称 ima)是一款以知识库为核心的智能工作台,集搜索、阅读、写作为一体,全面提升用户的学习与办公效率。产品接入腾讯混元大模型与 DeepSeek R1 满血版,为有较高信息获取、处理与内容创作需求的用户,提供强大且高效的智能支持。
生信大杂烩
2025/06/10
1460
腾讯IMA上线!数据分析+文献阅读神器,效率翻倍
腾讯IMA:AI智能工作台的革命性创新
这里推荐一篇实用的文章:https://cloud.tencent.com/developer/article/2466030?shareByChannel=link
算法一只狗
2024/11/19
1.9K0
腾讯IMA:AI智能工作台的革命性创新
腾讯又出新产品了,ima智能工作台出道即巅峰
如何高效地记录、整理和管理这些信息,成为了许多人面临的挑战。而ima笔记,正是为了解决这个问题而诞生的智能笔记工具。今天,就让我们一起走进ima笔记的世界,探索它如何成为我们智能生活的得力助手。
软件架构师Michael
2024/11/27
8960
腾讯智能工作台 ima.copilot:开启搜读写新体验
在数字化时代,效率与智能是工作与学习的关键词。腾讯最新推出的 AI 智能工作台——ima.copilot(简称 ima),正是在这样的背景下应运而生,旨在通过强大的技术支持,为用户提供一个集搜索、阅读、写作于一体的高效工作平台。
程序那些事儿
2024/12/05
4.3K0
腾讯智能工作台 ima.copilot:开启搜读写新体验
Hi大家好,我是腾讯ima
今天,给大家介绍一款我们最近新出的产品,AI智能工作台ima.copilot(简称ima)
小腾资讯君
2024/11/15
7192
3分钟教会你腾讯ima:借别人脑子用用,打造你的专属知识库!
在这个信息爆炸的时代,我们每天都在经历知识的"溺水时刻"——收藏夹里吃灰的深度好文、手机相册堆积的课件截图、微信里来不及整理的行业报告,就像散落的珍珠等待被串联。腾讯最新推出的AI智能工作台ima.copilot(简称ima),正在用一场静默的革命,重新定义知识管理的边界。与微信公众号生态的深度整合,让ima成为中文互联网的"认知捕手"。
AI研思录
2025/02/20
9.4K0
3分钟教会你腾讯ima:借别人脑子用用,打造你的专属知识库!
ima.copilot的共享知识库,比我想象的更强大~
ima.copilot(https://ima.qq.com)是腾讯推出的一款桌面AI应用工具,它的知识库功能比较强大,也接入了DeepSeek-R1大模型。
zhanyd
2025/03/10
1.5K0
ima.copilot的共享知识库,比我想象的更强大~
为何腾讯ima知识库是当前个人智能知识库搭建的最佳方式
今天准备再写一篇文章来谈下我个人最近使用腾讯ima知识库的一些心得体会。先说结论的话就是,从当前来看,腾讯ima知识库仍然是个人搭建自己的智能知识库最佳方式。
人月聊IT
2025/06/24
1330
为何腾讯ima知识库是当前个人智能知识库搭建的最佳方式
腾讯ima知识库横空出世-不仅仅是知识库,更是AI时代个人第二大脑
今天迫不及待的想和大家分享下腾讯ima知识库。我把它理解为腾讯在最近1年左右时间里面推出了最有价值的一个产品或服务。
人月聊IT
2025/06/24
970
腾讯ima知识库横空出世-不仅仅是知识库,更是AI时代个人第二大脑
深度测评:腾讯ima X DeepSeek,AI搜读写的终极指南!
今天我要介绍的是腾讯出品的ima平台,官方定义:会思考的知识库,开启搜读写新体验,最近也支持DeepSeek R1 满血版。作为一名知识工作者,每天都会用到这三个场景,那么今天我就给大家深度测评下这个款AI应用实际操作体验分析和优缺点。
陈宇明
2025/02/26
3521
​腾讯IMA.Copilot:开启智能视觉创作的“AI副驾驶”​
在AI技术深度赋能产业的浪潮中,腾讯推出全新升级的智能创作工具——IMA.Copilot​(Intelligent Media Assistant Copilot)。作为腾讯云智能媒体处理体系的核心组件,IMA.Copilot深度融合大模型与垂直领域知识库,致力于成为内容创作者、企业与开发者的“AI副驾驶”,通过人机重构图像视频生产流程,让创意实现效率倍增。
软件架构师Michael
2025/04/12
5290
进击的AI工具:全能AI阅读软件Walles AI
好消息是,我们已经进入了 AIGC时代,随着AI大模型的爆发,AI工具,尤其是AI阅读工具为我们提供了全新的高效解决方案。
数字花园
2023/11/09
5180
进击的AI工具:全能AI阅读软件Walles AI
大模型真正落地的应用:IMA知识库
大模型结合知识库问答是一个较为常见且实用的应用场景。例如,我曾经尝试过腾讯的IMA应用,该应用背后依托于混元大模型的支持。用户在提出问题后,系统会通过互联网搜索相关信息并进行总结,为用户提供准确且高效的答案。
算法一只狗
2025/01/14
2.6K0
大模型真正落地的应用:IMA知识库
谷歌公布 2023 年最受欢迎的 12 款 Chrome 浏览器扩展
谷歌表示,开发者每年都会构建独特且富有创意的 Chrome 扩展程序,以帮助提高从生产力到网络可访问性的各个方面。2023 年当然也不例外,从在线购物省钱 到快速翻译网站。IT之家汇总 12 个最受欢迎的 Chrome 浏览器扩展如下:
用户1418987
2023/12/26
8680
谷歌公布 2023 年最受欢迎的 12 款 Chrome 浏览器扩展
Pdf转思维导图、Ai写PPT… 这10款AI办公神器别错过!
现在AI发展越发迅猛,尤其在办公领域,AI不仅提升了工作效率,还能帮助我们解决许多传统办公软件难以突破的问题。对个人来说,选择一个或几个合适的工具,不仅能大幅提升个人生产力,也是在为自己的职场竞争力加码。
奔跑的小鹿
2025/06/13
1840
Pdf转思维导图、Ai写PPT… 这10款AI办公神器别错过!
工作效率|我的编程学习路上的高效笔记工具
这里推荐一篇实用的文章:远程连接利器:玩转MobaXterm,作者:【努力的小雨】。
六月暴雪飞梨花
2024/12/06
1990
工作效率|我的编程学习路上的高效笔记工具
推荐阅读
相关推荐
ima.copilot 的安装与基本使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档