存储设计原则
① 分布式存储系统架构设计,应该遵循什么样的原则
分布式存储分很多类型啊,对称/非对称 并行IO/串行IO,不同需求有不同架构思路。没有设计目标不要谈原则。
② 1. 简述存储系统层次结构的基本思想
制约计算机存储器设计的问题归纳起来有三个:容量多大?速度多快?价格多贵?
容量多大的问题似乎没有限制,不管容量多大,总要开发出应用来使用它。速度多快的问题在某种意义上更容易回答。为了获得多大的性能,存储器速度必须能够跟上处理器的速度,即当处理器执行指令时,我们不想使它停下来等待指令或操作数。最后一个问题也必须考虑,对于实用的系统,存储器的价格相对于其他部件必须是合理的。
正如人们所预料的,在存储器的3个关键特性即价格、容量和存取时间之间需要进行权衡。任何时候,都有各种技术可用来实现存储系统。在这个技术领域中,存在如下关系:
存取时间越短,每位的价格就越高;
容量越大,每位的价格就越低;
容量越大,存取时间就越长;
很显然,摆在设计者面前的难题是,不仅需要大容量,而且需要低的每位价格,因此希望采用提供大容量存储器的技术。但为了满足性能需求,设计者又必须使用昂贵、容量较小和存取时间快的存储器。
解决这个难题的方法是采用存储器层次结构,而不只是依赖单一的存储部件或技术。下图给出了一个通用存储层次结构,图中从上到下,出现下列情况:
每位价格降低;
容量增大;
存取时间增大;
处理器访问存储器的频度降低;
因此,容量较小、价格较贵、速度较快的存储器可作为容量较大、速度较慢的存储器的补充。这种组织方式成功的关键是最后一项,即处理器访问存储器的频度降低。
条件四有效的基础是访问局部性原理。在程序执行的过程中,处理器访问存储器中的指令和数据倾向于成簇(块)。程序通常通常包含很多迭代循环和子程序,一旦进入了一个循环和子程序,则需重复访问一小组指令。同样,对于表和数组的操作,包含存取一簇簇的数据。在一长段时间内,使用的簇是变动的;而在一小段时间内,处理器主要访问存储器中的固定簇。
因此,通过分层结构组织数据,有可能使存取较低层的百分比低于存取高层存储器的百分比。考虑刚才给出的二级存储器的例子,让第二级的存储器包含所有程序的指令和数据,当前的簇临时放在第一级,第一级的某些簇会不时地交换回第二级,为将要进入第一级的簇腾出空间。然而,平均来说,多数的访问是对第一级中的指令和数据。
这个原则可以应用到二级以上的存储器。考察图所示的分层结构,速度较快、容量较小且价格最贵的存储器是处理器的内部寄存器。下跳两层是主存储器,它是计算机中主要的内存系统。主存储器常用速度更快,容量更小的高速缓存来扩充。
(很多体系结构或组成原理相关的书籍上都有的。回答比较粗糙,建议你参考William Stalling的计算机组织与体系结构,这本书上有对该问题的完整的论述。)
③ 存储器的原理是什么
存储器讲述工作原理及作用
介绍
存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
2.按存取方式分类
(1)随机存储器(RAM):如果存储器中任何存储单元的内容都能被随机存取,且存取时间与存储单元的物理位置无关,则这种存储器称为随机存储器(RAM)。RAM主要用来存放各种输入/输出的程序、数据、中间运算结果以及存放与外界交换的信息和做堆栈用。随机存储器主要充当高速缓冲存储器和主存储器。
(2)串行访问存储器(SAS):如果存储器只能按某种顺序来存取,也就是说,存取时间与存储单元的物理位置有关,则这种存储器称为串行访问存储器。串行存储器又可分为顺序存取存储器(SAM)和直接存取存储器(DAM)。顺序存取存储器是完全的串行访问存储器,如磁带,信息以顺序的方式从存储介质的始端开始写入(或读出);直接存取存储器是部分串行访问存储器,如磁盘存储器,它介于顺序存取和随机存取之间。
(3)只读存储器(ROM):只读存储器是一种对其内容只能读不能写入的存储器,即预先一次写入的存储器。通常用来存放固定不变的信息。如经常用作微程序控制存储器。目前已有可重写的只读存储器。常见的有掩模ROM(MROM),可擦除可编程ROM(EPROM),电可擦除可编程ROM(EEPROM).ROM的电路比RAM的简单、集成度高,成本低,且是一种非易失性存储器,计算机常把一些管理、监控程序、成熟的用户程序放在ROM中。
3.按信息的可保存性分类
非永久记忆的存储器:断电后信息就消失的存储器,如半导体读/写存储器RAM。
永久性记忆的存储器:断电后仍能保存信息的存储器,如磁性材料做成的存储器以及半导体ROM。
4.按在计算机系统中的作用分
根据存储器在计算机系统中所起的作用,可分为主存储器、辅助存储器、高速缓冲存储器、控制存储器等。为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,目前通常采用多级存储器体系结构,即使用高速缓冲存储器、主存储器和外存储器。
能力影响
从写命令转换到读命令,在某个时间访问某个地址,以及刷新数据等操作都要求数据总线在一定时间内保持休止状态,这样就不能充分利用存储器通道。此外,宽并行总线和DRAM内核预取都经常导致不必要的大数据量存取。在指定的时间段内,存储器控制器能存取的有用数据称为有效数据速率,这很大程度上取决于系统的特定应用。有效数据速率随着时间而变化,常低于峰值数据速率。在某些系统中,有效数据速率可下降到峰值速率的10%以下。
通常,这些系统受益于那些能产生更高有效数据速率的存储器技术的变化。在CPU方面存在类似的现象,最近几年诸如AMD和 TRANSMETA等公司已经指出,在测量基于CPU的系统的性能时,时钟频率不是唯一的要素。存储器技术已经很成熟,峰值速率和有效数据速率或许并不比以前匹配的更好。尽管峰值速率依然是存储器技术最重要的参数之一,但其他结构参数也可以极大地影响存储器系统的性能。
影响有效数据速率的参数
有几类影响有效数据速率的参数,其一是导致数据总线进入若干周期的停止状态。在这类参数中,总线转换、行周期时间、CAS延时以及RAS到CAS的延时(tRCD)引发系统结构中的大部分延迟问题。
总线转换本身会在数据通道上产生非常长的停止时间。以GDDR3系统为例,该系统对存储器的开放页不断写入数据。在这期间,存储器系统的有效数据速率与其峰值速率相当。不过,假设100个时钟周期中,存储器控制器从读转换到写。由于这个转换需要6个时钟周期,有效的数据速率下降到峰值速率的 94%。在这100个时钟周期中,如果存储器控制器将总线从写转换到读的话,将会丢失更多的时钟周期。这种存储器技术在从写转换到读时需要15个空闲周期,这会将有效数据速率进一步降低到峰值速率的79%。表1显示出针几种高性能存储器技术类似的计算结果。
显然,所有的存储器技术并不相同。需要很多总线转换的系统设计师可以选用诸如XDR、RDRAM或者DDR2这些更高效的技术来提升性能。另一方面,如果系统能将处理事务分组成非常长的读写序列,那么总线转换对有效带宽的影响最小。不过,其他的增加延迟现象,例如库(bank)冲突会降低有效带宽,对性能产生负面影响。
DRAM技术要求库的页或行在存取之前开放。一旦开放,在一个最小周期时间,即行周期时间(tRC)结束之前,同一个库中的不同页不能开放。对存储器开放库的不同页存取被称为分页遗漏,这会导致与任何tRC间隔未满足部分相关的延迟。对于还没有开放足够周期以满足tRC间隙的库而言,分页遗漏被称为库冲突。而tRC决定了库冲突延迟时间的长短,在给定的DRAM上可用的库数量直接影响库冲突产生的频率。
大多数存储器技术有4个或者8个库,在数十个时钟周期具有tRC值。在随机负载情况下,那些具有8个库的内核比具有4个库的内核所发生的库冲突更少。尽管tRC与库数量之间的相互影响很复杂,但是其累计影响可用多种方法量化。
存储器读事务处理
考虑三种简单的存储器读事务处理情况。第一种情况,存储器控制器发出每个事务处理,该事务处理与前一个事务处理产生一个库冲突。控制器必须在打开一个页和打开后续页之间等待一个tRC时间,这样增加了与页循环相关的最大延迟时间。在这种情况下的有效数据速率很大程度上决定于I/O,并主要受限于DRAM内核电路。最大的库冲突频率将有效带宽削减到当前最高端存储器技术峰值的20%到30%。
在第二种情况下,每个事务处理都以随机产生的地址为目标。此时,产生库冲突的机会取决于很多因素,包括tRC和存储器内核中库数量之间的相互作用。tRC值越小,开放页循环地越快,导致库冲突的损失越小。此外,存储器技术具有的库越多,随机地址存取库冲突的机率就越小。
第三种情况,每个事务处理就是一次页命中,在开放页中寻址不同的列地址。控制器不必访问关闭页,允许完全利用总线,这样就得到一种理想的情况,即有效数据速率等于峰值速率。
第一种和第三种情况都涉及到简单的计算,随机情况受其他的特性影响,这些特性没有包括在DRAM或者存储器接口中。存储器控制器仲裁和排队会极大地改善库冲突频率,因为更有可能出现不产生冲突的事务处理,而不是那些导致库冲突的事务处理。
然而,增加存储器队列深度未必增加不同存储器技术之间的相对有效数据速率。例如,即使增加存储器控制队列深度,XDR的有效数据速率也比 GDDR3高20%。存在这种增量主要是因为XDR具有更高的库数量以及更低的tRC值。一般而言,更短的tRC间隔、更多的库数量以及更大的控制器队列能产生更高的有效带宽。
实际上,很多效率限制现象是与行存取粒度相关的问题。tRC约束本质上要求存储器控制器从新开放的行中存取一定量的数据,以确保数据管线保持充满。事实上,为保持数据总线无中断地运行,在开放一个行之后,只须读取很少量的数据,即使不需要额外的数据。
另外一种减少存储器系统有效带宽的主要特性被归类到列存取粒度范畴,它规定了每次读写操作必须传输的数据量。与之相反,行存取粒度规定每个行激活(一般指每个RAS的CAS操作)需要多少单独的读写操作。列存取粒度对有效数据速率具有不易于量化的巨大影响。因为它规定一个读或写操作中需要传输的最小数据量,列存取粒度给那些一次只需要很少数据量的系统带来了问题。例如,一个需要来自两列各8字节的16字节存取粒度系统,必须读取总共32字节以存取两个位置。因为只需要32个字节中的16个字节,系统的有效数据速率降低到峰值速率的50%。总线带宽和脉冲时间长度这两个结构参数规定了存储器系统的存取粒度。
总线带宽是指连接存储器控制器和存储器件之间的数据线数量。它设定最小的存取粒度,因为对于一个指定的存储器事务处理,每条数据线必须至少传递一个数据位。而脉冲时间长度则规定对于指定的事务处理,每条数据线必须传递的位数量。每个事务处理中的每条数据线只传一个数据位的存储技术,其脉冲时间长度为1。总的列存取粒度很简单:列存取粒度=总线宽度×脉冲时间长度。
很多系统架构仅仅通过增加DRAM器件和存储总线带宽就能增加存储系统的可用带宽。毕竟,如果4个400MHz数据速率的连接可实现 1.6GHz的总峰值带宽,那么8个连接将得到3.2GHz。增加一个DRAM器件,电路板上的连线以及ASIC的管脚就会增多,总峰值带宽相应地倍增。
首要的是,架构师希望完全利用峰值带宽,这已经达到他们通过物理设计存储器总线所能达到的最大值。具有256位甚或512位存储总线的图形控制器已并不鲜见,这种控制器需要1,000个,甚至更多的管脚。封装设计师、ASIC底层规划工程师以及电路板设计工程师不能找到采用便宜的、商业上可行的方法来对这么多信号进行布线的硅片区域。仅仅增加总线宽度来获得更高的峰值数据速率,会导致因为列存取粒度限制而降低有效带宽。
假设某个特定存储技术的脉冲时间长度等于1,对于一个存储器处理,512位宽系统的存取粒度为512位(或者64字节)。如果控制器只需要一小段数据,那么剩下的数据就被浪费掉,这就降低了系统的有效数据速率。例如,只需要存储系统32字节数据的控制器将浪费剩余的32字节,进而导致有效的数据速率等于50%的峰值速率。这些计算都假定脉冲时间长度为1。随着存储器接口数据速率增加的趋势,大多数新技术的最低脉冲时间长度都大于1。
选择技巧
存储器的类型将决定整个嵌入式系统的操作和性能,因此存储器的选择是一个非常重要的决策。无论系统是采用电池供电还是由市电供电,应用需求将决定存储器的类型(易失性或非易失性)以及使用目的(存储代码、数据或者两者兼有)。另外,在选择过程中,存储器的尺寸和成本也是需要考虑的重要因素。对于较小的系统,微控制器自带的存储器就有可能满足系统要求,而较大的系统可能要求增加外部存储器。为嵌入式系统选择存储器类型时,需要考虑一些设计参数,包括微控制器的选择、电压范围、电池寿命、读写速度、存储器尺寸、存储器的特性、擦除/写入的耐久性以及系统总成本。
选择存储器时应遵循的基本原则
1、内部存储器与外部存储器
一般情况下,当确定了存储程序代码和数据所需要的存储空间之后,设计工程师将决定是采用内部存储器还是外部存储器。通常情况下,内部存储器的性价比最高但灵活性最低,因此设计工程师必须确定对存储的需求将来是否会增长,以及是否有某种途径可以升级到代码空间更大的微控制器。基于成本考虑,人们通常选择能满足应用要求的存储器容量最小的微控制器,因此在预测代码规模的时候要必须特别小心,因为代码规模增大可能要求更换微控制器。目前市场上存在各种规模的外部存储器器件,我们很容易通过增加存储器来适应代码规模的增加。有时这意味着以封装尺寸相同但容量更大的存储器替代现有的存储器,或者在总线上增加存储器。即使微控制器带有内部存储器,也可以通过增加外部串行EEPROM或闪存来满足系统对非易失性存储器的需求。
2、引导存储器
在较大的微控制器系统或基于处理器的系统中,设计工程师可以利用引导代码进行初始化。应用本身通常决定了是否需要引导代码,以及是否需要专门的引导存储器。例如,如果没有外部的寻址总线或串行引导接口,通常使用内部存储器,而不需要专门的引导器件。但在一些没有内部程序存储器的系统中,初始化是操作代码的一部分,因此所有代码都将驻留在同一个外部程序存储器中。某些微控制器既有内部存储器也有外部寻址总线,在这种情况下,引导代码将驻留在内部存储器中,而操作代码在外部存储器中。这很可能是最安全的方法,因为改变操作代码时不会出现意外地修改引导代码。在所有情况下,引导存储器都必须是非易失性存储器。
可以使用任何类型的存储器来满足嵌入式系统的要求,但终端应用和总成本要求通常是影响我们做出决策的主要因素。有时,把几个类型的存储器结合起来使用能更好地满足应用系统的要求。例如,一些PDA设计同时使用易失性存储器和非易失性存储器作为程序存储器和数据存储器。把永久的程序保存在非易失性ROM中,而把由用户下载的程序和数据存储在有电池支持的易失性DRAM中。不管选择哪种存储器类型,在确定将被用于最终应用系统的存储器之前,设计工程师必须仔细折中考虑各种设计因素。
④ 在系统设计中,对数据库的设计应考虑哪些设计原则
数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用,因此我们必须对数据库设计高度重视起来,培养设计良好数据库的习惯,是一个优秀的软件设计师所必须具备的基本素质条件!
那么我们要做到什么程度才是对的呢?下面就说说数据库设计的原则:
1、数据库设计最起码要占用整个项目开发的40%以上的时间
数据库是需求的直观反应和表现,因此设计时必须要切实符合用户的需求,要多次与用户沟通交流来细化需求,将需求中的要求和每一次的变化都要一一体现在数据库的设计当中。如果需求不明确,就要分析不确定的因素,设计表时就要事先预留出可变通的字段,正所谓“有备无患”。
2、数据库设计不仅仅停留于页面demo的表面
页面内容所需要的字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。
3、数据库设计完成后,项目80%的设计开发在你脑海中就已经完成了
每个字段的设计都是有他必要的意义的,你在设计每一个字段的同时,就应该已经想清楚程序中如何去运用这些字段,多张表的联系在程序中是如何体现的。换句话说,你完成数据库设计后,程序中所有的实现思路和实现方式在你的脑海中就已经考虑过了。如果达不到这种程度,那当进入编码阶段后,才发现要运用的技术或实现的方式数据库无法支持,这时再改动数据库就会很麻烦,会造成一系列不可预测的问题。
4、数据库设计时就要考虑到效率和优化问题
一开始就要分析哪些表会存储较多的数据量,对于数据量较大的表的设计往往是粗粒度的,也会冗余一些必要的字段,已达到尽量用最少的表、最弱的表关系去存储海量的数据。并且在设计表时,一般都会对主键建立聚集索引,含有大数据量的表更是要建立索引以提供查询性能。对于含有计算、数据交互、统计这类需求时,还要考虑是否有必要采用存储过程。
5、添加必要的(冗余)字段
像“创建时间”、“修改时间”、“备注”、“操作用户IP”和一些用于其他需求(如统计)的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,比如黑客攻击,篡改了数据,我们便就可以根据修改时间和操作用户IP来查找定位。
6、设计合理的表关联
若多张表之间的关系复杂,建议采用第三张映射表来关联维护两张表之间的关系,以降低表之间的直接耦合度。若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽可能避免。
7、设计表时不加主外键等约束性关联,系统编码阶段完成后再添加约束性关联
这样做的目的是有利于团队并行开发,减少编码时所遇到的问题,表之间的关系靠程序来控制。编码完成后再加关联并进行测试。不过也有一些公司的做法是干脆就不加表关联。
8、选择合适的主键生成策略
⑤ 简述冯诺依曼提出的“存储程序”原理的基本思想
采用二进制形式表示数据和指令。将程序和数据事先存入主存储器中,计算机在工作时按一定顺序从存储器中取出指令加以执行。论证了组成计算机硬件系统有运算器、存储器、控制器、输入装置和输出装置五大基本部件,并规定了这五部分的基本功能。
上述概念奠定了现代计算机的基本结构,并开创了程序设计的时代。虽然计算机技术发展很快,但存储程序原理至今仍然是计算机内在的基本工作原理,仍然是理解计算机系统功能与特征的基础。自计算机诞生的那天起,这一原理就决定了人们使用计算机的主要方式——编写程序和运行程序。
(5)存储设计原则扩展阅读
存储程序特点是:
1、使用单一的处理部件来完成计算、存储以及通信的工作。
2、存储单元是定长的线性组织。
3、存储空间的单元是直接寻址的。
4、使用低级机器语言,指令通过操作码来完成简单的操作。
5、对计算进行集中的顺序控制。
存储程序和程序控制原理的要点是,程序输入到计算机中,存储在内存储器中(存储原理),在运行时,控制器按地址顺序取出存放在内存储器中的指令(按地址顺序访问指令),然后分析指令,执行指令的功能,遇到转移指令时,则转移到转移地址,再按地址顺序访问指令(程序控制)。
⑥ 教您如何布置仓储货架
1、仓储货架的布局方法
仓库货架布局设计的两种典型方法
中小制造企业在进行仓库而已规划之前,都要确定所需的仓储空间类型,将库存的物资按照一定的标准分区|分类。中小企业仓库而已设计的基本原则是:使用高效的物料搬运设备及规范的操作流程;编制有效的货架存储设计方案;尽量减少通道所占的空间;充分利用仓库货架的堆放能力。针对中小制造企业的现状,可以采用以下两种仓库布局设计方法。
1、存储区设计。如果仓库的周转率低,那么首先要考虑的是仓库存储区的而已,制造企业要根据生产需要确定存储空间,这一空间将是物流仓库中占地最大的场所,必须尽可能最效能地利用整个存储空间。存储区的货位可以又宽又深,堆码高度可达天花板或者在货物稳定摆放所允许的范围内,货位间的通道可以很狭窄。
2|拣货区设计。当货物入库时的单位大于出闸时的单位时,拣货就成为仓库布局主要考虑因素。此时设计要根据存储货位在仓库里的主要功能来进行。设计中指定仓库的某瞟区域为仓库区,指定另外一些区别为拣货区,拣货货位要比存储货位小,常常只有两个托盘那么深,或者货架大小仅有储藏区存储货架的一半,拣货区堆三的高度以工人方便可级的高度为限。在拣货区内,可以将同一种供应商或者同一客户的物品集中存放,以便于分拣配货作业。这一场所的布局对客户服务质量起着关键性的作用。中小制造企业如果能够在自营仓库的有限存储空间内,合理区分存储区与拣货区,并精心设计两个区域内的布局,无疑交付提高物流作业效率和仓库利用率。
在零售超市中并不完全排除柜台式售货方式,可适当保留一些传统的方法。如对于肉类、鱼类和某些精制食品的如何分割、称重和包装,不同的顾客会有不同的要求,有些顾客不愿意从预先分装好的商品中进行挑选,这就要求超市内设些柜台在营业现场里,由店员将商品递给顾客,打上应收钱款数,让顾客到出口处统一交款。
2.超市货架岛屿式布局
岛屿式布局是在营业场所中间布置成各不相连的岛屿形式,在岛屿中间设置货架陈列商品。这种形式一般用于百货商店或专卖店,主要陈列体积较小的商品,有时也作为格子式布局的补充。现在国内的百货商店在不断改革经营手法,岛屿式布局被改造成专业店布局形式,并且被广泛使用。
岛屿式布局的优点:
⊙可充分利用营业面积,在消费者畅通的情况下,利用建筑物特点布置更多的商品货架;
⊙采取不同形状的岛屿设计,可以装饰和美化营业场所;
⊙环境富于变化,使消费者增加购物的兴趣;
⊙满足消费者对某一品牌商品的全方位需求,对品牌供应商具有较强的吸引力。
3、线棒货架的布局方法
第一:拣货区设计
当货物入库时的单位大于出闸时的单位时,拣货就成为仓库布局主要考虑因素。此时设计要根据存储货位在仓库里的主要功能来进行。设计中指定仓库的某瞟区域为仓库区,指定另外一些区别为拣货区,拣货货位要比存储货位小,常常只有两个托盘那么深,或者货架大小仅有储藏区存储货架的一半,拣货区堆三的高度以工人方便可级的高度为限。在拣货区内,可以将同一种供应商或者同一客户的物品集中存放,以便于分拣配货作业。这一场所的布局对客户服务质量起着关键性的作用。中小制造企业如果能够在自营仓库的有限存储空间内,合理区分存储区与拣货区,并精心设计两个区域内的布局,无疑交付提高物流作业效率和仓库利用率,真正实现仓储能力最大化。
第二:存储区设计
如果仓库的周转率低,那么首先要考虑的是仓库存储区的而已,制造企业要根据生产需要确定存储空间,这一空间将是物流仓库中占地最大的场所,必须尽可能最效能地利用整个存储空间。存储区的货位可以又宽又深,堆码高度可达天花板或者在货物稳定摆放所允许的范围内,货位间的通道可以很狭窄。
⑦ 互联网技术架构的设计原则怎么样
一,可(异地)部署和就近路由接入,破除单点故障;
(可分布,可调度的原则)
二,数据上报和监控平台;
(用户行为数据,系统性能监控数据,系统异常和业务相关数据等的上报)
三,数据分级存储原则:单内存cache存储,内存cache+异步更新,内存cache+同步更新;
(从三个纬度分析用户行为模型,决定相关数据的存储策略:1,能忍受用户数据的丢失吗?2,能忍受数据的非及时性吗?
3,数据的读写比例分布如何?)
四,动静分离原则;
(能静态化尽量静态化,在代码和进程部署上,在DNS层上做好动静分离的系统设计准备)
五,轻重分离原则;
(保持接入和业务处理的分离,接入尽量轻量化,使得系统具有很好的吞吐量,处理尽量异步化,使得可以平滑扩展)
六,破除服务依赖原则:同一IDC的其他服务对系统的影响,第三方调用系统接口的隔离和过载保护,依赖第三方服务的
监控和安全保护原则等。
七,柔性可用原则;
(处理好异常情况下的灰度体验,区分好关键处理路径和非关键路径,而系统设计要尽量把关键路径转换成非关键路径)
八,能异步的尽量异步原则;
(通过内存管道,操作流水等技术进行拼接各个处理模块)
九,灰度原则;
(灰度发布策略是根据用户号码段,用户ip段,还是用户vip等级,用户所在城市等进行灰度升级,保证系统的平滑迭代)
十,异常的快速响应和一键切换原则;
(IDC断电?系统切换到正常的成本是多少?时间呢?需要几个人操作?牛的系统可以一个人在管理后台按一个按钮就可以切换,再按一下就可以切换回来)
十一,有损服务原则;
(用低成本提供海量的服务原则)
十二,一切简单化处理的原则,真真假假,假假真真!
(方案的简单化,允许的误差评估等)
十三,充分利用DNS层做好系统的可分布设计。
十四,区分系统行为和用户行为并分别进行设计,甚至在关键时刻可以进行转换。
十五,坚持app_server设计的无状态设计原则,转变用户行为为系统行为,使得app_server具有无状态的特点。
十六,负载均衡原则和平滑扩容。
十七,多级cache设计以及各个cache的路由设计。
十八,“大系统小做”原则。
十九,面向接口编程,面向服务编程设计原则,解耦业务模块的依赖关系。
二十,强事务模型到最终一致性事务模型的转换原则。
望采纳!
⑧ 记录存储系统的设计原则是什么
1:1存储的设计原则:
1、存取频率相近的,放一张表;相差很多的,分成两个表,尤其要考虑读的频率
2、列表查询,冗余所有在列表项需要展示的内容,在一张表中,避免join
3、长字段,考虑性能,单列
4、如果语义上有很大差别,可以通过ORM的方式,在domain层分裂成多个对象
5、开始的时候,不要用update来更新单个或者少量字段。开发速度优于运行速度。 直到性能出现瓶颈的预警时,才考虑优化为update.
6、重要字段password,必须加密传输,减少更新
7、有些时候添加新功能产生的1:1字段,可能会用新的
8.数据库记录的id,除了唯一标识记录这一个用途之外, 不允许做任何业务含义。 例如根据id来排序神马的,这都是扯蛋的设计。