当前位置:首页 > 经验 >

数据库架构原理(数据库功能架构图)

来源:原点资讯(www.yd166.com)时间:2022-11-06 10:07:54作者:YD166手机阅读>>

6.2.3 反向代理负载均衡

浏览器访问请求的地址是反向代理服务器的地址114.100.80.10,反向代理服务器收到请求后,根据负载均衡算法计算得到一台真实物理服务器的地址10.0.0.3,并将请求转发给服务器。10.0.0.3处理完请求后将响应返回给反向代理服务器,反向代理服务器再将该响应返回给用户。

由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。其优点是和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

数据库架构原理,数据库功能架构图(5)

6.2.4 IP负载均衡

在网络层通过修改请求目标地址进行负载均衡。

这里的关键在于真实物理Web服务器响应数据包如何返回给负载均衡服务器。一种方案是负载均衡服务器在修改目的IP地址的同时修改源地址,将数据包源地址设为自身IP,即源地址转换(SNAT),这样Web服务器的响应会再回到负载均衡服务器;另一种方案是将负载均衡服务器同时作为真实物理服务器集群的网关服务器,这样所有响应数据都会到达负载均衡服务器。

数据库架构原理,数据库功能架构图(6)

6.2.5 数据链路层负载均衡

在通信协议的数据链路层修改mac地址进行负载均衡。

这种数据传输方式又称作三角传输模式,负载均衡数据分发过程中不修改IP地址,只修改目的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的,由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。这种负载均衡方式又称作直接路由方式(DR)。

用户请求到达负载均衡服务器114.100.80.10后,负载均衡服务器将请求数据的目的mac地址修改为00:0c:29:d2,并不修改数目包目标IP地址,由于Web服务器集群所有服务器的虚拟IP地址都和负载均服务器的IP地址相同,因此数据可以正常传输到达mac地址00:0c:29:d2对应的服务器,该服务器处理完成后发送响应数据到网站的网关服务器,网关服务器直接将该数据包发送到用户浏览器(通过互联网),响应数据不需要通过负载均衡服务器。

数据库架构原理,数据库功能架构图(7)

6.2.6 负载均衡算法

负载均衡服务器的实现可以分成两个部分:

1.根据负载均衡算法和Web服务器列表计算得到集群中一台Web服务器的地址。

2.将请求数据发送到该地址对应的Web服务器上。

负载均衡算法

轮询(RoundRobin,RR)

所有请求被依次分发到每台应用服务器上,即每台服务器需要处理的请求数目都相同,适合于所有服务器硬件都相同的场景。

加权轮询(WeightedRoundRobin,WRR)

根据应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重将请求分发到每个服务器,高性能的服务器能分配更多请求。

随机(Random)

请求被随机分配到各个应用服务器,在许多场合下,这种方案都很简单实用,因为好的随机数本身就很均衡。即使应用服务器硬件配置不同,也可以使用加权随机算法。

最少连接(LeastConnections)

记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到最少连接的服务器上,应该说,这是最符合负载均衡定义的算法。同样,最少连接算法也可以实现加权最少连接。

源地址散列(SourceHashing)

根据请求来源的IP地址进行Hash计算,得到应用服务器,这样来自同一个IP地址的请求总在同一个服务器上处理,该请求的上下文信息可以存储在这台服务器上,在一个会话周期内重复使用,从而实现会话黏滞。

6.3 分布式缓存集群的伸缩性设计6.4 数据存储服务器集群的伸缩性设计

在数据库,不同业务数据表部署在不同的数据库集群上,即俗称的数据分库。这种方式的制约条件是跨库的表不能进行Join操作。

高手定律:这个世界只有遇不到的问题,没有解决不了的问题,高手之所以成为高手,是因为他们遇到了常人很难遇到的问题,并解决了。所以百度有很多广告搜索的高手,淘宝有很多海量数据的高手,QQ有很多高并发业务的高手,原因大抵如此。一个100万用户的网站,不会遇到1亿用户同时在线的问题;一个拥有100万件商品网站的工程师,可能无法理解一个拥有10亿件商品网站的架构。

救世主定律:遇到问题,分析问题,最后总能解决问题。如果遇到问题就急匆匆地从外面挖一个高手,然后指望高手如探囊取物般轻松搞定,最后怕是只有彼此抱怨和伤害。许多问题只是看起来一样,具体问题总是要具体对待的,没有银弹,没有救世主。所以这个定律准确地说应该是“没有救世主定律”。

7 随需应变:网站的可扩展架构

大多数都比原创产品有更好的用户体验。这些产品常常后来居上,更速度地推出新功能,吸引用户注意,进而占据市场。

