考古:IT架构演进之IOE架构

考古:IT架构演进之IOE架构


  IOE架构(IBM, Oracle, EMC)出现在20世纪末至21世纪初,是一种典型的集中式架构体系。在这个阶段,企业的关键业务系统往往依赖于IBM的小型机(后来还包括大型机)、Oracle的关系型数据库管理系统以及EMC的高端存储解决方案。这种架构的优势在于其高度稳定、可靠且性能强大,但是扩展性差、成本高昂,且过于依赖单一供应商的技术栈。基于以上特点,该架构主要在金融、电信以及其他关键业务领域得到了广泛使用。
  这种架构强调高度集中、强大可靠且性能卓越,但在扩展性和成本效益方面存在局限性,尤其是在面对互联网时代的大规模、高并发和灵活扩展需求时就显得束手无策。

三大支柱

  这一架构主要由IBM小型机、Oracle数据库和EMC存储系统三大支柱构成,是过去企业级IT架构中的三个核心组成部分,它们在传统数据中心环境中发挥着至关重要的作用,并彼此之间有着密切的关联和相互依赖关系:
image.png

IBM(I)

  IOE架构中“I”通常指的是IBM的高性能服务器(IBM小型机,如Power Systems),这是一种高性能、高可靠性的计算平台,专为处理关键业务工作负载而设计,支持复杂的企业应用程序和数据库服务。IBM小型机通常具备出色的稳定性、可用性和可管理性,以及较强的处理能力,可以承载诸如Oracle数据库在内的关键应用。

Oracle (O)

  IOE架构中“O”通常指的是Oracle数据库管理系统(业界领先的商业关系型数据库管理系统),这是一个在全球范围内广泛应用的关系型数据库软件。适用于企业级数据存储和管理,提供高度可靠、可扩展的数据服务。Oracle数据库常用于处理大规模、高并发、对事务处理要求严格的业务场景,如金融交易记录、客户订单管理等。

EMC (E)

  IOE架构中“E”通常指的是EMC高端存储系统,是当时市场上备受青睐的企业级数据存储解决方案提供商,提供了一系列高性能、高容量、高可用的存储产品,满足企业对于海量数据存储和备份恢复的要求。EMC的产品包括磁盘阵列、NAS(网络附加存储)和SAN(存储区域网络)等,确保数据的安全性和访问效率。这些存储设备在为企业提供了可靠的、大容量的数据存储空间的同时,还通过高速的网络连接与IBM服务器和Oracle数据库配合,确保数据的高效存取和高可用性。

  综上,三者之间的关系可以概括如下:

  • IBM服务器为运行Oracle数据库提供坚实的硬件平台;
  • Oracle数据库在IBM服务器上运行,处理和存储企业的核心数据;
  • EMC存储系统与IBM服务器及Oracle数据库相联接,共同保障企业数据的安全存储和高效访问。

高可用实现

  IOE架构高可用的实现可从各个组成部分来拆分实现和操作系统、网络层面实现:

IBM

  硬件冗余与故障切换,IBM提供的系统通常具备高级别的硬件冗余设计,例如电源冗余、硬盘冗余(RAID)、内存镜像等。同时,许多IBM系统支持高可用集群(如PowerHA SystemMirror或HACMP),在主系统发生故障时,可以自动切换到备用系统,保持业务连续性。

Oracle数据库

  • RAC (Real Application Clusters):Oracle RAC允许数据库在多台服务器之间共享,形成一个集群。当某一台服务器宕机时,其他服务器可以无缝接管服务,保证数据库的不间断运行。
  • Data Guard: Oracle Data Guard通过创建数据库的备用实例,实时同步或异步复制主数据库的数据,以便在主数据库出现问题时,能够快速切换到备用实例继续提供服务。

EMC存储高可用

  • 存储阵列冗余:EMC的高端存储系统会采用多种冗余机制,如RAID、镜像、快照、复制等技术,确保数据在硬件故障时不会丢失。
  • 存储区域网络(SAN)和网络附加存储(NAS):通过SAN或NAS技术可以构建共享存储环境,支持多台服务器同时访问同一份数据,结合存储虚拟化技术实现存储资源的动态分配和故障转移。
  • Geo-Replication或类似异地灾备方案:用于实现跨地域的数据复制和恢复,即使主数据中心发生灾难性故障,也能在短时间内恢复业务。

操作系统层面的高可用设计

  集群技术:在操作系统级别,通过集群软件可以将多个系统组成一个高可用集群,当某个节点失效时,集群能快速检测并重新分配资源,确保服务不中断。

网络冗余与负载均衡

  在网络层面上,通过双路径或多路径网络设计,以及负载均衡器等设备,实现网络连接的冗余和流量分配,避免因网络故障导致的业务中断。
  综上所述,IOE架构通过整合IBM服务器的硬件冗余、Oracle数据库的集群技术以及EMC存储系统的冗余与灾备机制,辅以操作系统级别的集群管理和网络层面的冗余与负载均衡设计,旨在构建涵盖硬件、操作系统、数据库直至网络层面的全方位高可用体系,以确保企业关键业务的连续性和数据安全性。

