大厂Java面试-分布式架构演进史(上)

简介: 大厂Java面试-分布式架构演进史(上)

1 分布式架构的发展历史

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


tips:冯诺依曼模型

image.png

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


  • IBM 大型机曾支撑美国航天登月计划
  • IBM 主机一直服务于金融等核心行业的关键领域


由于高可靠性和超强的计算能力,即便在 X86 和云计算飞速发展的情况下,IBM 的大型机依然牢牢占据着一定的高端市场份额 20 世纪 80 年代,在大型机霸主的时代,计算机架构同时向两 个方向发展


  • 以 CISC (微处理器执行的计算机语言指令集) CPU 为架构 的价格便宜的面向个人的 PC
  • 以 RISC (精简指令集计算机) CPU 为架构的价格昂贵的面 向企业的小型 UNIX 服务器

2 分布式架构发展的里程碑

大型主机的出现。凭借着大型机超强的计算和 I/O 处理能力、 稳定性、安全性等,在很长一段时间内,大型机引领了计算机 行业及商业计算领域的发展。而集中式的计算机系统架构也成 为了主流。随着计算机的发展,这种架构越来越难以适应人们 的需求,比如说


由于大型主机的复杂性,导致培养一个能够熟练运维大型 主机的人的成本很高


大型主机很贵,一般只有土豪(政府、金融、电信)才能用得 起


单点问题,一台大型主机出现故障,那么整个系统将处于不 可用状态。而对于大型机的使用群体来说,这种不可用导致的 损失是非常大的


科技在进步,技术在进步。PC 机性能不断提升,很多企业 放弃大型机改用小型机及普通 PC 来搭建系统架构


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

IOE 指的是 IBM 小型机、Oracle 数据库、EMC 的高端存储 2009 年“去 IOE”战略透露,到 2013 年 5 月 17 日最后一台 IBM 小型机在支付宝下线。

3.1 为什么要去 IOE?

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

4 分布式系统的意义

升级单机处理能力的性价比越来越低

单机的处理能力主要依靠 CPU、内存、磁盘。通过更换硬件 做垂直扩展的方式来提升性

能,成本会越来越高。


单机处理能力存在瓶颈

单机处理能力存在瓶颈,CPU、内存都会有自己的性能瓶颈, 也就是说就算你是土豪不惜成本去提升硬件,但是硬件的发 展速度和性能是有限制的。


稳定性和可用性这两个指标很难达到

单机系统存在可用性和稳定性的问题,这两个指标又是我们 必须要去解决的

5 分布式架构的常见概念

5.1 集群

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人 多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能 炒一样的菜,这两个厨师的关系是集群

image.png

5.2 分布式

为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切 菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师 也忙不过来了,又请了个配菜师,两个配菜师关系是集群

image.png

5.3 节点

节点是指一个可以独立按照分布式协议完成一组逻辑的程序 个体。在具体的项目中,一个节点表示的是一个操作系统上的 进程。

5.4 副本机制

副本(replica/copy)指在分布式系统中为数据或服务提供的冗 余。 数据副本指在不同的节点上持久化同一份数据,当出现某一个 节点的数据丢失时,可以从副本上读取到数据。数据副本是分 布式系统中解决数据丢失问题的唯一手段。 服务副本表示多个节点提供相同的服务,通过主从关系来实现 服务的高可用方案

5.5 中间件

中间件位于操作系统提供的服务之外,又不属于应用,他是位 于应用和系统层之间为开发者方便的处理通信、输入输出的一 类软件,能够让用户关心自己应用的部分。



目录
相关文章
|
6天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
11天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
1天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
9 2
|
7天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
26 4
|
8天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
41 4
|
11天前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
29 1
|
20天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
45 5
|
19天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
18 1
|
18天前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
14 0
|
缓存 搜索推荐 NoSQL
大厂Java面试-分布式架构演进史(中)
大厂Java面试-分布式架构演进史(中)
140 0
大厂Java面试-分布式架构演进史(中)