Oracle特大型网站技术架构

同样、使用缓存减轻数据库的下压力,提升网站性能。二八定律,80%的政工访问集中在20%的数上。

1.缓在应用服务器上的当地缓存。(Session)

2.缓是专门的分布式缓存服务器上之长途缓存。可以动用集群的方法,理论及得以做到极致扩张。(Redis、memcached等)

仲、使用服务器集群改善网站的起处理能力。

1.纯服务器无法满足需求时,不要图变又甚之服务器。更方便的做法是搭服务器来平摊原有服务器的压力。

2.通过负载均衡调度服务器。

3.数据库读写分离。通过中心配置可以以同一雅数据库服务器的多少并到其它一样玉服务器,网站以数据库的这无异于效能,实现数据库的读写分离,从而改善数据的载荷压力。(MySql数据主导配置,读写分离)

4.使反向代理和CDN加速网站应,其基本原理都是缓存,区别在CDN部署在网提供商的机房,用户可于去自己近来的网提供商机房获取数据;而相反往代理部署于网站的主干机房,用户请求到达后先是访问的是倒往代理服务器,如果反往代理服务器缓存有用户要的资源,则拿其直接回给用户。(Nginx等)

Oracle 1

其三、使用分布式文件系统和分布式数据库系统。

1.分布式数据库是网站数据库拆分的末段手段,只有在单表数据规模颇巨大之早晚才去下。不交迫不得已时,网站常用之数据库拆分手段是业务分库,将不同工作的数据库部署于不同之大体服务器上。

Oracle 2

2.施用NoSql和查找引擎。(常用的NoSql有mongodb等,常用之寻引擎起:elasticsearch、solr等)

Oracle 3

季、业务拆分

1.为了对日益复杂的政工场景,通过分而治之的手段将全方位网站拆分成不用的产品线,分归不同的事务集团负责。每个应用独立布置,应用中可以经超链接起关联(在首页的导航链接每个都对不同的行使地址),也可通过信息队列进行数量分发,实际最多的或者经过拜访同一个数目存储系统来组成一个关系的整体体系。

Oracle 4

五、分布式服务

1.乘业务拆分越来越密切,系统安排更加多,网站保护会越艰难,在数万高服务器规模的网站中,连接数据极其多,会促成数据库连接资源不足,拒绝服务。考虑都游人如织作业都见面执行许多一律的操作,我们得以拿这些只是复用的业务单独出来,单独安排,通过分布式服务调用共同工作好具体工作操作。

Oracle 5

2.乘机云计算技术之逐级成熟,我们可以设想租用云计算平台,按需要付费,弹性扩充。

 六、网站架构模式

1.细分层(横向切分)。三重叠分别安排于不同的服务器上,这样好要网站有更多之测算资源报更加多之用户访问。分层结构对网站支持大并作朝分布式方向进步主要。

Oracle 6

2.分割(纵向切分)。同一业务中,如果局面过分庞大,可以设想继续分割。比如购物业务可以更划分成机票酒店工作、3C业务、小商品业务等还密切的粒度。

3.分布式

分布式优点:可以化解网站高并发的问题。

分布式缺点:a.分布式意味着服务调用必须经过网,可能针对性能造成比较严重的熏陶。

b.服务器越多,宕机的几率越强,一玉服务器宕机可能造成多采用不可看,使网站可用性降低。

c.数据在分布式的环境中保持数据一致性也不行窘迫,分布式事物为不便管教。

d.分布式导致网站因错综复杂,开发管理保护困难。

综合,分布式设计要视具体情况,切莫为了分布式而分布式。

常用之分布式有以下几种:

a.分布式应用和劳务:将分和分后的用和劳动模块分布式部署

b.分布式静态资源:网站的静态资源如js、css、logo图片等资源独立分布式部署,并下独立域名,即凡中相传的情景分离。

c.分布式数据以及存储:关系项目数据库分布式、nosql数据库分布式。

d.分布式计算:Hadoop、MapReduce、Spark。

另外还有分布式配置、分布式锁、分布式文件系统等。

4.集群

说白了就算是春运买火车票的早晚额外增加一些售票窗口。

怎实现多宝服务器网站的一头更新?

5.缓存

常用之休养生息存来以下几种植:

a.CDN

b.反向代理

c.本地缓存

d.分布式缓存

