首先澄清上篇中关于几个朋友的评论。
上篇疯狂代码介绍的基于AJAX的攻击很多人提出疑问,比如不能跨域,减轻负担之类。Ajax是通过简单的GET和POST进行数据传递的,采 用HTTPDEBUGGER,抓取数据,然后采用如下方案,顺便写个示例的攻击代码.比传统的webform,我们更容易构造一些,其实对于 webform和ajax的处理和发包过程是一样的,ajax数据量相对小,速度也快一些。
结合SharpPcap和HttpWebRequest我们构造一个合理的正常的IP数据包过去,代码很长,我们用伪代码简单的表达一下。
request.CreateUrl(Ajax处理页面);
request.Method=”GetORPost”;
request.refere=”网页来源”;
SharpPcap.SetLinkConnection(伪造IP地址);
String content = request.GetResponseStream() 如果作为一个多线程的应用程序对对方的WEB构成批量发包的话(假如是DEDECMS),足可以把Dedecms的数据库搞垮
文入正题:
对于上回书提到要解决问题A,我们先讲解一下电信公司ADSL的布局方案。机器上没有装VISIO,我简单的用文字描述一下流程。
Adsl用户Aè输入用户名密码è远程连接到账户数据库(在天津)è账户数据库连接计费数据库并返回状è如果成功,连接PPPOE服务器,并进一步连接计费数据库è认证服务并连接。
这里没有什么特别的地方,但是和qq通讯服务是一样的,就是采用了统一的用户验证服务器,同时对于用户验证的信息数据库是只读的,我们从其中可以想到什么吗?
以上是个简单的例子,下面开始谈具体的架构策略,首先对于上篇提到的问题A,我们首先以用户数据库为例来做解释和要求。
首先做用户量估算需求,假如我们做的是学术社区,那么这个用户量不会很大,可能我们不需要考虑这个,对于用户量的级别,我们暂时把用户量级别定 为三种,百万级别(M)和千万界别(S),以及亿万级别(Q),并考虑用户登录验证以及查询常用的操作,对M和S进行扩充以及了解。
众所周知,在这个情况下,对于用户数据的负载其实并非可行而不可行的问题,而是如何最大化的保证查询和更新以及各个服务器之间的数据同步。这里 我们不再讲解如何优化如何索引,只介绍架构初期的方案,下面介绍的方案如果涉及全表查询,可以采用分区视图的方案,大家可以具体搜索相关资料。
对于M级别来说,现有的DBMS经过合理的布局完全可以满足需求。我们需要解决的问题的关键其实是处理IO方面的问题,处理方案相对简单一些,对数据库的FILE文件分磁盘存贮(不是分区,是不同的硬盘),根据负载量大小,我们可以适当的控制硬盘的数量和文件分区的数量。
对于S级别,上个处理方案已经不能完全满足需求了,这个时候我们需要对注册和入库的流程进行简单的修改了,解决方案是数据散列和分区视图的概念,具体概念大家去google一下,我不详细说明了。
我们常用的方案有三种。第一种是等容扩充法,在用户注册控制的基础上,保证每个库的用户容量不超过500万,超过之后入第二个库,以此类推,这 个方案可以保证系统有效的扩充性,但不能保证数据被有效的索引。第二种就是共区索引方案,其实和第一种方案有异曲同工的之说但是讲第一种方案进行了合理的 优化,按照用户名进行分库存贮。比如我们可以建立26的数据库,按照用户名的索引来控制用户数据入哪个库。假如用户名是CrazyCoder,那么就讲该 用户名的数据存放在用户表C中,在数据存贮的时候可以很方便的根据用户名进行相应的数据查询,方案二可以有效的解决数据索引问题。方案三是一个更具模型化 的方案,结合方案一和方案二,进行用户ID的编码,不是INDENTIFY Cloumn,我们用一种序列化的方案将用户名以编码的形式存贮,比如用户名是CrazyCoder,我们的编码方案就是通过算法进行数字化,将 CrazyCoder按照C,R,A,….存贮为数字索引,然后进行分区存贮,数字类型的数据在数据库中可以更有效的被查询和被更新和共享,结合方案一和 方案二这个就是方案三。
对于Q级别。数据量已经是足够海量了,这个时候无论用哪种方案都是一个让人头大的数据,不能简单的用查询的方案来处理了,可以参考S级别的进行 处理。但这个时候我们采用的方案是根据用户活跃度的权值结合数据量进行临时数据表的存放。如果一个非意外的数据情况下,每天登录的用户量不会上千万。这个 时候我们需要做的是一个简单的数据代理程序。一个临时的用户验证数据库,每天执行一次批处理,将活跃度高的用户账户提取到临时数据库中,查询的时候先查询 临时库,如果没有在进行全库查询。这个根据系统的负载情况来估计阈值,不同的系统估算方案也不尽相同。
上面对于,M,S,Q三种界别进行了简单的概述,下面介绍一个在其之上更高级的一个查询方案,数据缓存服务器,我们也可以把它理解为缓冲服务器,数据做为只读来使用。
具体实现方案如下:以为涉及了海量,DBMS常规的缓存方案已经不符合我们的要求了,那么我们需要一个有效的缓存方案,这个时候处理的流程其实 就是讲最常用最直接的数据直接存放在缓存服务器中,而这个缓存服务器定时从主服务器获取并更新信息。这个是一个简单的查询,我们还可以更深入的讲缓存服务 器做二次缓存,也就是一次性处理输入并存放到LIST数据中,作为全局变量放到内存中进行查询,同时用HASHTABLE或者数组进行数据组索引(可以是 多级),根据查询分布到各个变量中。直接从内存中读取数据。
以笔者的经验来说的话,对于ITEM数据不超过10K的来说,每个列表最佳的存放范围是0到6万之间。
这里简单的介绍了一下DBMS基本架构,里面具体细节处理的还有很多,这里只介绍个大概的纲要。有问题请给我发邮件(Heroqst # Gmail.com),请讲#替换为@
这里只是简单的介绍了一下DBMS的基本布局,下章讲具体对我们常见的多对多关系数据库进行具体配置说明。
首先介绍一下问题的大概,比如对于文章和标签,每个文章可以有多个标签,而每个标签下又会有多个文章,那么数据量将是文章数乘以标签数,这个时候如何进行处理并有效的索引,将是下章要介绍的内容。
分享到:
相关推荐
【大型网站架构系列之二 底层架构概论】这篇内容主要探讨了大型网站底层架构的设计原则和策略,尤其关注用户数据库的管理、负载均衡以及数据同步等问题。文章首先回应了上一篇关于AJAX安全性的讨论,指出尽管AJAX...
第二部分,"疯狂代码,大型网站架构系列之二,底层架构概论.doc",可能详细介绍了大型网站的基础架构组件,如分布式服务器、数据库集群、负载均衡器、CDN(Content Delivery Network)等。这部分内容可能会讲解如何通过...
总的来说,TCP/IP通讯协定与网路架构概论涵盖了互联网通信的基础知识,从底层的物理传输到高层的应用交互,构成了我们日常网络活动的核心。理解和掌握TCP/IP有助于我们更好地理解和利用网络资源。
《大型数据库系统概论》是朱辉生教授在2016年开设的一门课程,主要探讨了在大规模数据处理背景下,如何有效地管理和利用数据库系统。这个配套教学资源包包含了该课程的核心知识点,旨在帮助学生深入理解数据库系统的...
与C++相比,C#放弃了某些底层控制能力,转而强调更高的抽象级别,这使得它在大型项目中展现出更强的健壮性和可维护性。 总之,C#是.NET生态系统中的一颗璀璨明珠,它不仅吸收了前辈语言的优点,还在许多方面进行了...
计算机硬件架构有多种类型,如单总线、双总线结构(以CPU为中心或以存储器为中心)以及采用通道的大型系统。理解不同架构有助于优化数据处理和系统性能。 进制转换是计算机科学的基础,包括二、八、十、十六进制...
北京中科信软云架构培训主要涵盖了虚拟化与云计算的基础知识、XEN/KVM虚拟化技术的原理与实践、开源云计算平台Eucalyptus的部署与操作,以及IBM云计算参考架构2.0的内容。接下来将详细介绍这些知识点。 首先,虚拟...
### 数据库系统概论知识点详解 #### 一、基本概念 1. **数据(Data)** - 定义:描述事物的符号记录。 - 种类:数字、文字、图形、图像、声音、文本等。 - 特点:数据与其语义紧密相连,同一数据在不同场景下可能...
第一章 网络空间安全概论 网络空间安全概论全文共16页,当前为第1页。 目录 1 网络空间发展历史 2 2 2 网络空间安全现状 3 4 网络空间安全发展趋势 网络 间安全技术体系 网络空间安全概论全文共16页,当前为第2页。 ...
这篇论文主要讨论的是一...总的来说,这篇论文详细阐述了一个自攀爬幕墙清洗机器人的设计和控制系统,重点介绍了CAN总线通信技术在机器人控制中的应用,展示了如何通过分布式架构实现对复杂环境作业机器人的高效控制。
根据给定的文件信息,我们可以深入探讨嵌入式系统硬件...综上所述,嵌入式系统硬件概论涵盖了从底层硬件架构到高层软件管理的广泛知识,对于从事嵌入式系统设计和开发的专业人士而言,深入理解这些概念是至关重要的。
《计算机系统概论》是计算机科学领域的一本经典教材,由Yale Patt撰写,第二版在原有的基础上进行了更新和扩展,旨在深入浅出地介绍计算机系统的基础知识。在这个专题中,我们将聚焦于其中的LC-3模拟器和编译器,...
数据库概论是数据库管理系统的基础知识,涵盖数据库的基本概念、特点、架构等方面的内容。以下是数据库概论的相关知识点: 一、数据库的定义和特点 数据库是数据管理的新方法和技术,是一个按数据结构来存储和管理...
计算机组成与结构以及计算机系统概论是计算机科学的基础学科,主要探讨计算机硬件和软件的交互以及计算机系统的整体架构。在本课程中,学生将通过学习一系列关键章节来深入理解计算机的工作原理。 首先,预备知识...
在信息通信网络中,应用和分层架构是理解网络如何工作的重要概念。本章主要讨论了OSI参考模型、TCP/IP架构以及ATM和MPLS等特定网络架构,同时阐述了分层架构的优点和作用。 2.1 OSI参考模型 OSI(Open System ...
3. **数据独立性**:解释物理数据独立性和逻辑数据独立性,以及它们在数据库设计中的重要性,确保应用程序不受底层数据表示变化的影响。 4. **数据库设计**:涵盖需求分析、概念设计(如用E-R图表示实体和关系)、...
物联网安全概论知识点 根据提供的文件信息,我们可以将物联网安全概论知识点总结如下: 物联网安全特征 1. 感知网络的信息采集、传输与信息安全问题 2. 核心网络的传输与信息安全问题 3. 物联网业务的安全问题 ...
### Android Widevine概论 #### 一、Widevine概述 Widevine是由Google推出的数字版权管理(Digital Rights Management,简称DRM)技术,在Android系统的Ice Cream Sandwich(ICS)版本上首次亮相。这一技术允许...
计算机系统概论主要探讨了计算机的基本结构、工作原理以及软件与硬件之间的关系。在这个文档中,我们可以看到以下几个关键知识点: 1. **计算机基本组成**:计算机系统由五个主要部分构成,包括输入设备、输出设备...