高可用案例

  结合上述讲解的各类IOE组件、操作系统和网络实现高可用的方案中,IOE架构通常结合使用虚拟IP、心跳线以及进程清单等技术手段来实现高可用。
image.png

虚拟IP (VIP)

  虚拟IP地址是指在网络中不直接绑定到任何物理网卡上的IP地址,而是作为服务的访问入口。在高可用集群环境中,虚拟IP地址会被浮动地绑定到当前处于活跃状态的服务器上。
  当集群中的主服务器正常工作时,虚拟IP会绑定在该服务器的网络接口上,所有客户端请求都会通过虚拟IP发送到主服务器。
  当主服务器出现故障时,虚拟IP会自动漂移到备份服务器上,客户端无需感知服务器切换过程,仍可通过虚拟IP继续访问服务,从而实现服务的无缝切换。

心跳线

  心跳线(Heartbeat)是集群成员之间用来监测对方健康状况的一种通信机制。集群内的每台服务器定期发送心跳消息给其他服务器,表示自身仍在正常运行。
  如果主服务器停止发送心跳消息,那么备份服务器就会认为主服务器已出现故障,并启动接管程序,将虚拟IP地址绑定到自己身上,接手服务提供任务。
  心跳线不仅可以监测服务器是否在线,还可以交换必要的集群状态信息,如哪个节点正在提供服务、是否有资源变动等。

进程清单

  进程清单是指集群内定义的一系列关键业务进程及其监控规则。在高可用集群软件(如Linux-HA项目中的Heartbeat、IBM PowerHA、Oracle RAC等)中,会明确指定哪些服务或进程需要保持高可用性。
  当主服务器出现故障,心跳线检测到异常后,备份服务器不仅会接管虚拟IP,还会按照预设的进程清单启动相应的服务进程,确保业务连续性。
  同样,当主服务器恢复正常时,备份服务器会释放虚拟IP并将服务切换回主服务器,保持集群环境的稳定和平衡。

  综合以上三种技术,IOE架构可以通过虚拟IP实现服务访问的统一入口和故障切换,通过心跳线实现实时监控和故障检测,通过进程清单确保关键业务的自动恢复和迁移,从而达到高可用目标。不过,具体的实施细节会根据不同的IOE组件(如IBM AIX系统上的PowerHA、Oracle数据库的RAC等)和相关集群管理软件的具体功能有所差异。

去IOE运动

  IOE架构的主要特点是高度集中和专业化,这样的架构在过去的IT环境中非常受欢迎,因为它能够提供极高的稳定性和服务质量,尤其适合那些对数据一致性、处理速度和业务连续性要求极高的场景。然而,随着云计算、分布式计算和开源技术的发展,IOE架构的成本、扩展性问题逐渐凸显出来,尤其是在大规模互联网业务场景下,这种高度集中的架构显得不够灵活和经济。
  “去IOE”运动随之兴起,尤其是像阿里巴巴这样的大型互联网公司,他们开始倡导并实践使用更加开放、低成本、可扩展性强的IT架构,比如采用开源数据库MySQL、MongoDB等替代Oracle数据库,使用基于x86架构的PC服务器集群取代IBM小型机,以及使用分布式存储系统替代传统的高端存储设备,从而降低对单一供应商的依赖,提高IT架构的灵活性和经济效益。
  “去IOE”运动在中国尤其引人注目,尤其是阿里巴巴等公司在应对业务爆发式增长和技术自主可控的需求下,提出了摆脱对传统IOE架构的依赖,转向自主研发或采用更为开放、性价比更高的软硬件方案。
  同时安全因素也推动了这一运动,例如棱镜门事件之后,信息安全的重要性被进一步强化,很多企业和政府机构开始寻求国内技术和产品的替代方案,减少对外部技术的依赖。


一键三连,让我的信心像气球一样膨胀!

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

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

相关文章

基于SpringBoot+Vue的儿童书法机构管理系统

一、项目背景介绍: 儿童书法机构的管理是一个具有挑战性的任务,需要有效的信息管理和资源分配。传统的手动管理方式存在着效率低下、易出错等问题。为了解决这些问题,基于SpringBootVue的儿童书法机构管理系统应运而生。该系统利用现代化的技…

Linux--进程(2)

目录 前言 1. 进程的状态 1.1 进程排队 1.2 运行,阻塞,挂起 2.Linux下具体的进程状态 2.1僵尸和孤儿 3.进程的优先级 4.Linux的调度与切换 前言 这篇继续来学习进程的其它知识 上篇文章:Linux--进程(1)-CS…

ES12 学习

文章目录 1. 逻辑赋值操作符2. 数字分隔符_3. replaceAll4. Promise.any5. WeakRefs6. FinalizationRegistry 1. 逻辑赋值操作符 逻辑赋值操作符 ??、&&、|| let a true let b true a && b // a a && b a || b // a a || b obj.introduction ?…

37.ABA问题