6.异步

 在单一服务器间可透过多线程共享内存队列的道实现异步,处在业务操作前的线程将出口写副到行列,后面的线程从队列中读取数据进行拍卖;在分布式系统中,多单服务器集群通过分布式消息队列实现异步,分布式消息队列可以当内存队列的分布式部署。

异步架构是第一流的生产者消费者模式,两者不设有直接调用。

优点:a.提高系统可用性。

b.加快网站响应速度。

c.消除并发访问高峰。

7.冗余

a.至少两光服务器部署网站,防止突然的宕机。

b.数据库除了定期备份,存档保存,实现冷备份外,为了保险在线工作大可用,还欲针对数据库进行主从离别,实时同步实现热备份。

c.为了抵御地震、海啸等不可抗拒的爆发自然灾难导致的网站了瘫痪,可以展开全球限量外布局灾备数据核心。(当然是牛逼吊炸天之柜了)

 8.自动化

自动化失效转移,将失效的服务器从集群中隔离出,不再处理体系受之采取请求。

9.安全

a.通过密码及手机验证码进行身份证明。

b.登录、交易等操作需要对纱通信进行加密,服务器端存储的精灵数据为要开展加密处理。

c.用验证码防止机器人程序滥用网络资源攻击网站。

d.对于周边的用来攻击网站的XSS攻击、SQL注入进行编码转换等遥相呼应处理。

e.对于垃圾信息、敏感信息进行过滤。

f.对于交易转账等关键操作根据市模式及贸易信息进行风险控制。

 七、大型网站为主架构要素

1.性能

a.在浏览器端,可以经浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改进。

b.用CDN缓存热点数据。

c.以服务端,可以利用当地缓存和分布式缓存加快请求处理过程,减轻数据库负载压力。

d.通过异步操作以用户请求发到信息队列等待后续任务处理,而眼下呼吁直接返回响应给用户。

e.可以拿多贵应用程序服务器组成一个集群共对外劳务,应本着大多用户高并发,提升整体
处理能力。

f.代码层面,可以利用多线程、改善内存管理等伎俩优化性能。

g.以数据库服务器端,索引、缓存、SQL优化等连锁能优化手段都曾经于成熟。还好设想使用NoSQL数据库。

2.可用性

a.网站高可用的要紧手段是冗余,应用程序部署于差不多雅服务器上以提供访问,数据存储在差不多台服务器上竞相备份。

应用服务器上不能够保留要的对话信息,否则服务器宕机,会话丢失,即使用户要转发到任何服务器上吗无力回天成功作业处理。

3.伸缩性

衡量架构的紧缩性的重要性标准虽是否可用多台服务器构建集群,是否爱为集众多中补充加新的服务器。加入新的服务器是否可供和原来的服务器无异样的劳务。集众多中但是容的究竟的服务器的数目是否生限量。

4.扩展性

网站的可伸缩架构的第一招数是事件驱动架构和分布式服务。

事件驱动架构通常是运信息队列实现;分布式服务则是以业务与而复用服务分离开来。

5.安全性

权衡网站是否平安的正规化是针对性现存的以及暧昧的各种攻击与窃密手段,是否发生可靠的答应策略。

八、架构

1.浏览器访问优化

减少http请求。主要招数:合并CSS、合并javascript、合并图片(通过CSS偏移控制)。

2.用浏览器缓存

a.通过安装http头中之Cache-Control和Expires的习性。

b.于少数时刻,静态资源文件之变得这利用到客户端浏览器,这种情概,可以经过转文件称实现,及更新任何js文件并无是就是创新js文件中之情,而是转变一个新的js文件并创新html文件中的援。

c.用浏览器缓存策略的网站在创新静态资源时,应使用一个文本一个文本逐步翻新,并产生必然的时距离,以免用户浏览器突然大量缓存失效,集中更新缓存,造成服务器负荷骤增、网络堵塞的情况。

3.启用压缩

html、css、javascript文件启用GZip压缩。压缩会对服务器和浏览器产生一定之压力,所以要是权考虑。

4.css放在页面最上面、JavaScript放在页面最下

要是页面解析时虽得采用JavaScript,这时坐底部就无适当了。

5.减少cookie传输

无限好的cookie会严重影响多少传,因此慎重考虑哪些数据要描绘副cookie。

6.CDN加速

CDN能够缓存的相似是静态资源,如图、文件、css、script脚本、静态网页等。

Oracle 7

7.反向代理

