很高兴又碰到了图书试读活动,还好这次活动我还能赶在最后一天参加,哈哈,赢取获奖机会应该是很能引起激情的一方面因素,更重要的是能通过阅读这样的书籍来总结自己的工作,开拓还未知晓的知识和技能。
以前我主要从事传统行业的软件开发工作,近2年有机会接触到准电商网站系统的建设,以前所熟悉的内网业务系统架构在面对互联网应用和访问时,居然显得力不从心。在这2年接触的第一个项目时,对网站搭建只满足于多假设几台应用服务器,通过负载均衡设备进行一下配置形成集群服务器,可是这样的架构,在网站运行不到1个月的情况下,几乎天天遇到应用服务响应缓慢甚至彻底中断服务的情况,实话说,要是不了解网站应用的架构,真的是应付不了这样的问题了,后来经历了长达半年的各种折磨,总算对网站架构摸出了些路子,结合作者这本书的内容,我也说说感受。
我是觉得没有哪个网站从一开始就能够是大型网站,也没有哪个网站一上线就能吸引来庞大的用户,高并发访问,形成海量的数据,都经历了从小发展到大的过程。我认为大型网站应用系统应该有这几个特点:
1、用户分布广、网络环境复杂;
2、高并发、流量大;
3、海量的数据存储;
4、安全问题高度集中;
5、变更和发布频繁
我们当时在完善网站系统性能、稳定性、可用性时,依次经历了这样的过程:
1、 初期、使用负载均衡配置应用服务器集群;(后来经不住并发访问,频繁的压死服务);
2、 初期改进,加入了反向代理服务器,进一步增强负载均衡能力,将动静资源分离,并缓存静态资源;(后来还是会遇到压死服务的情况);
3、 初期完善,加入CDN,对全站静态资源进一步进行缓存(这时网站较为稳定了);
4、 中期,因用户对动态资源的访问增加,静态资源缓存作用越发不明显,我们将频繁访问的数据进行了缓存来解决;
5、 中期改进,应用服务此时运行平稳,系统瓶颈出现在了大文件并发下载上,系统总是下载文件失败,这时改变了应用直接访问NAS的方式,引入分布式文件系统,这个过程中的文件数据迁移占据了我们工作的主要内容;
6、 中期完善,将数据库进行分库分表,把读写分开,这时应为初期对应用系统设计时忽略了这点,所以分库时,程序修改较大;
7、 后期,系统运行总算是稳定了,但是遭受到了黑客的攻击,还好,黑客哥哥没有造成太大的破坏,没有篡改系统、应用的数据和信息,这时我们才意识到网站防攻击的脆弱,才逐步建立安全防护机制,引入安全防护设备,一定程度提高了网站的安全防护能力。
以上是我们工作的一个逐步过程,通过看这本书,发现作者描述网站演化的过程,竟然出奇的相似,所以我只能感叹当时做这些工作时,没能及时遇到这本书,走了不少弯路。
本书中,作者描述了网站架构随需求逐渐演化的过程:
单机部署 -> 拆分数据库与应用(各自采用独立的服务器) -> 应用服务器采用集群方式 -> 引用负载均衡设备(session问题) -> 数据库读写分离 -> 引入搜索引擎 -> 引入数据缓存 -> 引入分布式存储系统 -> 数据拆分 -> 应用拆分 -> 服务化
在这个过程中突然想到前几年流行的应用系统SOA架构技术,其实看看大型网站最后的结构,从硬件、应用方面看都像是SOA思想的延伸,我认为在最终形成的架构中,这两几项内容具有一定的难度和复杂度:
1、分布式的session保持机制
关于分布式session保持机制,我们当时只是靠应用中间件自身提供的机制来进行session同步,这个缺点正如作者所说:网络宽带开销大、session有变化就需要在各web服务器之间进行同步,如果session数据大,机器保存session的内存占用会严重
本书中,作者提到了其他三种session保持机制
(1)、粘性session 缺点: 单机故障,会话数据丢失
(2)、session数据集中存储: 缺点:引入了网络操作,存在时延和不稳定性 web服务器大、session数多、这个方案的优势明显
(3)、cookie解决方案: 缺点:cookie有长度限制、安全性、数据中心的整体外部带宽消耗
使用哪种方式,的确需要根据系统的需求来进行确定。
2、分布式数据库的数据同步、数据库读写分离、主库性能的提升
数据复制性存在难度,数据库本身带有复制功能,但是有时延,另外应用对于数据源的选择是一个较为棘手的问题,我们目前只是固定哪些应用能访问哪些数据库。
3、数据拆分
(1)专库专用,数据垂直拆分,不同的表,拆分到不同的库,难点问题多数据源配置,跨业务的事务
(2)数据水平拆分,同一表的数据拆到两个数据库,sql在进行操作时,要能确定访问的数据在哪里
这几个问题作者在试读章节中没有过多的展开,都留在了后续章节,这确实够吊人胃口啦。
从试读章节,我感觉作者的思路很清晰,能引人入胜,对疑难问题都或多或少的提出了解决方案,非常有助于拓展读者思路,我是很期待在后续章节看到关于中间件的使用,对各种难题都采用了什么解决方案。
相关推荐
《Oracle大型数据库系统在AIX/UNIX上的实战详解》编写过程中数度邀请在时代朝阳参加Oracle职业/就业课程的学员试读《Oracle大型数据库系统在AIX/UNIX上的实战详解》,这为《Oracle大型数据库系统在AIX/UNIX上的实战...
以Java语言为载体,通过讨论Java程序设计的一般过程和方法,重点讲述程序设计基础、面向对象程序设计、算法与数据结构、GUI程序设计和Web程序设计的知识,并涉及计算机科学基础、数据和控制、程序设计理论、软件工程...
Java语言程序设计(基础篇)(英文版·第10版)试读版
分布式数据库架构揭秘,原理与实践兼备,极具借鉴意义
《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会...
轻松道破软件性能调优方法论和具体实现路径,全面细致,一本书搞定性能优化
挺不错的一本适合初学者的JAVA书籍,这里只是试读样章
java程序设计大学教程试读+课件.rar
高校退学试读预警机制的探索与实践(全文).docx
《Java程序设计《Java程序设计大学教程》试读版 大学教程》试读版 《Java程序设计大学教程》试读版
这是试读版,只有前两章,不过是原版不是扫描版。我会在我的博客记录我的阅读笔记。
java程序设计大学教程试读+课件!!!java程序设计大学教程试读+课件!!!
资源名称:精通Java并发编程(第2版)【试读】资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
计算机专业必看,特别是考研计算机专业的神器之书 《操作系统概念》第7版是一本...该书内容涵盖了操作系统的基本原理和实践,可以作为操作系统学习、研究以及开发的参考读物,适用于大多数与计算机操作系统相关的领域。
Java程序设计大学教程试读(pdf)+课件(ppt)
《响应式Web设计实践》试读干货,响应式——适应浏览器的不同——Web设计实践
Java程序设计大学教程试读+课件PDF.rar