变量初始值为A,修改成B,通过AtomicReference的compareAndSet去改变。就会先比较原来的值是否为A,如果为A则修改成功,否则修改失败。 但是如果在这个过程中,A变成D然后又变成A, 那么再调用compareAndSet去改变也能修改成功B。这个…

Redis -- 缓存击穿问题

缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种: 互斥锁 逻辑过期 逻辑分析:假设线程1在查询缓存之后&…

【Leetcode 347】,前k个高频元素,小根堆的调整

参考题解 题目:给定一个数组,输出 前k个高频元素。 思路: 遍历数组,建立小根堆(小根堆的元素是元组(num,freq),排序规则是每个元素的频率)。 下面使用数组‘heap’&…

静态路由协议实验1

要求: 使用静态路由协议使得全网可达。 第一步、规划IP地址。并配置IP。 第二步、写静态路由 [r1]ip route-static 192.168.3.0 24 192.168.2.2 [r1]ip route-static 192.168.4.0 24 192.168.2.2 [r1]ip route-static 192.168.5.0 24 192.168.2.2[r2]ip route-st…

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录 文章目录 一、next-auth 身份验证凭据-使用电子邮件和密码注册登录一、前言二、前置准备1、环境配置2、相关库安装(1)vercel 配置(2)Yarn 包管理配置 3、next项目初始化与…

【Oracle】oracle、mysql、sql server三者区别

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Oracle》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识…

并查集(基础+带权以及可撤销并查集后期更新)

并查集 并查集是一种图形数据结构,用于存储图中结点的连通关系。 每个结点有一个父亲,可以理解为“一只伸出去的手”,会指向另一个点,初始时指向自己。一个点的根节点是该点的父亲的父亲的..的父亲,直到某个点的父亲…

Shell脚本之基础-2

目录 一、字符处理 cut命令 awk命令 sed命令 字符串排序 二、条件判断 文件类型判断 文件权限判断 两个文件的判断 整数比较 字符串判断 多重判断 三、流程控制 if分支 if else 双分支结构 case分支 for循环 while循环 一、字符处理 cut命令 命令格式&#x…

Linux下I2C设备驱动:I2C设备和驱动匹配过程

一. 简介 Linux 内核也将 I2C 驱动分为两部分: (1) I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 (2) I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 本文来学习一下…

深入剖析JavaScript中的this(下)

五、事件处理函数的this 5.1 事件绑定 <button id"btn">点击我</button>function handleClick(e) {console.log(this);// <button id"btn">点击我</button> }document.getElementById(btn).addEventListener(click, handleClick…

CSS基础:4种简单选择器的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生&#xff0c;2年时间从1800到月入过万&#xff0c;工作5年买房。 分享成长心得。 261篇原创内容-公众号 后台回复“前端工具”可获取开发工具&#xff0c;持续更新中 后台回复“前端基础…

MySQL客户端安装并配置免密登录

最近在写脚本时需要向MySQL数据库中存储数据&#xff0c;且脚本运行的服务器与MySQL服务器不是同一台服务器&#xff0c;而且需要保证MySQL密码的安全性&#xff0c;不能在脚本中暴露&#xff0c;所以就需要在服务器上安装MySQL客户端&#xff0c;并配置免密登录。 一、虚拟机…

Git安装教程(图文安装)

Git Bash是git(版本管理器)中提供的一个命令行工具&#xff0c;外观类似于Windows系统内置的cmd命令行工具。 可以将Git Bash看作是一个终端模拟器&#xff0c;它提供了类似于Linux和Unix系统下Bash Shell环境的功能。通过Git Bash&#xff0c;用户可以在Windows系统中运行基于…

顺序表的动态实现

文章目录 静态顺序表和动态顺序表的异同动态顺序表的实现头文件定义结构体初始化打印顺序表 实现增删查改尾插头插尾删头删删掉某个位置的数据在某个位置插入数据查找某个位置的下标修改某个位置的数据扩容销毁顺序表 静态顺序表和动态顺序表的异同 相同: 内存空间连续&#xf…

Vue项目登录页实现获取短信验证码的功能

之前我们写过不需要调后端接口就获取验证码的方法,具体看《无需后端接口,用原生js轻松实现验证码》这个文章。现在我们管理后台有个需求,就是登录页面需要获取验证码,用户可以输入验证码后进行登录。效果如下,当我点击获取验证码后能获取短信验证码: 这里在用户点击获取…

C# 委托与事件 深入

委托委托最大的好处委托的第二个作用就是可以多播泛型委托预定义的委托*EventHandler 委托&#xff1a;* 事件事件就是一种特殊的委托举个例子微软为我们提供了标准事件模式 委托 这是一个简单的委托样例 class TODO {public static void Main(String[] args) {Cal aa new C…

Linux 线程:线程同步、生产者消费者模型

目录 一、死锁 二、条件变量实现线程同步 1、为什么需要线程同步 2、条件变量、同步、竞态条件 3、条件变量函数&#xff1a;初始化 销毁 等待 唤醒 4、实现简单的多线程程序 不唤醒则一直等待 实现线程同步 三、生产者消费者 1、借助超市模型理解 2、优点 四、基于…