大型网站的设计目的在平时的开发过程中,对于项目结构的设计,需要注意:长期必须划分:最初的MVC是将系统拆解成M(model)、V(view)、C(controller),通过不同的包名来区分和分层。分层也是最常见的架构模式。不管用什么语言开发,都会面临分层。一种无处不在的模式。而且分层也便于代码解耦和合理分配工作。在我们的项目中,我们将使用Maven来聚合和分层项目。集群:集群是一种高可用和负载均衡的手段。多个服务器节点部署同一个应用组成集群,在保证负载均衡的同时提高系统的可用性和相互容灾。CDN:我们之前也说过,大型网站的用户群分散在全国各地,所以一旦网站做大了,就会用到CDN。这样,无论用户身在何处,都可以访问最近的服务节点,从而不会因为距离远而减慢用户请求速度。分布式系统:一个大型网站必然是一个由多个系统、多个模块、多个中间件、多个服务器协调集成的整体。在分布式领域,我们会接触到分布式架构、分布式文件系统、分布式锁、分布式事务、分布式配置、分布式限流、日志收集等等。异步:异步是最常见的优化用户体验的方式。前端可以使用Ajax异步调用来减少页面刷新;后端采用生产者和消费者模式,将代码解耦,从而使用消息队列。常见的消息队列有:RabbitMQ、RocketMQ、ActiveMQ、Kafka等,合理使用消息队列可以降低高并发时的流量峰值,达到自我保护的目的。业务分离:一个大网站会有很多业务,比如用户、订单、商品、支付等等,那么这些模块可以合理分离,独立出一个子系统或者子服务,由专门的团队负责。会在微服务阶段进行讲解。数据备份:在大型网站多服务器运维的情况下,节点宕机是很常见的。一旦宕机,我们要做的就是备份数据,不能因为宕机而丢失数据。所以要定期对数据库做冷热备份,做主从,从而达到系统的高可用(一般运维工程师会帮我们做)。学习充电绝对干货
