如何设计高性能、高并发、高可用的系统。 (7)

如何设计高性能、高并发、高可用的系统。

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

业务拆分后:每个子系统需要单独的库。

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

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

在分库、分表的基础上,进行读写分离。

相关中间件可参考 Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat。

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

服务化

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

如何设计高性能、高并发、高可用的系统。

消息队列

消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。它是分布式系统的标准配置。

本案例中,消息队列主要应用在购物,配送环节:

用户下单后,写入消息队列,后直接返回客户端。

库存子系统:读取消息队列信息,完成减库存。

配送子系统:读取消息队列信息,进行配送。

如何设计高性能、高并发、高可用的系统。

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

其他架构(技术)

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

架构汇总

如何设计高性能、高并发、高可用的系统。

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfgww.html