7.1 构建可扩展饿网站架构

那么如何分解系统的各个模块、如何定义各个模块的接口、如何复用组合不同的模块构造成一个完整的系统,这是软件设计中最有挑战的部分。

软件架构师最大的价值不在于掌握多少先进的技术,而在于具有将一个大系统切分成N个低耦合的子模块的能力,这些子模块包含横向的业务模块,也包含纵向的基础技术模块。这种能力一部分源自专业的技术和经验,还有一部分源自架构师对业务场景的理解、对人性的把握、甚至对世界的认知。

设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提高模块的复用性。

7.2 利用分布是消息队列降低系统耦合性

如果模块之间不存在直接调用,那么新增模块或者修改模块就对其他模块影响最小,这样系统的可扩展性无疑更好一些。

7.2.1 事件驱动架构

7.2.2 分布式消息队列

7.3 利用分布式服务大招可复用的业务平台

解决方案就是拆分,将模块独立部署,降低系统耦合性。拆分可以分为纵向拆分和横向拆分两种。

纵向拆分:将一个大应用拆分为多个小应用,如果新增业务较为独立,那么就直接将其设计部署为一个独立的Web应用系统。

横向拆分:将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务,不需要依赖具体的模块代码,即可快速搭建一个应用系统,而模块内业务逻辑变化的时候,只要接口保持一致就不会影响业务程序和其他模块。

8 固若金汤:网站的安全架构8.1 道高一尺魔高一丈的网站应用攻击与防御

8.1.1 XSS攻击

XSS攻击即跨站点脚本攻击(CrossSiteScript),指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。

另外一种XSS攻击是持久型XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。

XSS防攻击主要手段:消毒

XSS攻击者一般都是通过在请求中嵌入恶意脚本达到攻击的目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些html危险字符转义,如“>”转义为“>”、“<””转义为“<”等,就可以防止大部分攻击。为了避免对不必要的内容错误转义,如“3<5”中的“<”需要进行文本匹配后再转义,如“<imgsrc=”这样的上下文中的“<”才转义。事实上,消毒几乎是所有网站最必备的XSS防攻击手段。

8.1.2 注入攻击

注入攻击主要有两种形式:SQL注入攻击和OS注入攻击。

SQL注入攻击需要攻击者对数据库结构有所了机才能进行,攻击者获取数据库结构信息的手段有如下几种:

开源

如果网站采用开源软件搭建,如用Discuz!搭建论坛网站,那么网站数据库结构就是公开的,攻击者可以直接获得。

错误回显

如果网站开启错误回显,即服务器内部500错误会显示到浏览器上。攻击者通过故意构造非法参数,使服务器异常信息输出到浏览器端,为攻击猜测数据库提供给了便利。

盲注

网站关闭错误回显,攻击者根据页面变化情况判断SQL语句的执行情况,据此猜测数据库结构,此种方式攻击难度较大。

防御SQL注入攻击首先要避免被攻击者猜测到表名等数据库结构信息,此外还可以采用如下方法:

消毒

和防XSS攻击一样,请求参数消毒是一种比较简单粗暴又有效的手段。通过正则匹配,过滤请求数据中可能注入的SQL,如“drop table”、“\b(?:update\b.*?\bset |delete\b\W*?\bfrom)\b”等。

参数绑定

使用预编译手段,绑定参数是最好的防SQL注入方法。目前许多数据库访问层架构,都实现SQL预编译和参数绑定,攻击者的SQL会被当做恶意SQL会被当作SQL参数,而不是SQL名利ing被执行。

除了SQL注入,攻击者还根据具体应用,注入OS命令、编程语言代码等,利用程序漏洞,达到攻击目的。

8.1.3 CSRF攻击

CSRF(Cross Site Request Forgery,跨站点请求伪造),攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易、发表评论等。CSRF的主要手段是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器或服务器Session策略,盗取用户身份。

相应地,CSRF的防御手段主要是识别请求者身份。主要有下面几种方法:

表单Token

CSRF是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。表单Token通过在请求参数中增加随机数的办法来阻止攻击者获得所有请求参数:在页面表单中增加一个随机数作为Token,每次响应页面的Token都不相同,从正常页面提交的请求会包含该Token值,而伪造的请求无法获得该值,服务器检查请求参数重Token的值是否存在冰球正确以确定请求提交着是否合法。

验证码

相对说来,验证码则更加简单有效,即请求提交时,需要用户输入验证码,以避免在用户不知情的情况下被攻击者伪造请求。但是验证码是一个糟糕的用户体验,所以请在必要时使用,如支付交易等关键页面。

Referer check

