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

news2024/11/17 14:44:34

考古: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.coloradmin.cn/o/1571352.html

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

相关文章

题库管理系统-基于Springboot实现JAVA+SQL离散数学题库管理系统(完整源码+LW+翻译)

基于Springboot实现JAVASQL离散数学题库管理系统(完整源码LW翻译) 概述: 本系统具体完成的功能如下: 1题库的管理与维护:新题的录入,修改,删除等功能。 2生成试卷:包括自动生成与手工改动,要…

ThingsBoaed、系统模块层级讲解

系统管理员能够使用租户配置文件为多个租户配置通用设置。每个租户在单个时间点都拥有唯一的个人资料。 让我们一一查看租户配置文件中的可用设置。 配置文件配置 这些设置允许系统管理员配置对租户创建的实体数量的限制,设置每月最大消息数、API 调用数的限制&…

Vue - 1( 13000 字 Vue 入门级教程)

一:Vue 1.1 什么是 Vue Vue.js(通常称为Vue)是一款流行的开源JavaScript框架,用于构建用户界面。Vue由尤雨溪在2014年开发,是一个轻量级、灵活的框架,被广泛应用于构建单页面应用(SPA&#xf…

java自动化测试学习-03-06java基础之运算符

运算符 算术运算符 运算符含义举例加法,运算符两侧的值相加ab等于10-减法,运算符左侧减右侧的值a-b等于6*乘法,运算符左侧的值乘以右侧的值a*b等于16/除法,运算符左侧的值除以右侧的值a/b等于4%取余,运算符左侧的值除…

matlab使用教程(34)—求解时滞微分方程(2)

1.具有状态依赖时滞的 DDE 以下示例说明如何使用 ddesd 对具有状态依赖时滞的 DDE(时滞微分方程)方程组求解。Enright 和Hayashi [1] 将此 DDE 方程组用作测试问题。方程组为: 方程中的时滞仅出现在 y 项中。时滞仅取决于第二个分量 y 2 t …

每日面经分享(Git经典题目,Git入门)

1. GitHub是什么 a. Git是一个分布式版本控制系统,作用是跟踪、管理和协调软件开发项目中的代码更改。 b. 提供了一种有效的方式来管理代码的版本历史,以及多人协作开发的能力。 2. Git的作用有哪些 a. 版本控制:Git可以记录每次代码更改的…

政安晨:【Keras机器学习实践要点】(十六)—— 图像分类从零开始

目录 简介 设置 加载数据:猫与狗数据集 原始数据下载 滤除损坏的图像 生成数据集 将数据可视化 使用图像数据增强 数据标准化 预处理数据的两个选项 配置数据集以提高性能 建立模型 训练模型 对新数据进行推理 政安晨的个人主页:政安晨 欢…

【快捷部署】011_PostgreSQL(16)

📣【快捷部署系列】011期信息 编号选型版本操作系统部署形式部署模式复检时间011PostgreSQL16Ubuntu 20.04Docker单机2024-03-28 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1…

【二分查找】Leetcode 二分查找

题目解析 二分查找在数组有序可以使用,也可以在数组无序的时候使用(只要数组中的一些规律适用于二分即可) 704. 二分查找 算法讲解 当left > right的时候,我们循环结束,但是当left和right缩成一个点的时候&#x…

DDR3接口

mig IP核的配置 首先添加mig IP核   然后确认以下工程信息,主要是芯片型号以及编译环境,没什么问题后点击next.   如下图所示,这一页选择"Create Design",在"Component Name"一栏设置该IP元件的名称&…

Redis数据库——群集(主从、哨兵)

目录 前言 一、主从复制 1.基本原理 2.作用 3.流程 4.搭建主动复制 4.1环境准备 4.2修改主服务器配置 4.3从服务器配置(Slave1和Slave2) 4.4查看主从复制信息 4.5验证主从复制 二、哨兵模式——Sentinel 1.定义 2.原理 3.作用 4.组成 5.…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

代码随想录-算法训练营day02【滑动窗口、螺旋矩阵】

专栏笔记&#xff1a;https://blog.csdn.net/weixin_44949135/category_10335122.html https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG?uc71ed002e4554fee8c262b2a4a4935d8977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II &#xff0c;总结 建议…

[中级]软考_软件设计_计算机组成与体系结构_08_输入输出技术

输入输出技术 前言控制方式考点往年真题 前言 输入输出技术就是IO技术 控制方式 程序控制(查询)方式&#xff1a;分为无条件传送和程序查询方式两种。 方法简单&#xff0c;硬件开销小&#xff0c;但I/O能力不高&#xff0c;严重影响CPU的利用率。 程序中断方式&#xff1…

LeetCode---127双周赛

题目列表 3095. 或值至少 K 的最短子数组 I 3096. 得到更多分数的最少关卡数目 3097. 或值至少为 K 的最短子数组 II 3098. 求出所有子序列的能量和 一、或值至少k的最短子数组I&II 暴力的做法大家都会&#xff0c;这里就不说了&#xff0c;下面我们来看看如何进行优化…

Python云计算技术库之libcloud使用详解

概要 随着云计算技术的发展,越来越多的应用和服务迁移到了云端。然而,不同云服务商的API和接口千差万别,给开发者带来了不小的挑战。Python的libcloud库应运而生,它提供了一个统一的接口,让开发者可以轻松地管理不同云服务商的资源。本文将深入探讨libcloud库的特性、安装…

SecureCRT通过私钥连接跳板机,再连接到目标服务器

文章目录 1. 配置第一个session&#xff08;跳板机&#xff09;2. 设置本地端口3. 设置全局firewall4. 配置第二个session&#xff08;目标服务器&#xff09; 服务器那边给了一个私钥&#xff0c;现在需要通过私钥连接跳板机&#xff0c;再连接到目标服务器上 &#x1f349; …

vue3和vue2项目中如何根据不同的环境配置基地址?

在不同环境下取出的变量的值是不同的, 像这样的变量称为环境变量 为什么要使用环境变量呢? 开发环境生产环境下的接口地址有可能是不一样的&#xff0c;所以我们需要根据环境去配置不同的接口基地址 1、vue2环境变量配置 在根目录创建&#xff1a;.env.development和.env.p…

getc(),putc(),getchar(),putchar()之间的区别

getc&#xff08;&#xff09; putc() 与函数 getchar() putchar()类似&#xff0c;但是不同点在于&#xff1a;你要告诉getc和putc函数使用哪一个文件 1.从标准输入中获取一个字符&#xff1a; ch getchar(); //在处理器上输入字符 2.//从fp指定的文件中获取以一个字符 ch …

全面解析找不到msvcr110.dll,无法继续执行代码的解决方法

MSVCR110.dll的丢失可能导致某些应用程序无法启动。当用户试图打开依赖于该特定版本DLL文件的软件时&#xff0c;可能会遭遇“找不到指定模块”的错误提示&#xff0c;使得程序启动进程戛然而止。这种突如其来的故障不仅打断了用户的正常工作流程&#xff0c;也可能导致重要数据…