大型网站架构设计与分析案例汇总PPT(共44页)
《网站架构设计课程讲义(全套课件)》
3 反馈与改进
定期进行学习反馈和评估,以便及时改进教学质量。
教学资源
设计工具
介绍一些常用的网站架构设计工 具和资源。
参考书籍
推荐一些深入学习网站架构设计 的优秀书籍。
在线课程
提供一些优质的在线网站架构设 计课程资源。
结业考试
在课程结束时,我们将进行结业考试以评估学员对网站架构设计的掌握程度。 考试将询问与课程相关的理论和实践问题。
网站架构设计课程讲义 (全套课件)
欢迎来到网站架构设计课程讲义!在本课程中,您将学习到网站架构设计的 关键概念和技术,为您的网站打下坚实的基础。
课程介绍
在本节课中,我们将介绍网站架构设计的重要性和应用领域,并探讨其对网 站性能和用户体验的影响。
课程目标
1 理解网站架构设计的基 2 掌握常见的网站架构设
1第一章:网站架构基础 Nhomakorabea探索网站架构的基本概念和原则。
第二章:性能优化
2
学习各种优化技术和策略,提升网站的
性能。
3
第三章:安全性设计
探讨如何设计安全可靠的网站架构以应 对安全挑战。
学习方法与策略
1 理论与实践相结合
通过理论知识和实际案例相 结合的方式进行教学。
2 小组讨论与演练
通过小组讨论和实践演练加 深学习效果。
本原理和概念。
计模式和技术。
3 能够应用网站架构设计原则优化现有的网站。
课程内容概述
网站架构介绍
了解网站架构的基本概念和组成部分。
网站安全性设计
探讨如何设计安全可靠的网站架构。
网站性能优化
学习如何通过优化网站架构提升网站的性能。
网站扩展性设计
了解如何设计可扩展的网站架构,以适应未来的 需求。
大型网站架构方案分析与总结
大型网站架构方案分析与总结大型网站架构只包含高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类与一些依靠HTML静态化就能够实现的架构了,我们以高负载高数据交换高数据流淌性的网站为例,比如海内,开心网等类似的web2.0系列架构。
我们这里不讨论是PHP还是JSP或者者.NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是务必要面对的。
这里讨论一下大型网站需要注意与考虑的问题。
1、海量数据的处理众所周知,关于一些相对小的站点来说,数据量并不是很大,select与update就能够解决我们面对的问题,本身负载量不是很大,最多再加几个索引就能够搞定。
关于大型网站,每天的数据量可能就上百万,假如一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的。
在这个时候我们关于一个表的select与update的时候(还不说多表联合查询)的成本的非常高的。
2、数据并发的处理在一些时候,2.0的CTO都有个尚方宝剑,就是缓存。
关于缓存,在高并发高处理的时候也是个大问题。
在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,假如两个或者者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。
这个时候,就需要一个好的数据并发处理策略与缓存策略。
另外,就是数据库的死锁问题,也许平常我们感受不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题。
3、文件存贮的问题关于一些支持文件上传的2.0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储同时被有效的索引。
常见的方案是对文件按照日期与类型进行存贮。
但是当文件量是海量的数据的情况下,假如一块硬盘存贮了500个G的琐碎文件,那么保护的时候与使用的时候磁盘的Io就是一个巨大的问题,哪怕你的带宽足够,但是你的磁盘也未必响应过来。
网站架构分析与优化35页PPT
41、俯仰终宇宙,不乐复何如。 42、夏日长抱饥,寒夜无被眠。 43、不戚戚于贫贱,不汲汲于富贵。 44、欲言无予和,挥杯劝孤影。 45、盛年不重来,一日难再晨。及时 当勉励 ,岁月 不待人 。
▪
26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭
▪
27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰
▪
28、知之者不如好之者,好之者不如乐之者。——孔子
▪
29、勇猛、大胆0、意志是一个强壮的盲人,倚靠在明眼的跛子肩上。——叔本华
谢谢!
35
Web网站架构设计与部署.ppt
• 14、Thank you very much for taking me with you on that splendid outing to London. It was the first time that I had seen the Tower or any of the other famous sights. If I'd gone alone, I couldn't have seen nearly as much, because I wouldn't have known my way about.
高可用性:网站停止服务时间降到最低 可扩展性:系统具备良好的伸缩能力 可视性:网站处于实时的监控之下 高性能:可以满足当前负载要求 高可靠性:合理的体系结构及备份策略 安全性:结构上安全及主机的安全策略
Web网站架构设计与部署
网站架构设计与部署的原则与方法
(一)按需设计,具有前瞻性,及时调整。
网站的开发也是软件开发,所以要针对 网站建设的需求进行网站架构设计。
Software Architectures(架构风格与基于网络的软件架构设计)[D].2005,USA.
Microsoft Windows Server 2003白皮书[M], 微软公司, 2003. 微软MVP-张逸Blog. /wayfarer/
Web网站架构设计与部署
网站架构设计与部署的原则与方法
Serv-U FTP Server与CuteFTP
Web网站架构设计与部署
网站架构设计与部署的原则与方法
pcAnywhere远程控制软件
Web网站架构设计与部署
网站架构设计与部署的原则与方法
VS 2005/2008与网站部署
大型网站架构设计与分析案例汇总PPT(共44页)
大型网站开发时的几点建议
• 数据库技术—集群和库表散列 对于大型网站而言,使用大型的数据库服务器是必须的事情。 但是,在面对大量访 问的时候,数据库的瓶颈仍然会显现出来, 这时一台数据库将很快无法满足应用,于是我们需要借助于数 据库集群或者库表散列技术。
在数据库集群方面,很多数据库厂商都有自己的解决方 案,Oracle、Sybase、SQLServer等都有很好的方案,(MySQL
• 比较好的策略:分析系统在应付如此大访问量下的瓶颈所在。 • 如果确实需要业务组件,多台机器组成的分布式EJB系统可能更适合这样的
系统:ATM机需要很长的Session存活期,Spring对Session的管理是 默认一 次调用会开启一个session,调用结束时关闭,如果保持一个Session一直不 断Open,又占用内存,一分钟内如果非常多的ATM客户端接过来,对内存消 耗太大。EJB的Stateful对Session可以在规定内存内进行管理。 • 如果系统没有数据库,只是一个broker,转接者,使用JMS比多线程强,不 宜用多线程。
MySpace
• 第一代架构:添置更多的Web服务器
• MySpace最初的系统很小,只有两台Web服务器(分担处理用户 请求的工作量)和一个数据库服务器(所有数据都存储在这一 个地方)。那时使用的是Dell双CPU、4G内存的系统。在早期阶 段,MySpace基本是通过添置更多Web服务器来对付用户暴增问 题的。但到在2004年早期,在MySpace用户数增长到五十万后, 其数据库服务器已经开始疲于奔命了。
系统架构图课件
总结词:小型、独立、自主
THANKS
感谢观看
系统架构图为开发人员提供明确的开发指导,确保按照设计进行编码和模块集成。
代码审查
通过系统架构图,可以更好地理解代码结构和逻辑,提高代码审查的效率和准确性。
部署配置
系统架构图有助于指导部署人员合理配置硬件和软件环境,确保系统正常运行。
01
问题定位
当系统出现问题时,系统架构图有助于快速定位问题所在模块和组件。
系统架构图案例分析
06
CATALOGUE
总结词:复杂、全面、大型系统
总结词:模块化、可扩展、高可用性详细描述:分布式系统架构图用于描述由多个独立节点组成的系统,这些节点通过网络进行通信和协作。这种架构图强调模块化设计和高可用性,通常用于构建可扩展、可靠的大型系统。图表特点:分布式系统架构图通常采用节点和边的形式,每个节点代表一个独立的计算实体或服务,节点之间的边表示它们之间的通信关系。图表中会使用不同的图形符号来表示不同类型的节点和通信方式。适用场景:分布式系统架构图适用于构建高可用性、可扩展的大型软件和系统,特别是在需要将系统划分为独立节点以实现负载均衡和容错的情况下。
确定图例和标注
为架构图中的元素和线条制定统一的图例和标注规范,确保读者能够准确理解图中的含义。
开始绘制
根据设计好的布局和元素,逐步绘制系统架构图。
添加注释和说明
在架构图中添加必要的注释和说明,以帮助读者更好地理解图的含义和各个组件的功能。
选择绘图工具
根据个人习惯和团队要求,选择适当的绘图工具,如Visio、Draw.io、Axure等。
作用
定义
类型
模块结构图、分层架构图、流程图、网络拓扑图等。
表示方法
大型电商网站架构设计
大型电商网站架构设计从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。
除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。
根据实际需要,进行改造,扩展,支持千万PV,是没问题的。
1.电商案例的原因2.电商网站需求3.网站初级架构4.系统容量估算5.网站架构分析6.网站架构优化7.架构总结电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。
分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。
大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。
电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。
因此,我们采用电商网站作为案例,进行分析。
客户需求:•建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;•用户购买时可以在线与客服沟通;•用户收到商品后,可以给商品打分,评价;•目前有成熟的进销存系统;需要与网站对接;•希望能够支持3~5年,业务的发展;•预计3~5年用户数达到1000万;•定期举办双11,双12,三八男人节等活动;•其他的功能参考京东或国美在线等网站。
客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。
好在提供了明确的参考网站。
因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。
需求功能矩阵需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。
这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。
本电商网站的需求矩阵如下:以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。
大型平台技术架构与设计规范
标准化组织与标准体系
国际标准化组织(ISO) 行业标准化组织(如IEEE、ITU等) 企业标准化组织(如华为、腾讯等) 标准体系的建设与完善对于大型平台的重要性
06
大型平台技术架构发展趋势与挑战
云计算与大数据技术融合趋势
云计算与大数据技术的融合背景
云计算与大数据技术融合的发展 趋势
添加标题
添加标题
展望未来大型平台技术架构的发展趋势和挑战
云计算和大数据技术的进 一步发展将推动大型平台 技术架构的变革
人工智能和机器学习将在 大型平台技术架构中发挥 越来越重要的作用
区块链技术将为大型平台 技术架构提供更加安全、 可靠的技术支持
未来大型平台技术架构将 更加注重智能化、自动化 和高效化的发展
未来大型平台技术架构将 面临更多的安全和隐私挑 战,需要加强技术和管理 方面的措施
添加标题
添加标题
电商平台的技术架构未来发展趋 势
社交平台的架构实践
社交平台概述: 介绍社交平台 的定义、特点
和发展历程
社交平台技术 架构:详细阐 述社交平台的 技术架构,包 括前端、后端、 数据库等方面
社交平台实践 案例:分享一 些成功的社交 平台实践案例, 包括产品设计、 技术选型、架 构优化等方面
数据存储与备份:采用分布式存储、冗余备份等手段,确保数据的安全性和可靠性
安全审计与监控:建立安全审计机制,对平台进行实时监控和日志分析,及时发现并应对 安全威胁
架构实践
电商平台的技术架构概述
电商平台的技术架构优化与改进
添加标题
添加标题
电商平台的技术架构实践案例
社交平台架构 优化:探讨如 何优化社交平 台的架构,提 高平台的性能、 稳定性和可扩
网站架构简要概述PPT(18张)
目录结构要遵循网站架构层级: 每个主页创建一个主目录(文件夹), 在这个主目录下面还有子目录,正如子页 面位于主页下面一样。 为可重复使用的元素建立独立目录, 如高级CSS,javascript, image。
电脑零售商网站的目录结构示例
根文件夹(包含index.html) images
css javascript beta desktopSystems webImages originalImages
链接站外页面时,只能使用绝对寻址。
链接站内页面时,一定要使用相对寻址。
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
网站架构
定义网站架构
今天我们所面临的挑战,不是搜集信息, 而是发现信息对我们的冲击。
定义formation architecture) 对数据的 组织(organization) 归类(labeling) 数据演示(presentation of data)
定义网站架构
3.2建立标准命名规范
NavshoppingCart.gif navShoppingCart.gif nav_shopping_cart.gif nav-shopping-cart.gif 采用什么规范,远远没有保持规范的一致 性重要。 要求只采用字母、数字、连字符和下划线。
请比较: aa123 navbar 请比较: navBlueButton.gif navGobutton.gif 根据作用,而不是视觉属性,统一文件的命名惯例。
大型网站技术架构核心原理与案例分析pdf
大型网站技术架构核心原理与案例分析pdf【篇一:大型网站技术架构核心原理与案例分析pdf】1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对 131.3.2 驱动大型网站技术发展的主要力量是网站的业务发展 131.4 网站架构设计误区 141.4.1 一味追随大公司的解决方案 141.4.2 为了技术而技术 141.4.3 企图用技术解决所有问题 141.5 小结 152 大型网站架构模式 162.1 网站架构模式 162.1.1 分层 172.1.2 分割 182.1.3 分布式 182.1.4 集群 192.1.5 缓存 202.1.6 异步 202.1.7 冗余 212.1.8 自动化222.1.9 安全 232.2 架构模式在新浪微博的应用 232.3 小结 253 大型网站核心架构要素 263.1 性能273.2 可用性 283.3 伸缩性 293.4 扩展性 303.5 安全性 303.6 小结 31第2篇架构4 瞬时响应:网站的高性能架构 344.1 网站性能测试 354.1.1 不同视角下的网站性能 354.1.2 性能测试指标 364.1.3 性能测试方法 394.1.4 性能测试报告 414.1.5 性能优化策略 414.2 web前端性能优化 424.2.1 浏览器访问优化424.2.2 cdn加速 434.2.3 反向代理 444.3 应用服务器性能优化 454.3.1 分布式缓存 454.3.2 异步操作524.3.3 使用集群 534.3.4 代码优化 544.4 存储性能优化 584.4.1 机械硬盘vs. 固态硬盘 584.4.2 b+树vs. lsm树 594.4.3 raid vs. hdfs 614.5 小结 645 万无一失:网站的高可用架构 665.1 网站可用性的度量与考核 675.1.1 网站可用性度量 675.1.2 网站可用性考核 675.2 高可用的网站架构 695.3 高可用的应用715.3.1 通过负载均衡进行无状态服务的失效转移 725.3.2 应用服务器集群的session管理 735.4 高可用的服务 765.5 高可用的数据 785.5.1 cap原理 795.5.2 数据备份 825.5.3 失效转移 845.6 高可用网站的软件质量保证 855.6.1 网站发布 855.6.2 自动化测试 865.6.3 预发布验证 875.6.4 代码控制 885.6.5 自动化发布 905.6.6 灰度发布 915.7 网站运行监控 915.7.1 监控数据采集 925.7.2 监控管理 935.8 小结946 永无止境:网站的伸缩性架构 956.1 网站架构的伸缩性设计 976.1.1 不同功能进行物理分离实现伸缩 976.1.2 单一功能通过集群规模实现伸缩 986.2 应用服务器集群的伸缩性设计 996.2.1 http重定向负载均衡 1006.2.2 dns域名解析负载均衡 1016.2.3 反向代理负载均衡 1026.2.4 ip负载均衡 1036.2.5 数据链路层负载均衡 1046.2.6 负载均衡算法 1056.3 分布式缓存集群的伸缩性设计 1066.3.1 memcached 分布式缓存集群的访问模型 1076.3.2 memcached分布式缓存集群的伸缩性挑战 1076.3.3 分布式缓存的一致性hash算法 1096.4 数据存储服务器集群的伸缩性设计 1126.4.1 关系数据库集群的伸缩性设计1136.4.2 nosql数据库的伸缩性设计 1176.5 小结 1197 随需应变:网站的可扩展架构 1217.1 构建可扩展的网站架构 1227.2 利用分布式消息队列降低系统耦合性 1237.2.1 事件驱动架构 1237.2.2 分布式消息队列 1247.3 利用分布式服务打造可复用的业务平台 1267.3.1 web service与企业级分布式服务1287.3.2 大型网站分布式服务的需求与特点 1297.3.3 分布式服务框架设计 1307.4 可扩展的数据结构1317.5 利用开放平台建设网站生态圈 1327.6 小结 1348 固若金汤:网站的安全架构 1358.1 道高一尺魔高一丈的网站应用攻击与防御 1368.1.1 xss攻击 1368.1.2 注入攻击 1388.1.3 csrf攻击 1398.1.4 其他攻击和漏洞 1408.1.5 web应用防火墙 1418.1.6 网站安全漏洞扫描 1428.2 信息加密技术及密钥安全管理 1428.2.1 单向散列加密 1438.2.2 对称加密 1448.2.3 非对称加密 1448.2.4 密钥安全管理 1458.3 信息过滤与反垃圾 1468.3.1 文本匹配 1478.3.2 分类算法 1488.3.3 黑名单 1498.4 电子商务风险控制1508.4.1 风险 1518.4.2 风控 1518.5 小结 153第3篇案例9 淘宝网的架构演化案例分析 1569.1 淘宝网的业务发展历程 1579.2 淘宝网技术架构演化 1589.3 小结 16210 维基百科的高性能架构设计分析16310.1 wikipedia网站整体架构 16310.2 wikipedia性能优化策略 16510.2.1 wikipedia前端性能优化16510.2.2 wikipedia服务端性能优化 16610.2.3 wikipedia后端性能优化 16711 海量分布式存储系统doris的高可用架构设计分析 16911.1 分布式存储系统的高可用架构 17011.2 不同故障情况下的高可用解决方案 17111.2.1 分布式存储系统的故障分类 17211.2.2 正常情况下系统访问结构 17211.2.3 瞬时故障的高可用解决方案 17311.2.4 临时故障的高可用解决方案 17411.2.5 永久故障的高可用解决方案17512 网购秒杀系统架构设计案例分析 17612.1 秒杀活动的技术挑战 17712.2 秒杀系统的应对策略17712.3 秒杀系统架构设计 17812.4 小结 18213 大型网站典型故障案例分析 18313.1 写日志也会引发故障 18413.2 高并发访问数据库引发的故障 18413.3 高并发情况下锁引发的故障 18513.4 缓存引发的故障 18513.5 应用启动不同步引发的故障 18613.6 大文件读写独占磁盘引发的故障 18613.7 滥用生产环境引发的故障 18713.8 不规范的流程引发的故障 18713.9 不好的编程习惯引发的故障 18813.10 小结188第4篇架构师14 架构师领导艺术 19014.1 关注人而不是产品 19114.2 发掘人的优秀 19114.3 共享美好蓝图 19214.4 共同参与架构 19314.5 学会妥协 19414.6 成就他人 19415 网站架构师职场攻略19615.1 发现问题,寻找突破 19715.2 提出问题,寻求支持 19915.3 解决问题,达成绩效 20116 漫话网站架构师 20316.1 按作用划分架构师 20316.2 按效果划分架构师 20416.3 按职责角色划分架构师20516.4 按关注层次划分架构师 20516.5 按口碑划分架构师 20616.6 非主流方式划分架构师 207附录a 大型网站架构技术一览 208附录b web开发技术发展历程 215...展开收缩【篇二:大型网站技术架构核心原理与案例分析pdf】大型网站技术架构:核心原理与案例分析通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、web 安全、系统发布、运维监控等在内的大型网站开发全景视图。
网站架构PPT
1.html
主
页
2.html
3.html
树型结构
• 树型结构:网站下面有许多目录或栏目,目录或栏目中再放属于该目录或栏目的网页。 结构清楚,URL语义明确,识别度高,搜索引擎处理内部链接的权值传递会比较容易, 后期管理比较容易。但是过深的树层次将导致收录速度下降,而且过密的网结构也会导 致网站结构混乱,链接复杂,容易导致蜘蛛效率的下降,所以,做好树型结构的栏目组 织和链接优化至关重要。这种结构适合内容类别多、内容量大的网站。
实例分析
• 分析站点:/ • 首先阐述下我对优质页面的一些概念
• 优质页面需要适度的保持更新、页面需要HTML层次、充满了丰富的信息、页面输出很多高相关度的链接。
• 传统的页面质量是靠外部的链接指向. 而当前内容输出的指向也会被作为定义当前内容的有力工具.
• 好比.一个专业SEO的博客的内容页面大多是指向了相关SEO的内容页面,而不是汽车.苹果或者音 响等.
容放在很深的层次,而把无关紧要的内容放在首页上。所以,我们要搞清楚主次关系和层级关系,网站的导航一般是从首页往 内层层递进,层级越浅,内容越新,越重要。
3、 内链定位,内链接唯一性 内部链接在结构优化中是起来到一很重要的问题,不紧紧有利用于用户的体验,同时也是提供搜索引擎引导的入口! 而在我们
SEO优化者,更多的用于提高某个页面在整个网站内部的权重,外链接我们知道是投票,那么内部链接同样是投票方式。
网站链接结构,正确的方式参考图二.
网站结构优化
• 1、利用对SEO有利的代码布局 • 2、合理充分的利用内容及突出内容 • 3、从结构出发把复制别人的内容变成原创内容
•
1、常见基本网站结构图
2、简单的搜索引擎抓取顺序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
案例2
• 背景:在ATM和银行主机之间,通常有个前置机器,主要用来 做一些预处理工作,传统的金融平台大多采用c来处理,现在想 接入网银,想改用j2ee来架构,也为以后的sop(标准操作程 序 )做准备。
MySpace
• 第三代架构:转到分布式计算架构 • 几经折腾,最终,MySpace将目光移到分布式计算架构——它在物理
上分布的众多服务器,整体必须逻辑上等同于单台机器。拿数据库来 说,就不能再像过去那样将应用拆分,再以不同数据库分别支持,而 必须将整个站点看作一个应用。现在,数据库模型里只有一个用户表, 支持博客、个人资料和其他核心功能的数据都存储在相同数据库。
• 问题:在这种实时交易系统里应该用什么的架构。ATM是使用 TCP/IP协议的,而网银是http协议的。如果web方面采用 jsp+struts做页面层,Spring+hibenate做业务层,而ATM的接 入采用application同样接入到到Spring的业务层。由于交易量 较大,必须1分钟处理1000笔交易(单ATM),这样的架构是 否合适?
MySpace
• 第一代架构:添置更多的Web服务器
• MySpace最初的系统很小,只有两台Web服务器(分担处理用户 请求的工作量)和一个数据库服务器(所有数据都存储在这一 个地方)。那时使用的是Dell双CPU、4G内存的系统。在早期阶 段,MySpace基本是通过添置更多Web服务器来对付用户暴增问 题的。但到在2004年早期,在MySpace用户数增长到五十万后, 其数据库服务器已经开始疲于奔命了。
– 存储过程的修改,带来的不仅是页面表现层的数据绑定的问 题,在模型层的domain和dto很有可能都要随之改动。即使 B方修改了SP第一时间通知A方,A方修改相应的模型层对 象,重新构造层与层之间的访问参数以及返回类型也是相当 费时的事情。
1问题
• 问题: – 该项目目前的开发方式和现状,效率相当低下。数据库与 SP是基础,SP的修改直接影响上层建筑。而SP的控制权在 B方,由B方完全控制业务。A方需要做领域业务,但只能按 照B方的文档来开发,甚至都不用知道业务。
• 既然所有的核心数据逻辑上都组织到一个数据库,那么MySpace必须 找到新的办法以分担负荷——显然,运行在普通硬件上的单个数据库 服务器是无能为力的。这次,不再按站点功能和应用分割数据库, MySpace开始将它的用户按每百万一组分割,然后将各组的全部数据 分别存入独立的SQL Server实例。结果是,MySpace的每台数据库 服务器实际运行两个SQL Server实例,也就是说每台服务器服务大约 二百万用户。据MySpace的技术人员说,以后还可以按照这种模式以 更小粒度划分架构,从而优化负荷分担。
2分析
• 分析:关键看前置要做哪些工作,是否有复杂的业务逻辑,对于这样实时性 比较高的系统,少用框架。
• Spring+hibernate一般实时性都较差。Spring会产生大量垃圾,频繁启动垃圾 回收机制,系统的响应就得暂停,Spring的动态代理Proxy对象是每个请求信 号都会产生的,1分钟处理1000笔交易,那么一分钟内至少1000个Proxy对象, 还有其他附带对象,内存可能不能支持。
MySpaceΒιβλιοθήκη • 第二代架构 :增加数据库服务器 与增加Web服务器不同,增加数据库并没那么简单。如果一个 站点由多个数据库支持,设计者必须考虑的是,如何在保证数 据一致性的前提下让多个数据库分担压力。
MySpace
• MySpace运行在三个SQL Server数据库服务器上:一个为主, 所有的新数据都向它提 交,然后由它复制到其它两个;另两个 数据库服务器全力向用户供给数据,用以在博客和个人资料栏 显示。这种方式在一段时间内效果很好——只要增加数据库服 务器,加大硬盘,就可以应对用户数和访问量的增加。 这一次的数据库架构按照垂直分割模式设计,不同的数据库服 务于站点的不同功能,如登录、用户资料和博客。垂直分割策 略利于多个数据库分担访问压力,当用户要求增加新功能时, MySpace只需要投入新的数据库加以支持。在账户到达二百万 后,MySpace还从存储设备与数据库服务器直接交互的方式切 换到SAN(存储区域网络)—用高带宽、专门设计的网络将大 量磁盘存储设备连接在一起,而数据库连接到SAN。这项措施 极大提升了系统性能、正常运行时间和可靠性。然而,当用户 继续增加到三百万后,垂直分割策略也变得难以维持下去。
• 比较好的策略:分析系统在应付如此大访问量下的瓶颈所在。 • 如果确实需要业务组件,多台机器组成的分布式EJB系统可能更适合这样的
系统:ATM机需要很长的Session存活期,Spring对Session的管理是 默认一 次调用会开启一个session,调用结束时关闭,如果保持一个Session一直不 断Open,又占用内存,一分钟内如果非常多的ATM客户端接过来,对内存消 耗太大。EJB的Stateful对Session可以在规定内存内进行管理。 • 如果系统没有数据库,只是一个broker,转接者,使用JMS比多线程强,不 宜用多线程。
1分析、建议
• 分析: – 主要是项目管理组织的问题。两个团队无法协调。B方变更 带来A方的变更是必然,问题在于A根本不知道B方的变更。 加之双方没有持续集成,很可能变更了很久才知道,修改的 时候B对A也无法给支持,时间长了可能B自己也忘了。 – 技术上,业务的变动必然带来领域模型的变动。A方其实只 是充当一系列存储过程的外观。这个系统的领域模型其实是 用数据库表和存储过程表示的。实际上,谁控制了业务谁就 控制了领域模型。
案例1
• 平台:NET,+NHibernate+SQL SERVER 2008。 • 开发模式:MVC模式三层都有A方开发,A方的查询业务基本上
依赖于SP,SP由B方方面开发。 • 表现:
– B方对需求的理解不完善,导致SP经常改动。但是SP的每 次改动了之后,A方开发应用程序的程序人员却不知道,除 非A方程序员去调试以前已经开发好的程序,不然很难发现 B方修改了存储过程。