试读章节:第2章 大型网站及其架构演进过程
大型网站的特质
海量数据、高并发的访问量、本身业务和系统的复杂度
作者(淘宝技术总监)精炼地诠释了大型网站的特质,很到位
Session共享解决方案
这是分布式系统的第一个坑,作者给出了4种解决方案,听过和做过的区别就是后者可以回忆式地娓娓道来
1. Session Sticky:负载均衡器能够根据每次请求的会话标识来进行请求转发
缺点:
如果有一台 Web 服务器宕机或者重启,那么这台机器上的会话数据会丢失。如果会话中有登录状态数据,那么用户就要重新登录了。
会话标识是应用层的信息,那么负载均衡器要将同一个会话的请求都保存到同一个 Web服务器上的话,就需要进行应用层(第 7 层)的解析,这个开销比第 4 层的交换要大。
负载均衡器变为了一个有状态的节点,要将会话保存到具体 Web 服务器的映射。和无状态的节点相比,内存消耗会更大,容灾方面会更麻烦。
2. Session Replication:Web服务器之间则增加了会话数据的同步
缺点:
同步 Session 数据造成了网络带宽的开销。只要 Session 数据有变化,就需要将数据同步到所有其他机器上,机器数越多,同步带来的网络带宽开销就越大。
每台 Web 服务器都要保存所有的 Session 数据,如果整个集群的 Session 数很多(很多人在同时访问网站)的话,每台机器用于保存 Session 数据的内容占用会很严重。
3. Session 数据集中存储:把 Session 数据集中存储起来,然后不同 Web 服务器从同样的地方来获取 Session
缺点:
读写 Session 数据引入了网络操作,这相对于本机的数据读取来说,问题就在于存在时延和不稳定性,不过我们的通信基本都是发生在内网,问题不大。
如果集中存储 Session 的机器或者集群有问题,就会影响我们的应用。
4. Cookie Based:通过 Cookie 来传递 Session 数据
Cookie 长度的限制。我们知道 Cookie是有长度限制的,而这也会限制 Session 数据的长度。
安全性。Session 数据本来都是服务端数据,而这个方案是让这些服务端数据到了外部网络及客户端,因此存在安全性上的问题。我们可以对写入 Cookie 的 Session 数据做加密,不过对于安全来说,物理上不能接触才是安全的。
带宽消耗。这里指的不是内部 Web 服务器之间的带宽消耗,而是我们数据中心的整体外部带宽的消耗。
性能影响。每次 HTTP请求和响应都带有 Session 数据,对 Web 服务器来说,在同样的处理情况下,响应的结果输出越少,支持的并发请求就会越多。
环节数据读压力
读写分离、索引、缓存,都不陌生,倒要看看此书里是怎个实现
采用数据库作为读库:读写分离、主从复制:主库写、从库读
搜索集群(Search Cluster):一种是按照全量/增量划分,一种是按照实时/非实时划分
全量方式用于第一次建立索引(可能是新建,也可能是重建),而增量方式用于在全量的基础上持续更新索引。当然,增量构建索引的挑战非常大,一般会加入每日的全量作为补充。
这个办法确实不错 应该是不断实践和群体智慧
数据缓存 Key-Value
页面缓存 把渲染与缓存的工作结合在一起
讲到页面缓存,我很疑惑为什么作者没有提到varnish
数据库分离
这项淘宝的人总分享 烂大街了 不过确实是淘宝的法宝
专库专用,数据垂直拆分:把数据库中不同的业务数据拆分到不同的数据库中
不同业务的数据从原来的一个数据库中拆分到了多个数据库中,那么就需要考虑如何处理原来单机中跨业务的事务。一种办法是使用分布式事务,其性能要明显低于之前的单机事务;而另一种办法就是去掉事务或者不去追求强事务支持,则原来在单库中可以使用的表关联的查询也就需要改变实现了。
垂直拆分后的单机遇到瓶颈,数据水平拆分:把同一个表的数据拆到两个数据库中
应用系统需要解决 SQL 路由的问题
主键的处理
一些查询需要从两个数据库中取数据,如果数据量太大而需要分页,就会比较难处理了
又一套淘宝特色的分布式道路
服务化和消息中间件解决分布式系统的通信问题
相关推荐
希望读者通过《大型网站系统与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技术栈解决在开发和运维大型网站过程中遇到的各种挑战,旨在帮助读者理解...