UDN-企业互联网技术人气社区

板块导航

浏览  : 1536
回复  : 0

[开发者中心] 大型网站架构系列:电商网站架构案例(3)

[复制链接]
农夫三拳的头像 楼主
发表于 2016-2-25 10:47:43 | 显示全部楼层 |阅读模式
  本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。

  6.5数据库集群(读写分离,分库分表)

  大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。

  读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。

  本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:

820332-20151201062903515-1864482914.png


  (1)业务拆分后:每个子系统需要单独的库;

  (2)如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;

  (3)分库后,如果表中有数据量很大的,则进行分表,一般可以按照Id,时间等进行分表;(高级的用法是一致性Hash)

  (4)在分库,分表的基础上,进行读写分离;

  相关中间件可参考Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基础上,国内很多牛人,号称国内第一开源项目)。

  分库分表后序列的问题,JOIN,事务的问题,会在分库分表主题分享中,介绍。

  6.6服务化

  将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。

820332-20151201062916952-1233076938.png


  6.7消息队列

  消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。

  (1)用户下单后,写入消息队列,后直接返回客户端;

  (2)库存子系统:读取消息队列信息,完成减库存;

  (3)配送子系统:读取消息队列信息,进行配送;

820332-20151201062938155-1893082140.png


  目前使用较多的MQ有ActiveMQ,RabbitMQ,ZeroMQ,MSMQ等,需要根据具体的业务场景进行选择。建议可以研究下RabbitMQ。

  6.8其他架构(技术)

  除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有CDN,反向代理,分布式文件系统,大数据处理等系统。

  此处不详细介绍,大家可以问度娘/Google,有机会的话也可以分享给大家。

  七、架构总结

820332-20151201062949187-431217543.png


  以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。

  以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。

  来源:ITFLY8架构师之家

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部