大型网站架构系列:电商网站架构案例(3)

大型网站架构系列:电商网站架构案例(3)

 本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。数据库

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

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

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

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

 

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

(2)       若是单独的库太大,能够根据业务特性,进行再次分库,好比商品分类库,产品库;分布式

(3)       分库后,若是表中有数据量很大的,则进行分表,通常能够按照Id,时间等进行分表;(高级的用法是一致性Hash)性能

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

 

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

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

6.6服务化

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

        

6.7消息队列

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

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

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

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

 

目前使用较多的MQ有Active MQ,Rabbit MQ,Zero MQ,MS MQ等,须要根据具体的业务场景进行选择。建议能够研究下Rabbit MQ。

6.8其余架构(技术)

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

此处不详细介绍,你们能够问度娘/Google,有机会的话也能够分享给你们。

7、架构总结

 

以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有不少能够优化和细化的地方,由于是案例分享,主要针对重要部分作了介绍,工做中须要你们根据具体的业务场景进行架构设计。 

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

关于负载均衡,业务拆分,集群架构,读写分离,分库分表,服务化,消息队列等经常使用技术和架构实现,本博客将会推出系列文章,进行介绍。欢迎小伙伴们围观。

相关文章
相关标签/搜索