第二章主要是讲网站的演化过程,即怎么样从一个小网站演化成一个大型网站的架构变化。
1. 大型网站的定义,大数据量和大访问量具备两者才能算大型网站。
2. 演化过程
2.1 单机阶段
一台服务器兼顾了web服务器和数据库服务器
2.2 双机阶段
将数据库服务器跟web服务器拆分,做到分摊负载,这个阶段基本属于web服务负载有多大,数据库服务负载就有多大。
2.3 web服务器集群
当高并发时web服务器明显表现不足,这时候需要将web服务器进行复制,即web服务器集群,通过负载均衡来进行访问的负载平摊,但由此产生session问题,后面详细说明。
2.4 数据库读写分离
当访问量提高时数据库的压力也会变大,一般写入操作少但是写操作带来的锁表对占据主导的读操作影响很大,严重影响网站的吞吐,所以进行数据库的读写分离。读写两库一般使用主从复制进行数据同步,不免有同步延迟发生。
2.5 存储读取的优化方案
为了弥补高并发时读取的延迟,采取各种弥补方案,如:
- 通过搜索引擎建立关键表字段的索引优化站内的各种搜索
- 缓存方案,加快读操作。这里又分数据缓存和页面缓存。数据缓存,顾名思义就是将热数据缓存起来,通过各种过期算法进行数据更新;页面缓存,即将产生的动态页面进行缓存,未命中时通过web服务器生成并渲染页面再将新产生的页面缓存待下次请求使用。
2.6 分布式数据库
为了满足不断加大的负载,采用分布式数据库,优点在于分布式数据库高并发,高容量及数据冗余容灾。大部分分布式数据库都是key-value形式,常见的一些NoSQL库都是具备分布式这种特点。不足之处在于它对事务的支持比较弱,所以适合弱事务情况。
2.7 主库的拆分
纵向拆分,通过业务区分来对库进行拆分,如用户、商品、交易可以分三个库。
横向拆分,单表拆分成同样结构的多个表,每个表涵盖一部分数据。
以上两种可以综合使用,纵向拆分以后再对业务单表进行横向拆分。分库带来的分布式事务、表链接、表键约束等问题。
2.8 web服务器拆分
根据应用进行拆分,缺点在于公用功能代码的维护。
服务化拆分,即分拆服务应用,所有的服务应用成一个分层,提供给web各种服务,服务层再各自请求各自的业务数据库。
2.9 应用间的通信
经常涉及到应用之间的通信,为了解耦应用而提供通信中间件,并且可以异步调用。
2.10 总结
2.1 属于初级阶段;2.2~2.4属于中级阶段;2.5~2.9属于高级阶段;后期阶段开始整体的安全、容灾、收缩扩容等。
3. 外传
3.1 集群后的session问题
先解释下这个问题的由来,当web服务器集群时,通过前端的负载均衡来引导流量到不同的web服务器,由于承接访问的web服务器可能不是同一台机器导致存储在前一次session中的信息在第二次访问时丢失,由此产生session问题。文章中介绍几种解决方案:
- session sticky, 即负载均衡器将访问规则化,同一台机器的多次访问经过负载均衡后都会被引导到同一台web服务器。缺点:单机故障会导致session信息丢失。
- session replication, 即负载均衡器或者其他程序将集群中的所有web服务器的session进行同步,所有的服务器都保持一样的session信息。缺点:大量的同步占用大量网络带宽。
- session集中存储,有别于2),将所有集群的session集中化管理,减少了带宽占用。
- cookie based, 将session信息保存在cookie中进行传输。缺点:安全性和存储信息量有限。
相关推荐
希望读者通过《大型网站系统与Java中间件实践》可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。对于有一定网站开发、设计经验,并想了解大型网站架构和...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站技术架构:核心原理与案例分析》与《大型网站系统与JAVA中间件实践》这两本书是深入探讨现代互联网企业级应用开发的关键资源。它们涵盖了构建和优化大规模网站所需的诸多核心技术,包括分布式系统、Java...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...
《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型互联网系统的书籍,主要聚焦于Java技术栈和中间件的实践应用。通过阅读这本书,我们可以了解到一系列关键的技术概念和最佳实践,这些对于任何想要...
《大型网站系统与JAVA中间件实践》,pdf扫描版,非常清晰(几乎和文字版一样)。已经切边(去除四周的空白处),适合在kindle上阅读。竖屏可以,横屏更好(字号变大)。 书籍介绍: 《大型网站系统与Java中间件实践...
大型网站系统与JAVA中间件实践-高清完整版,大型网站系统与JAVA中间件实践-高清完整版。
### 大型网站系统与Java中间件实践 #### 一、大型网站系统概述 大型网站系统是指能够处理海量用户访问、高并发请求以及大规模数据存储的互联网应用系统。这类系统通常具备以下特点: 1. **高并发性**:能够同时...
《大型网站系统与JAVA中间件实践》是一本深入探讨如何在大规模互联网环境中运用JAVA技术的专著。本书针对JAVA中间件在构建复杂、高可用、高性能的大型网站系统中的应用进行了详尽阐述,旨在帮助读者理解和掌握JAVA在...
《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型网站系统的专业书籍,特别适合高级工程师阅读。本书全面涵盖了Java中间件技术在构建高性能、高可用性、可扩展性的大型网站中的应用。Java中间件是...
《大型网站系统与JAVA中间件实践》是曾宪杰撰写的一本深入探讨Java中间件在构建大规模网站系统中的应用的著作。这本书详细介绍了如何利用Java技术栈解决在开发和运维大型网站过程中遇到的各种挑战,旨在帮助读者理解...