平安力量、缓存功能、负载均衡提升网站出现能力。

Oracle 8

九、应用服务器性能优化

1.分布式缓存

a.网站性能优化第一定律:优先考虑采取缓存优化性能。缓存的本来面目是一个内存的Hsah表。

Oracle 9

2.理所当然使用缓存

a.缓存预热

缓存系统启动时虽拿热点数据加载好。

b.缓存穿透

假如以不正好的作业或者恶意攻击持续高并发地请求某个不存的数目,由于缓存没有保留该数据,所有的呼吁都见面获到数据库及,会针对数据库造成十分酷压力,甚至崩溃。一个略的预谋就是将未存的数量吧缓存起来(其value值为null)。

3.分布式缓存架构

a.两种植架构:一种植是坐JBossCache为表示的用创新同步的分布式缓存;一种植是因Memcached为表示的匪相互通信的分布式缓存。

b.异步操作

Oracle 10

十、万无一失:网站的高可用架构

1.Session服务器

Oracle 11

2.网站发布

Oracle 12

3.自动化测试

现阶段比盛行的web自动化测试工具是Selenium。

 十一、网站的伸缩性架构

1.异功效进行物理分离实现伸缩。

Oracle 13

切切实实可以分成以下简单种:

a.纵于分离:将工作处理流程达到之不同部分分离部署。

Oracle 14

b.横于分离:将不同之业务模块分离部署。

Oracle 15

2.载荷均衡

a.HTTP重定向负载均衡(缺点是浏览器需要简单不良呼吁服务器才能够成就同样不行访问,性能差,所以这个种方案免推荐用)

Oracle 16

b.DNS域名解析负载均衡

大型网站接连有些动DNS域名解析,利用域名解析作为第一级负载均衡手段,即域名解析得到的同等组服务器并无是事实上提供web服务器的情理服务器,而是相同提供负载均衡服务之里服务器,这组中负载均衡服务器进行负载均衡,将请求分发到真正的web服务器上。

Oracle 17

c.反向代理负载均衡(反向代理服务器转发呼吁在HTTP协议层面。优点是暨倒朝代理服务器功能集成以共,部署简单。缺点是倒为代理服务器是怀有请求与应的中转站,其属性可能会见成瓶颈)

Oracle 18

d.IP负载均衡(在网络层通过改要地址进行负荷均衡)

Oracle 19

 e.数据链路层负载均衡(使用三角传输模式的链路层负载均衡是现阶段重型网站大应用的手法,Linux平台上顶好的链路层负载均衡开源产品是LVS(Linux
Virtual Server))

Oracle 20

3.载荷均衡算法

a.轮询

b.加权轮询

c.随机

d.最少连接:记录每个应用服务器正在处理的连年数,将新到的要分发到最少连接的服务器。

e.源地址散列:根据请求来源的IP地址进行Hash计算,得到应用服务器,这样来一个IP地址之呼吁总在和一个服务器上拍卖。

4.分布式缓存集群

a.Memcached分布式缓存

Oracle 21

5.分布式缓存的一致性Hash算法

6.关系数据库集群

a.MySQL集群伸缩性方案:数据勾勒操作都于主服务器上,有主服务器将数据并到任何的打服务器,数据库读操作都在从服务器上进行。

Oracle 22

b.除了数据库主从读写分离,也得以将不同工作数据表部署在不同的数据库集群达,即俗称之数分库。这种方法的制条件是败退裤表不可知拓展Join操作。

c.单表数据了死之时候,还索要展开分片,将一律摆设表拆开分别存储于多单数据库被。目前较成熟之支撑数据分片的分布式关系数据库产品要紧发生开源的Amoeba和Cobar。

Oracle 23

7.NoSQL

即采用最广泛的凡OracleApache HBase。

 十二、网站的而扩大架构

1.分布式消息队列

Oracle 24

十三、网站的安康架构

1.XSS攻击

XSS攻击就逾站脚论攻击。分为另种:一栽是反射型XSS攻击;一种植是持久型XSS攻击。

重在有少数种预防攻击手段:

a.消毒–即针对少数html危险字符转义。

b.HttpOnly–即浏览器禁止页面JavaScript访问带有HttpOnly属性的Cookie,对存放敏感信息的cookie,可通过对拖欠cookie添加HttpOnly属性,避免受口诛笔伐脚本窃取。

2.流入攻击

