`
lirig
  • 浏览: 237502 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

大型电子商务网站架构之--分布式可扩展数据库架构

阅读更多


 

近几年分布式成为热门的话题,也成为大型系统必备良药,而在数据库方面应用更加广泛。通过采用普通廉价的设备构建出高可用性和高扩展的集群目的。从而摆脱了大型设备的依赖,一个好的分布式数据库架构可以比较方便达到高可用性有可以达到向外扩展的能力。传统的数据库系统一般是通过高端设备,例如小型机或者高端存储来保证数据库完整性,或者通过增加内存cpu来提高数据库处理能力。这种集中式的的的数据库架构越来越不适合海里数据库处理,而且也得付出高额的费用。分布式的架构也就成了商家探索的技术。

 

数据库集群


 

oracle集群

Oracle RAC是业界最流行的产品。其架构的最大特点是共享存储架构(Shared-disk),整个RAC集群是建立在一个共享的存储设备之上的,节点之间采用 高速网络互连。在 Oracle RAC 环境中,每个 Oracle 数据块都被赋予一个(且只有一个)“主”Oracle RAC 节点。该 Oracle RAC 节点的全局缓存服务 (GCS) 负责管理对这些数据块集的访问。当其中一个 Oracle 节点需要访问某个 Oracle 数据块时,它必须首先与该数据块协商。然后,该主节点的 GCS 或者指示请求的 Oracle 节点从磁盘中获取该数据块,或者指示该Oracle 数据块的当前持有者将被请求的数据块发送到请求节点。Oracle 尝试跨所有 RAC 节点统一分发该数据块的所有权。在 Oracle RAC 环境中,数据块大致相等的所有节点都将被指定为主节点。(如果 Oracle RAC 节点数是 Oracle 数据块数的约数,则所有 RAC 节点都是具有同样数量的数据块的主节点。)



 

mysql集群

MySQL clusterOracle RAC完全不同,它采用Shared-nothing架构。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster主要利用了NDB存储引擎来实现,NDB存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造成数据丢失。

MySQL cluster的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP应用。但是它的问题在于:1.NDB存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前NDB新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。2.目前的MySQL cluster的性能还不理想,因为数据是按照主键hash分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上,对节点间的网络要求很高。

 

分布式数据库拆分


 

数据库分片

Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。

  • 把热度高的数据划分开来,使用配置刚好的硬件,提高访问速度,增强用户体验
  •  把不同的用户的数据根据用户的id放到不同的数据库中,不同用户对应的交易数据也跟着到不同的数据库;之后可以把交易完成和正在交易的数据库分开。
  • 一个全国经济信息系统,可以按照不同地区把不同数据放到不同数据库中,随着时间增加数据也会越来越大,到时还可以工具年份在重新划分数据库。
  • 一个大中型的电子商的电子商务网站一定会遇到数据量巨大的问题,可以根据用户对象或者使用和被使用的数据进行分片。这样避免了在一个库中数据膨胀而带来的瓶颈。
  • 在数据库分片时最好分到不同的服务器中,或者不同的存储中,避免磁盘竞争 

数据库分片存在比较大问题就是人查询或者统计涉及到跨库就比较麻烦。特别是join时如果涉及到多个节点,将非常困难,应该尽量避免。



 

数据库水平分片

 

读写分离

读写分离架构利用了数据库的复制技术,将读和写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。

读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。Quest SharePlex就是比较牛的同步数据工具,听说比oracle本身的流复制还好,mysql也有自己的同步数据技术。mysql只要是通过二进制日志来复制数据。通过日志在从数据库重复主数据库的操作达到复制数据目的。这个复制比较好的就是通过异步方法,把数据同步到从数据库。

主数据库同步到从数据库后,从数据库一般由多台数据库组成这样才能达到减轻压力的目的。读的操作怎么样分配到从数据库上?应该根据服务器的压力把读的操作分配到服务器,而不是简单的随机分配。mysql提供了MySQL-Proxy实现读写分离操作。不过MySQL-Proxy好像很久不更新了。oracle可以通过F5有效分配读从数据库的压力。
  
上面说的数据库同步复制,都是在从同一种数据库中,如果我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像现在市面还没有这个工具吧。那样应该怎么实现数据同步?其实我们可以考虑自己开发一套同步数据组件,通过消息,实现异步复制数据。其实这个实现起来要考虑很多方面问题,高并发的问题,失败记录等。其实这种方法也可以同步数据到memcache中。听说oracleStream也能实现,不过没有试过。

 



 

上图是ebay读写分离的结构图,通过Share Plex 近乎实时的复制数据到其他数据库节点,再通过F5特定的模块检查数据库状态,并进行负载均衡,IO 成功的做到了分布,读写分离,而且极大的提高了可用性。目前读写分离技术比较多,比较有名的为amoeba,有兴趣的同学可以研究下。

 

数据库缓存

读写分离现在应用非常广泛,特别是时国内外大型网站,都使用的非常多,很多都是自己研发缓存系统,淘宝还开源了Tair系统,有兴趣的可以研究下。比较有名的是memcached使用memcached最好的可能算facebook了。通过memcached分担读的操作,把常用的对象数据存储到memcached中,当有读操作过来时先访问memcached如果memcached没有该数据再从数据库获取,同时把数据放到memcached中,下次访问就可以直接访问memcached了。



 

有一次在和一个朋友聊天时他们正在着手在线文档系统架构设计,由于文档访问压力非常大,每次请求数据库也非常大,由于大量的的文档数据在服务端和客户端传输,会经常造成网络堵塞。我建议他可以把文档分片,减少一次性大文件传输。再根据文档热度把一些文档保持到缓存中。其实文档也好,数据库也好,很多方法只要根据业务要求也可以达到异曲同工的之效。

 

下一篇文档:大型电子商务网站架构之-前端优化

  • 大小: 18.8 KB
  • 大小: 18.6 KB
  • 大小: 21 KB
  • 大小: 28.4 KB
14
1
分享到:
评论
7 楼 lirig 2011-03-14  
stormhzy 写道
  从架构的角度来说,作者写得很不错。但作者对数据库(DBA)的管理应该不是太熟悉,引用作者的一句话“如果我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像现在市面还没有这个工具吧。”

  实际上ORACLE已经收购了GoldenGate等其他工具,来实现不同种类数据库之间的同步技术,而且借助第三方工具,比如RoseHa等也可以实现类似的高可用方案。

  至于MYSQL集群NDB存储引擎,在实际生产环境中实用性和可靠性并不理想,不能成功的实现数据的高可用方案。MYSQL的优势特点还是在于 可以修改它自身的源码,结合到自己的业务中,腾讯在这个案例上是十分成功。

  数据分片的技术确实现在在海量数据存储里广泛使用,这个主要是根据企业自身业务特点来定制的,比如按照数据的时效性,半年或者几个月前数据进行分割存储,让后在企业硬件资源的分配上有一定程度的倾斜,最近的数据享有最高优先级的硬件资源。

  除了上述时效性数据的这种分片,还有类似腾讯QQ这呢对用户的QQ号码进行求模mod(),或者是一个具体的算法来进行分片,这种分片技术也须与企业自身的业务特点相契合。
  
   最后作者介绍的两个案例分析,还是具备一定的参考性。

   希望作者以后能写些数据高可用性、数据优化类的专题文章,具体到实现的技术和机制,并结合一些案例。这样显得不会太空洞。

  总得来说,写得非常不错。以后大家一起多交流~~

oracle收购了mysql现在一切都有可能啦
6 楼 stormhzy 2011-03-14  
  从架构的角度来说,作者写得很不错。但作者对数据库(DBA)的管理应该不是太熟悉,引用作者的一句话“如果我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像现在市面还没有这个工具吧。”

  实际上ORACLE已经收购了GoldenGate等其他工具,来实现不同种类数据库之间的同步技术,而且借助第三方工具,比如RoseHa等也可以实现类似的高可用方案。

  至于MYSQL集群NDB存储引擎,在实际生产环境中实用性和可靠性并不理想,不能成功的实现数据的高可用方案。MYSQL的优势特点还是在于 可以修改它自身的源码,结合到自己的业务中,腾讯在这个案例上是十分成功。

  数据分片的技术确实现在在海量数据存储里广泛使用,这个主要是根据企业自身业务特点来定制的,比如按照数据的时效性,半年或者几个月前数据进行分割存储,让后在企业硬件资源的分配上有一定程度的倾斜,最近的数据享有最高优先级的硬件资源。

  除了上述时效性数据的这种分片,还有类似腾讯QQ这呢对用户的QQ号码进行求模mod(),或者是一个具体的算法来进行分片,这种分片技术也须与企业自身的业务特点相契合。
  
   最后作者介绍的两个案例分析,还是具备一定的参考性。

   希望作者以后能写些数据高可用性、数据优化类的专题文章,具体到实现的技术和机制,并结合一些案例。这样显得不会太空洞。

  总得来说,写得非常不错。以后大家一起多交流~~
5 楼 lirig 2010-07-26  
star022 写道
lirig 写道
star022 写道
分布式数据库拆分

不错的文章,有一行乱码了,全部是问号,能不能修正下?~

你好,哪里有乱码,请具体指出,我再修正,谢谢。



就是  fslx2008  指出的,你搜索下“到时还可以工具年份在重新划分数据库”,
定位之后的下一行全部是问号,复制到UE里面才能看到内容:
·   一个大中型的电子商的电子商务网站一定会遇到数据量巨大的问题,可以根据用户对象或者使用和被使用的数据进行分片。这样避免了在一个库中数据膨胀而带来的瓶颈。

没有乱码了,我是用google浏览器就没有这个问题,用ie才发现。
4 楼 star022 2010-07-26  
lirig 写道
star022 写道
分布式数据库拆分

不错的文章,有一行乱码了,全部是问号,能不能修正下?~

你好,哪里有乱码,请具体指出,我再修正,谢谢。



就是  fslx2008  指出的,你搜索下“到时还可以工具年份在重新划分数据库”,
定位之后的下一行全部是问号,复制到UE里面才能看到内容:
·   一个大中型的电子商的电子商务网站一定会遇到数据量巨大的问题,可以根据用户对象或者使用和被使用的数据进行分片。这样避免了在一个库中数据膨胀而带来的瓶颈。
3 楼 fslx2008 2010-07-26  
一个全国经济信息系统,可以按照不同地区把不同数据放到不同数据库中,随着时间增加数据也会越来越大,到时还可以工具年份在重新划分数据库。

(·   一个大中型的电子商的电子商务网站一定会遇到数据量巨大的问题,可以根据用户对象或者使用和被使用的数据进行分片。这样避免了在一个库中数据膨胀而带来的瓶颈。)

·   在数据库分片时最好分到不同的服务器中,或者不同的存储中,避免磁盘竞争。

用括号括起来的那些看着都是问号,只是复制到编辑器看的时候就正常了,奇怪。
2 楼 lirig 2010-07-26  
star022 写道
分布式数据库拆分

不错的文章,有一行乱码了,全部是问号,能不能修正下?~

你好,哪里有乱码,请具体指出,我再修正,谢谢。
1 楼 star022 2010-07-26  
分布式数据库拆分

不错的文章,有一行乱码了,全部是问号,能不能修正下?~

相关推荐

    大型电子商务网站架构之 分布式可扩展数据库架构.doc

    分布式可扩展数据库架构在大型电子商务网站中扮演着至关重要的角色,因为随着业务的增长,单一的数据库系统往往无法满足高并发、大数据量的处理需求。分布式数据库架构通过将数据分散存储在多个节点上,实现了系统的...

    浅谈分布式数据库架构.pdf

    分布式数据库架构的优点在于其高度的可扩展性、可用性和容错性。通过将数据分布在多个物理节点上,各个节点之间相互协作,不仅可以提高数据处理的效率,还能在一定程度上防止系统单点故障。这种架构特别适用于大规模...

    分布式数据库架构及企业实践

    在企业实践中,分布式数据库常用于电子商务、社交网络、金融服务等对数据实时性、高并发处理要求高的场景。 Mycat是一款开源的分布式数据库中间件,它实现了SQL路由、分片、读写分离、数据一致性等功能。Mycat的...

    2021-07-28-.NET 6 秒杀项目---分布式锁落地实战.zip

    4. 微服务架构:了解如何设计和实施微服务,将秒杀系统拆分为订单服务、电子商务网站和秒杀服务等多个独立组件,提高系统的可扩展性和容错性。 5. 图形化表示:学习如何通过图表清晰地展示系统架构和工作流程,提高...

    分布式数据库

    - **更好的开放性和可扩展性**:分布式系统能更好地适应不同领域的需求,使用不同的数据库技术,提高性能/价格比。 - **增强的灵活性**:能够灵活应对变化,如添加新的节点或调整数据分布。 #### 挑战: - **复杂...

    2021分布式数据库技术系列概览.pdf

    - 分布式数据库架构:包括CAP理论、 BASE模型、以及不同类型的分布式数据库架构设计,比如主从复制、多主复制、分片架构、去中心化架构等。 - 数据一致性模型:在分布式系统中,如何通过强一致性、最终一致性等模型...

    分布式数据库课程设计报告.pdf

    在国外,分布式数据库技术已广泛应用于金融、电信、电子商务等领域,许多大型企业如Google、Amazon等都拥有成熟的分布式数据库解决方案。在国内,随着云计算和大数据的发展,分布式数据库也逐渐成为研究热点,不少...

    分布式系统概念与设计(第五版)课后题答案

    - 分布式系统的特性:透明性、高可用性、容错性、可扩展性和性能优化。 - 比较集中式和分布式系统的优缺点。 2. **第二章:网络基础** - OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层和...

    Java-大型电商分布式系统.zip

    分布式系统是为了处理海量数据和提供高可用性、可扩展性的解决方案,尤其在电子商务领域,这样的需求更为迫切。以下是对这个主题的详细阐述: 1. **微服务架构**:大型电商系统通常采用微服务架构,将业务功能拆分...

    王宝:构建可扩展分布式数据库平台_终版

    本文将深入探讨王宝在2010年提出的关于构建可扩展分布式数据库平台的经典教程,分析中国制造网数据库架构的演变过程以及可扩展性分布式架构的具体实践,旨在为企业提供一套实用的分布式数据库建设方案。 ### 一、...

    分布式数据库系统及其应用课件

    分布式数据库的应用广泛,包括大规模的互联网服务(如搜索引擎、电子商务平台)、物联网(IoT)、大数据分析、金融交易系统等。例如,在搜索引擎中,分布式数据库能够快速处理海量的网页索引和查询请求;在金融交易...

    Java-SpringBoot的分布式架构网上购物商城系统毕业设计源码(源代码+论文)

    在当今的互联网时代,电子商务网站面临着海量数据和高并发访问的挑战,传统的单体架构已无法满足这些需求。因此,分布式架构应运而生,成为了现代商城系统的核心技术之一。Java SpringBoot因其轻量级、便捷的特性,...

    阿里巴巴服务搜索框架、架构设计实践和分布式数据库服务实践.zip

    阿里巴巴作为全球知名的电子商务巨头,其在IT架构设计和数据库服务方面积累了丰富的实践经验,尤其是在面对双十一等大规模并发场景时,其技术解决方案具有极高的参考价值。本文将深入探讨阿里巴巴的服务搜索框架、...

    电子商务之基于分布式数据库的关联规则挖掘.pdf

    【电子商务之基于分布式数据库的关联规则挖掘】 在电子商务领域,数据挖掘是一项至关重要的技术,它能够帮助企业识别消费者的购买行为,发现潜在的消费模式和趋势,从而优化服务质量和提高客户满意度,提升商品销售...

    java毕业设计&课设-高并发分布式淘淘商城(视频+源码+资料).doc

    2. **分布式架构**:采用微服务架构模式,将系统划分为多个独立的服务单元,每个服务可独立部署、扩展,提高整体系统的灵活性和可维护性。 3. **安全性设计**:对用户密码进行加密存储,使用HTTPS协议保护数据传输...

    电子商务平台架构

    【电子商务平台架构】是构建在线商业活动的基础,它涉及到一系列技术和设计原则,旨在提供稳定、高效、可扩展的网络交易平台。琪缘科技网络有限公司凭借其丰富的实战经验,为电子商务领域提供了成熟的产品和服务。 ...

    分布式数据库系统及其应用

    分布式数据库系统是现代大型互联网应用的核心技术之一,它在处理海量数据、提高系统可用性和扩展性方面发挥着关键作用。本篇文章将深入探讨分布式数据库系统的概念、架构、工作原理及其在实际应用中的重要性。 首先...

    分布式数据库及其应用

    分布式数据库是一种将数据分散存储在多个物理位置的数据库系统,这种设计旨在提高系统的可扩展性、可用性和性能。本文将深入探讨分布式数据库的基础知识、结构和应用。 分布式数据库的核心概念在于“分布”,它将...

    分布式数据库管理-第1篇.pptx

    - **目标**: 实现数据的透明访问和共享,提高系统的高可用性、可扩展性和容错性。 **1.2 主要挑战** - **数据一致性**: 确保不同节点上的数据副本保持一致。 - **数据分片**: 将数据合理地划分为多个子集,并存储...

    分布式集群系统架构设计及应用部署.pdf

    分布式集群系统架构设计及应用部署 分布式集群系统架构设计及应用部署是指在高...分布式集群系统架构设计及应用部署是解决高并发访问量和海量数据问题的有效解决方案,对于电子商务类网站的开发和部署具有重要的意义。

Global site tag (gtag.js) - Google Analytics