类似淘宝这样的大型网站,需要涉及到如下架构设计技术,文章末尾有所有相关技术的资料~
1.业务拆分
应用程序拆分,拆分后如何通讯、拆分步骤、拆分的原则等。
比如我以淘宝为例:根据业务属性进行垂直切分,划分为商品,订单系统、用户系统、购物车系统,支付系统,评论系统,客服系统等,系统拆分后会涉及到消息通讯机制,以及以下的集群部署。
2.应用集群部署(分布式部署,集群部署和负载均衡)
分布式部署:将业务拆分后的应用单独部署,应用直接通过类似Dubbo远程通信;
集群部署:电商网站的高可用要求,每个应用至少部署N台服务器进行集群部署;
负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。
3.分布式中间件技术
分布式缓存:Redis为代表的,以及TFS、GFS、HDFS为代表的分布式文件存储等。
4.单点登录(分布式Session)
系统分割为多个子系统,独立部署后,不可避免的会遇到会话管理的问题。一般可采用Session同步,Cookies,分布式Session方式,大型网站一般采用分布式Session实现。
5.数据库集群(垂直拆分、读写分离,分库分表)
数据库的数据量过大之后,需要按照业务为单位进行数据库垂直拆分。淘宝为例,拆分为商品库、订单库、用户数据库等多个业务数据库。
除了垂直拆分,还需要结合分库分表、读写分离结合来降低数据库压力。
6.微服务(Dubbo)
微服务可选择的有Dubbo,以及SpringCloud,需要比较他们的优劣势,和对应的业务适合场景。
7.消息队列(Kafka等)
在高并发场景下,消息队列以异步的方式大大降低了同步数据获取的压力,典型的双11秒杀等都会大量结合消息队列使用。
8.监控和安全
高并发的场景还会涉及到服务器的核心指标监控以及及时报警设置。
除了以上内容,还会涉及到分布式小文件存储、Web前端性能优化、搜索引擎、NoSQL选型、安全与容灾等等,这样才能完整的设计出一套高并发架构系统,以下是上面讲到的完整的相关架构设计详解资料。
最全的大型网站架构设计详解资料