HTTP请求头的Referer域中记录着请求来源,可通过检查来源,验证其是否合法。许多网站使用这个功能实现图片防盗链(如果图片请求的页面来源不是来自自己网站的网页就拒绝)。

8.1.4 其他攻击和泄漏

Error Code

也称为错误回显。

HTML注释

文件上传

如果上传的是可执行的程序,并通过该程序获得服务器命令执行能力,那么攻击者几乎可以在服务器上为所欲为,并以此为跳板攻击集群环境的其他机器。最有效的防御手段是设置上传文件的白名单,只允许上传可靠的文件类型。此外还可以修改文件名、使用专门的存储等手段,保护服务器免受上传文件攻击。

路径遍历

攻击者在请求的URL中使用相对路径,遍历系统为开放的目录和文件。防御方法主要是将JS、CSS等资源文件部署在独立服务器、使用独立域名,其他文件不使用静态URL访问,动态参数不包含文件路径信息。

8.2 信息加密技术及密钥安全管理

信息加密技术可分为三类:单项散列加密、对称加密和非对称加密。

为了加强单项散列计算的安全性,还会给三裂算法加点盐(salt),salt相当于加密的密钥,增加破解的难度。

常用的单向散列算法有MD5、SHA等。单向散列算法还有一个特点就是输入的任何微小变化都会导致输出的完全不同,这个特性有时也会被用来生成信息摘要、计算具有高离散程度的随机数等用途。

不管是单向散列加密用到的salt、对称加密的密钥、还是非对称加密的私钥,一旦这些密钥泄露出去,那么所有基于这些密钥加密的信息就失去了秘密性。

上一页12末页

栏目热文

大型数据库系统原理(数据库系统体系结构)

大型数据库系统原理(数据库系统体系结构)

什么是数据挖掘?关于什么是数据挖掘,很多学者和专家给出了不同的定义,以下我们列出几种常见的说法:“简单地说,数据挖掘是从...

2022-11-06 09:31:44查看全文 >>

数据库基础知识教程(oracle数据库详细教程)

数据库基础知识教程(oracle数据库详细教程)

大家可能都知道数据库是非常重要的一门技术。从事软件测试也都需要用到数据库。当然,数据库的水平也直接决定着我们工资的上限。...

2022-11-06 10:05:46查看全文 >>

数据库系统原理课后答案(数据库系统原理课后习题答案)

数据库系统原理课后答案(数据库系统原理课后习题答案)

持续更新,只整理了真题,答案自己找寻,希望大家逢考必过早日拿到毕业证,...

2022-11-06 09:40:38查看全文 >>

数据库的系统原理及应用教程重点(数据库系统基础教程)

数据库的系统原理及应用教程重点(数据库系统基础教程)

位来 发自 凹非寺量子位 编辑 | 公众号 QbitAI随着云计算、大数据产业的迅速发展,数据量呈现规模化增长且应用场景...

2022-11-06 09:46:05查看全文 >>

数据库系统原理有什么(数据库系统原理图解)

数据库系统原理有什么(数据库系统原理图解)

作者:南慕伦链接:https://www.zhihu.com/question/273489729/answer/382...

2022-11-06 10:01:32查看全文 >>

完整的数据库设计案例(数据库设计的四个阶段)

完整的数据库设计案例(数据库设计的四个阶段)

2,数据库设计2.1 数据库设计简介软件的研发步骤数据库设计概念数据库设计就是根据业务系统的具体需求,结合我们所选用的D...

2022-11-06 09:37:48查看全文 >>

数据库系统原理课程设计(数据库系统原理教学大纲)

数据库系统原理课程设计(数据库系统原理教学大纲)

第一章 数据库系统概述第一节 数据库基本概念知识点 001:数据库基本概念(单选、填空、简答)1.数据(Data):是描...

2022-11-06 09:44:41查看全文 >>

数据库系统的结构图(数据库系统体系结构)

数据库系统的结构图(数据库系统体系结构)

专注于Java领域优质技术,欢迎关注作者:Jay_huaxiao 前言整理了一些Mysql数据库相关流程图/原理图,做一...

2022-11-06 09:29:43查看全文 >>

数据库系统的组成(数据库系统的组成及特点)

数据库系统的组成(数据库系统的组成及特点)

一、什么是数据库数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是...

2022-11-06 09:30:33查看全文 >>

数据库系统原理题库(数据库系统原理复习)

数据库系统原理题库(数据库系统原理复习)

广开-形考-10546管理学基础1、下述对于信息沟通的认识中,哪一条是错误的()2、按照沟通的渠道或途径不同,沟通可以分...

2022-11-06 09:55:15查看全文 >>

文档排行