- 消息队列。在书中第一章给出的网站架构图中,提到将用户管理,商品管理等共同的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。大多数网站架构问题都可以通过这个解决。在这个架构中,网站被拆成了许多不同的应用,每个应用独立部署维护,应用之间可以通过消息队列进行数据分发。看到这里,我去查询了消息队列的概念,学到如下:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。消息队列在实际应用中常用于异步处理,应用解耦,流量削锋和消息通讯四个场景。异步处理:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。应用解耦:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。但是假如库存系统无法访问,则订单减库存将失败,从而导致订单失败;所以可以引入应用消息队列,即使在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题.
- 分层分割分布式。网站一般分为三个层次:应用层、服务层和数据层。应用层:负责具体业务和视图展示,服务层,为应用层提供服务支持,数据层,提供数据存储访问服务。分层结构对网站支持高并发向分布式方向发展至关重要,因此在网站规模还很小的时候就应该采用分层的架构。分割是在纵向方面对软件进行切分,将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。分布式应用和服务:应用和服务模块分布式部署,便于业务功能扩展;分布式静态资源:JS、CSS、LOGO图片等资源独立部署,采用独立域名,动静分离;分布式数据和存储:传统RDBMS分布式部署和NoSQL产品;分布式计算:Hadoop及其MapReduce分布式计算框架,其特点是移动计算而不是移动数据。分布式设计要根据具体情况量力而行,切莫为了分布式而分布式。
网站架构有着一些共同的模式,通过学习这些大型网站架构的一般思路和解决方案,可以帮助指导我们的架构设计。