流入攻击重点有点儿栽样式:SQL注入攻击和OS注入攻击。

a.SQL注入攻击–攻击者需要针对数据库结构具有了解才会拓展,攻击者获取数据库表结构信息的伎俩来如下几种植:开源(Discuz搭建之论坛,数据结构是明的)、错误回显(内部错误500误会展示到浏览器)、盲注(根据页面变化情况判断sql语句之实施情况,据此怀疑数据库结构)。

Oracle 25

守护手段:

a.首先使避攻击者猜测及表名等数库表结构信息。

b.消毒–通过正则相当,过滤掉请求数据中恐怕注入的sql,如“drop table等”。

c.参数绑定–强力推荐应用参数化,此办法是不过好之防sql注入的法。

3.CSRF攻击

 CSRF(Cross Site Request
Forgery,跨站点请求伪造),其主导是以了浏览器Cookie或服务器Session策略,盗取用户位置。

Oracle 26

防卫手段要是辨请求者身份。主要发生瞬间几种植艺术:

a.表单Token–于页面表单中增加一个随意数作为Token,每次响应页面的Token都未一致,正常页面提交的伸手会含有该Token值,而伪造之求无法取得该值,服务器检查请求参数中Token的价是否存在以是以确定要提交者是否合法。

b.验证码–体验不好,所以于必要时行使,如开发交易相当重大页面。

c.Referer
check–http请求头的Referer域中记录着要来源,可透过检查请求来源,验证其是否合法(使用这功能实现图片防盗链)。

4.别攻击与尾巴

a.Error
Code–也称作错误回显。防御手段十分简短:通过配备web服务器参数,跳反500页面及专门的错页面即可。

b.Html注释–删除注释然后又上线。

c.文件上传–用户可能会见达到传可执行之主次,最可行的守护手段:通过文件过滤,只同意上传可靠的文件类型。

d.路径遍历–攻击者在呼吁的URL中应用相对路径,遍历系统非开放的目录和文书。防御措施:将js、css订资源文件部署在单独的服务器,使用独立域名,其他文件不使静态的URl访问,动态参数不带有文件路径信息。

5.web采取防火墙

ModSecurity是一个开源之web应用防火墙。

Oracle 27

除开开源之ModeSecurity,还有有商产品之web应用防火墙,如NEC的SiteShell。

6.网站安全漏洞扫描

不期对网站的服务器进行扫描,查漏补缺。

7.音讯加密技术及密钥安全保管

a.信息加密技术可分为三类:

单项散列加密–MD5、SHA

本着如加密–DES算法、RC算法等

同莫对如加密–RSA算法

8.分拣算法

a.贝叶斯分类算法(会有误判)。

b.TAN算法。

c.ARCS算法。

 十四、淘宝架构演变

1.2003年LAMP架构

.Oracle 28

2.2004年java+Oracle+MVC框架(自己开发的Webx)+ORM框架(IBatis)

Oracle 29

3.2006年

Oracle 30

4.现回归至开源之MySQL及NoSQL系统。有些路,走过后,再回头,不过大凡千篇一律看众山小。

5.秒良系统的答复策略

a.秒杀系统应单独布置–防止拖垮主网站。

b.秒杀商品页面静态化–将货品描述、商品参数、成交记录和用户评价全部状副一个静态页面,用户要不欲经过应用服务器的政工逻辑处理,也管需访问数据库。

c.租借秒杀活动网络宽带

d.动态生成随机下单页面URL–避免用户直接访问下单URL。

十五、大型网站突出故障

1.形容日记引发的故障

故障原因:大量日记占满磁盘空间

解决办法:关闭不必要之日记

2.高出现访问数据库引发的故障

故障原因:首页频繁造访数据库

解决办法:首页访问数,首页需要之数额可以从缓存服务器或者找引擎服务器获取。首页最好是静态的。

3.胜并作状况下沿引发的故障。

故障原因:单例对象多地处使了独一的this。

经验教训:使用锁操作要严谨。

 十六、架构师

莫好吃懒做的职工,只有无为激发出来的来者不拒。

互联网正在并将继承反之世界,一切才刚刚开始,你自己正生逢其时!

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

上述内容来李智慧的《大型网站架构》一书写,这些只是自我的读书笔记,很多地方记录之匪敷详尽,哪位生虾如有趣味,可自行下载原书阅读。

Oracle 31OQ.gif)

Oracle 32OQ.gif)

相关文章