`
春和景明
  • 浏览: 731 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

《大型网站系统与Java中间件实践》读书笔记

阅读更多
  何谓大型网站?作者从海量的数据和非常高并发的访问量的角度做了一个宽泛的定义,而数据量和访问量增长的过程也恰恰是一个网站从小到大的发展过程,大数据,高并发等所带来的技术挑战能击垮一个网站,但能成就一个网站。作者从数据库读写分离,服务器集群等多个角度分析了解决大数据、高并发问题的思路:
   1.数据库与应用分离:把数据库与应用从一台机器分到两台机器。
   技术要点分析:数据库与应用分开了,只需要把应用中JDBC连接数据库的配置从地址本机改到了另外一台机器地址即可,对开发、测试、部署都没有影响,技术难度很小。
   2.服务器集群:引入负载均衡设备。
   技术要点分析:引入负载均衡的技术方案后会有不同服务器之间session共享的问题,这里有四种解决方案,一是Session Sticky 方式,即负载均衡器根据每次请求的会话标识来进行请求转发,让同样 Session 的请求每次都发送到同一个服务器端处理,这有利于针对 Session 进行服务器端本地的缓存。二是Session Replication方式,即让不同服务器之间进行session的同步,这样可以共享相同的session。三是session数据集中存储,将session数据与具体的服务器解耦合,不同的服务器从同一个地方获取session数据。四是Cookie Based 方式,前三个方案都是基于服务器端的,而这个方案则是在浏览器端通过cookie来传递session数据的。这四种方案各有千秋,都有自身的不足之处,使用不同的场景,需灵活应用。
   3.数据库读写分离:增加一个数据库作为读库。
   技术要点分析:增加一个读库之后,会遇到数据复制和数据复制延迟的问题,可以采用Master(主库)+Slave(备库)的结构来进行数据的复制,在数据库层面目前还不能解决数据复制延迟的问题,需用其他方案解决。
   4.缓存:对网站进行数据缓存和页面缓存。
   技术要点分析:一般我们在缓存中放的是“热”数据而不是全部数据,那么填充方式就是通过应用完成的,即应用访问缓存,如果数据不存在,则从数据库读出数据后放入缓存。随着时间的推移,当缓存容量不够需要清除数据时,最近不被访问的数据就被清除了。数据缓存和页面缓存减少了与数据库的交互,有利于减轻数据库的压力。
   5.引入分布式数据库:
   技术要点分析:分布式存储系统通过集群提供了一个高容量、高并发访问、数据冗余容灾的支持。通过分布式文件系统来解决小文件和大文件的存储问题,通过分布式 Key-Value 系统提供高性能的半结构化的支持,通过分布式数据库提供一个支持大数据、高并发的数据库系统。这就是分布式数据库相对关系型数据库的优势。
   6.数据垂直拆分:也就是说把数据库中不同的业务数据拆分到不同的数据库中。
   技术要点分析:主要的技术难点是如何解决跨业务跨不同库的问题事务处理事务处理问题。
   7.数据水平拆分:就是把同一个表的数据拆到两个数据库中。
   技术要点分析:SQL路由、分页、主键
   8.拆分应用:根据业务特性把一个应用系统拆分成多个应用系统。
   技术要点分析:拆分出来的多个应用系统之间如何进行交互是主要的技术难点,可通过消息中间件的方式来解决。
分享到:
评论

相关推荐

    大型网站系统与Java中间件实践读书笔记(二)

    【大型网站系统与Java中间件实践读书笔记(二)】 大型网站系统是指处理海量数据、应对高并发访问、以及应对复杂业务逻辑的网络应用。在这些系统中,Java中间件扮演着关键角色,帮助实现系统的扩展性和高效运行。...

    大型网站系统与Java中间件实践读书笔记(一)

    《大型网站系统与Java中间件实践》的第一章主要介绍了分布式系统的基础知识,包括其组成、线程与进程的执行模式、网络通信基础知识以及如何将应用扩展到分布式环境,并探讨了分布式系统中的一些难点。 1.1 初识...

    《大型网站系统与java中间件实践》读书笔记ppt分享

    《大型网站系统与java中间件实践》读书笔记ppt分享,纯自己用心编写,同时也给同事做了分享,不过当时很多自己讲的内容没有备注进去

    MK笔记.zip

    【MK笔记.zip】是一个压缩包文件,包含了作者的个人学习笔记和相关资源,主要涵盖了编程语言、框架、中间件和算法等多个IT领域的知识点。以下是这些文件所代表的详细内容: 1. **笔记.md**:这可能是一份综合性的...

    MySQLMycat学习笔记.zip

    MySQL Mycat学习笔记主要涵盖了在Linux Ubuntu环境下,如何利用Mycat实现MySQL的主从复制以及读写分离的详细步骤。...通过阅读和实践这些笔记,可以加深对分布式数据库系统管理的理解,提升数据库运维能力。

Global site tag (gtag.js) - Google Analytics