第二章主要是讲网站的演化过程,即怎么样从一个小网站演化成一个大型网站的架构变化。
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中间件开发实践 - 曾宪杰.mobi 带目录、书签、超清文字版
在构建大型网站系统时,Java中间件扮演着至关重要的角色,它们是系统架构中的关键组件,为高效、可扩展和稳定的运行提供了基础。本实践主要探讨了如何利用Java中间件来构建高性能、高可用性的互联网服务。以下是相关...
【大型网站系统与Java中间件实践读书笔记(二)】 大型网站系统是指处理海量数据、应对高并发访问、以及应对复杂业务逻辑的网络应用。在这些系统中,Java中间件扮演着关键角色,帮助实现系统的扩展性和高效运行。...
《大型网站与Java中间件实践》一书,由阿里巴巴资深工程师曾宪杰倾力撰写,深入探讨了大型网站从初期发展到复杂系统演进的历史,以及在这个过程中中间件的重要角色。书中详细阐述了如何利用各种中间件技术来解决大型...
《大型网站系统与Java中间件开发实践》是一本深度探讨现代互联网系统构建的书籍,尤其针对使用Java技术栈的企业级应用。这本书详细介绍了如何通过合理的架构设计和高效的中间件技术来构建可扩展、高可用、高性能的...
《大型网站系统与java中间件实践》读书笔记ppt分享,纯自己用心编写,同时也给同事做了分享,不过当时很多自己讲的内容没有备注进去
《大型网站系统与Java中间件实践》的第一章主要介绍了分布式系统的基础知识,包括其组成、线程与进程的执行模式、网络通信基础知识以及如何将应用扩展到分布式环境,并探讨了分布式系统中的一些难点。 1.1 初识...
《大型网站系统与JAVA中间件实战》是一本深入探讨如何构建和优化大型互联网应用的书籍。本书主要聚焦于JAVA技术栈在大型网站系统中的实际应用,涵盖了诸多关键技术和中间件,旨在帮助读者理解和掌握构建高性能、高...
标题《大型系统的Java中间件实践-曾宪杰,淘宝》和描述《InfoQ大会上淘宝的Java中间件ppt。非常有用的资料。对于理解分布式系统的架构非常有用。》表明本次分享的主题是关于淘宝在InfoQ大会上的一个关于Java中间件...
《Java中间件实践指南》是一本深度探讨Java技术在大型网站系统中应用的专业书籍。它主要面向那些希望深入了解和掌握Java中间件技术的开发者、架构师以及系统管理员。书中涵盖了一系列核心的Java中间件技术,旨在帮助...
从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识
《JAVA中间件技术及其应用开发》是一门深入探讨Java中间件技术及其实现方法的课程。这门课程的课件涵盖了从基础理论到实践应用的多个方面,旨在帮助学习者全面理解并掌握Java在企业级服务中的核心角色。以下是根据...
《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,...
Java中间件是构建大型分布式应用程序的关键组成部分,它们提供服务、管理资源、处理并发以及实现其他高级功能。在Java开发环境中,正确配置中间件是确保系统性能、稳定性和可扩展性的基础。以下是一些关于"JAVA...
本书《分布式消息中间件实践_倪炜(著)》深入探讨了四种主流的消息队列(Message Queue,MQ)系统:RabbitMQ、ActiveMQ、Kafka以及RocketMQ,旨在帮助读者理解和掌握这些工具的使用方法。 首先,RabbitMQ是一种基于...