`
frank1998819
  • 浏览: 734007 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Oracle读写分离架构 (转)

 
阅读更多

读写分离是架构分布式系统的一个重要思想。不少系统整体处理能力并不能同业务的增长保持同步,因此势必会带来瓶颈,单纯的升级硬件并不能一劳永逸。针对业务类型特点,需要从架构模式上进行一系列的调整,比如业务模块的分割,数据库的拆分等等。

集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如MYSQL),由于大部分是典型的读多写少的请求,因此为MYSQL及其复制技术大行其道提供了条件。而相对一些传统密集交易型的行业,比如电信业、金融业等,考虑到单点处理能力和可靠性、稳定性等问题,可能更多的采用商用数据库,比如DB2、Oracle等。

就数据库层面来讲,大部分传统行业核心库采用集中式的架构思路,采用高配的小型机做主机载体,因为数据库本身和主机强大的处理能力,数据库端一般能支撑业务的运转,因此,Oracle读写分离式的架构相对MYSQL来讲,相对会少。

前段时间一直在规划公司新的数据库架构,考虑到我们的业务特点,采用Oracle读写分离的思路,Writer DB和Reader DB采用日志复制软件实现实时同步; Writer DB负责交易相关的实时查询和事务处理,Reader DB负责只读接入,处理一些非实时的交易明细,报表类的汇总查询等。同时,为了满足高可用性和扩展性等要求,对读写端适当做外延,比如Writer DB采用HA或者RAC的架构模式,Reader DB可以采用多套,通过负载均衡或者业务分离的方式,有效分担读库的压力。

对于Shared-nothing的数据库架构模式,核心的一个问题就是读写库的实时同步;另外,虽然Reader DB只负责业务查询,但并不代表数据库在功能上是只读的。只读是从应用角度出发,为了保证数据一致和冲突考虑,因为查询业务模块可能需要涉及一些中间处理,如果需要在数据库里面处理(取决与应用需求和设计),所以Reader DB在功能上仍然需要可写。

下面谈一下数据同步的技术选型问题:

能实现数据实时同步的技术很多,基于OS层(例如VERITAS VVR),基于存储复制(中高端存储大多都支持),基于应用分发或者基于数据库层的技术。因为数据同步可能并不是单一的DB整库同步,会涉及到业务数据选择以及多源整合等问题,因此OS复制和存储复制多数情况并不适合做读写分离的技术首选。

基于日志的Oracle复制技术,Oracle自身组件可以实现,同时也有成熟的商业软件。选商业的独立产品还是Oracle自身的组件功能,这取决于多方面的因素。比如团队的相应技术运维能力、项目投入成本、业务系统的负载程度等。

采用Oracle自身组件功能,无外乎Logical Standby、Stream以及11g的Physical Standby(Active Data Guard),对比来说,Stream最灵活,但最不稳定,11g Physical Standby支持恢复与只读并行,但由于并不是日志的逻辑应用机制,在读写分离的场景中最为局限。如果技术团队对相关技术掌握足够充分,而选型方案的处理能力又能支撑数据同步的要求,采用Oracle自身的组件完全可行。

选择商业化的产品,更多出于稳定性、处理能力等考虑。市面上成熟的Oracle复制软件也无外乎几种,无论是老牌的Shareplex,还是本土DSG公司的RealSync和九桥公司的DDS,或是Oracle新贵Goldengate,都是可供选择的目标。随着GoldenGate被Oracle收购和推广,个人认为GoldenGate在容灾、数据分发和同步方面将大行其道。

当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。

分享到:
评论

相关推荐

    如何实现Oracle数据库的读写分离

    这是用MySQL的读写分离技术,实现数据的写入和读取分别在不同的库上,提升了数据库服务能力。  同样,在Oracle作为后台数据库的架构中,我们也可以这么做。实现的方式有很多种。  有基于RAC架构的,使用其中某个...

    运用logical standby技术实现Oracle数据库的读写分离

    在MySQL作为应用系统的后台数据库时,我们常常见到这样的架构,一拖二、一拖三等等。这是用MySQL的读写分离技术,实现...我们这里介绍最后一个方法,利用dataguard技术中的logical standby实现Oracle数据库的读写分离。

    数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    MySQL小型高可用架构方案:MySQL双主、主从+Keepalived主从自动切换服务器资源:两台PCServer优点:架构简单,节省资源缺点...优点:双主热备模式,读写分离,SLAVE集群可线性扩展缺点:读写分离需要在程序端解决,Mast

    基于 gin+gorm+redis+mysql 读写分离的电子商城.zip

    MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用...

    Data guard实施

    其中Active DG是Oracle Database 11g版本提供的全新特性,支持备库在同步的过程当中以只读方式打开,实现了读写分离。物理备库会接收和保存从主库传来的重做数据(Redo Data),采用块介质恢复的方式保持主备库之间...

    Oracle 集成云解决方案事业部:冲上云霄之GoldenGate专题

    对应读写分离的业务,如果在云端和本地的数据同步不及时,会影响一些报表业务的输出结果和决策判断 •没有清晰的方法实现异构环境下数据同步在混合云架构中实现不同存储、不同操作系统和不同类型数据库之间数据同步...

    超强MySQL课程笔记_V4.0.ctb

    读写分离 HA架构 监控审计 压力测试 性能优化 自动化运维 ==数据的存储方式 1. 人工管理阶段 2. 文件系统阶段 3. 数据库系统管理阶段 ==数据库技术构成 1. 数据库系统 DBS A.数据库管理系统(DataBase ...

    MF00639-.NET Core前后端分离快速开发框架.zip

    支持数据库读写分离、分库分表及事务(仅支持单表操作,不支持多表) 全面采用Autofac作为IOC容器,面向接口编程,全面解耦 集成多种工具类库以及操作拓展 数据库:支持SqlServer,PostgreSQL,MySQL,Oracle(框架使用简单...

    Apache ShardingSphere分布式数据库中间层生态圈 v5.3.2 alpha

    目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对MySQL、PostgreSQL、SQLServer、Oracle等SQL与协议的支持,均通过插件的方式织入项目。开发者能够像使用积木一样定制属于自己的

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 copy on write 内联优化 系统优化 cache 延迟计算 数据预读 异步 轮询与通知 内存池 模块化 工程架构能力 开发语言 运维与...

    Rookey.Frame企业级极速开发框架.zip

    (3)在系统中可支持模块分库,可实现读写分离,可方便的将系统数据库与业务数据库分离 (4)模块缓存可配置,支持本地缓存、Memcached分布式缓存和Redis分布式缓存,可扩展其他缓存方式 (5)支持列表视图自定义...

    基于javatcpsocket通信的拆包和装包源码-distributed:分散式

    4、读写分离 5、搜索引擎 6、缓存、限流、降级、分库、表拆分(500w~1000w) 7、解决session跨域 cookie 存sessionid,服务端Tomcat用ConcuurentMap存储 session sticky (请求落在同一个服务器上) session ...

    百度地图开发java源码-IDEAF---DEMO:整合分布式企业级应用框架的综合性DEMO

    百度地图开发java源码 Integration of Distributed ...在本项目中用于实现CRUD的分库分表及读写分离。 #####github: 集成方式:嵌入式 使用依赖:jar包 项目配置文件 mysql ####二. otter: 阿里的数据同

    MySQL20个高性能架构设计原则(值得收藏)

    开源数据库架构设计原则 01. 技术选型 选择成熟的平台和技术,同时是最熟悉的,能做到极致的,用好不用坏,用熟不用生。目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB。 02. 高可用...

    大数据常用数据库汇总.pdf

    从数据库是负责读操作,等等根据业务复杂程度以此类推,将业务在物理层⾯上进⾏了分离,但是这种⽅式依旧存在⼀ 定的负载压⼒的问题,企业数据在不断的扩增中,后⾯就采⽤分库分表的⽅式解决,对读写负载进⾏分离,...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题72:数据库的读写分离.mp4 │ Java面试题73:数据库优化之缓存.mp4 │ Java面试题74:sql语句优化小技巧.mp4 │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ ...

    Apache ShardingSphere分布式数据库中间层生态圈-其他

    目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对MySQL、PostgreSQL、SQLServer、Oracle等SQL与协议的支持,均通过插件的方式织入项目。开发者能够像使用积木一样定制属于自己的独特系统...

    企业后台管理基础框架 hsweb.zip

    访问日志: 记录用户每次操作情况未来:组织架构管理: 地区-机构-部门-职务-人员.工作流管理: activiti工作流,在线配置流程,配合动态表单实现自定义流程.邮件代收: 代收指定邮箱的邮件框架功能全局restful json,前后...

Global site tag (gtag.js) - Google Analytics