��ǰλ�ã�首页 > 集团企业

集团企业

不要立即检查刚做过的工作

����:ʱ��:2019-04-13
不要立即检查你刚才做了什么,也不要读你刚才写的数据。切勿阅读您刚刚撰写的数据以进行验证。为了在不久的将来进行操作和维护,可以将数据存储在本地或分布式缓存中。验证工作比不太可能发生的故障更昂贵。这种活动与有效扩张的需要相反。 TR TR 永远不要读取刚写入的数据以验证数据,而是读取并处理与写入操作相关的错误。在本地存储数据可以避免对刚刚写入的数据进行其他读取。 TR TR 木匠有一句名言A“金额是两次,见过一次。 ”的您可能听过中学木工老师的这句话。他可能错过了一根手指。我不想对此有所说明。这句名言仍然很合理。最好在切割前验证测量的准确性,因为错误的测量会导致生产浪费,例如切割出尺寸不合适的木材。当然,我们不会这样做。但是,我们要强调的是如何减少另一种浪费,即立即验证刚写入的数据。 TR TR TR 在过去的几年里,我们发现自己经常要求客户A“阅读和验证刚刚写好的数据,你觉得这有意义吗?””这个问题的速度让我们感到惊讶。有时,客户的理由是充分的,但他们都不同意我们的看法。通常情况下,顾客看起来就像当场被抓住的那种孩子,并且知道他做了他不该做的事情。故意回答答案的客户(虽然我们认为破坏价值)声称他们的应用程序需要绝对确保数据不仅仅是写入,而且还要正确写入。但请记住,我们的大多数客户都拥有SaS或业务平台。他们没有运行核电站,也没有将人类送到太空,他们也没有控制数千架客机的起伏或治疗癌症。对计算错误估计或误算的担心一直是开发人员额外时间的主要原因。这种恐惧在计算的早期阶段可能是合理的,而Tanden和  Stratus在Q世纪70年代末和80年代初期设计的容错计算机与这种恐惧有关。该系统的主要目的是减少系统的平均故障时间(MTTF)。使用的方法是“冗余一切”,即所有设备,包括CPU,存储,内存,内存路径和存储路径。冗余。此模型必须比较并行计算和存储系统的结果,以验证系统是否正常运行。本书的作者之一为长期存在的  Stratus小型计算机开发了应用程序。在他两年的工作期间,系统从未在两个处理器之间产生计算错误,也从未出现过。写内存或硬盘错误。 TRTR 现在,这种担心远远低于Q世纪70年代末和80年代初期。事实上,对于那些刚刚读取数据并将要执行读取操作的客户,当我们询问他们经常发现错误的频率时,他们的反应相当一致并且说他们从未找到过。问题是除非写入操作产生的错误数据的操作存在问题,否则它们永远不会发现错误。当然,数据损坏经常发生,但在大多数情况下,只能在实际写操作期间发现此数据损坏。不要投入两倍的工作量来减少存储,数据库和系统事务的数量,最好查看操作返回的错误代码并进行适当的处​​理。除此之外,防止数据损坏的最佳保护是在备用或复制存储设备上正确实现高可用性并保存多个数据副本。理想的情况是最终实现多个实时站点。 TR TR 当然,并非所有在写入后立即读取的操作都是由于过于谨慎的程序员试图验证刚刚写入的数据。有时,最终用户也可能请求刚编写它的人的数据。在这里,我们不禁要问A。为什么这些客户不在本地存储常用(包括书面)数据?如果你只是写一些数据,你可能会再次使用它,那么最好把它。在本地保存。一个常见的例子是许多产品的注册过程。通常,存在用户数据在被保存为永久注册记录之前呈现给用户的阶段。另一个例子是许多电子商务网站使用购物车实施的购买过程。在任何一种情况下,如果您正在编写的数据将来会被使用,最好将它们保存在本地。关于如何缓存以及要缓存的数据。 TR TR 前面讨论的重点是得出结论,重复操作会降低有效扩展的能力。实际上,它会使交易成本翻倍。因此,如果您的解决方案是规避错误写入操作所损失的数百万美元,则可能需要数千万个额外的基础设施来保护。根据我们的经验,即使您投资于编程时间和基础设施,也无法完全避免这种风险。在大多数情况下,读写操作并不好,因为它不仅使成本加倍,限制了可扩展性,而且也没有降低风险,因此成本与收益不相称。毫无疑问,可能存在需要这种操作的地方,但与许多技术团队和公司已经验证的最佳实践相比,这种情况很少见。 TRTR 细心的读者可能已经发现我们的原则存在冲突。需要在本地存储的信息代表状态,并且必须与服务器保持一致才有用。从宏观角度来看,我们同意这一说法,如果我们必须做出选择,那么我们将只开发无状态应用程序以确保不会有读写操作。这表明我们的原则是传统的,并且是“通常”而不是具体或“仅正确”。永远不要重复你的工作,你必须保持大型无状态应用程序。这两个陈述之间是否存在冲突?是。冲突可以解决吗?当然,如果我们要解决这一原则冲突,我们必须站在高角度。我们希望系统不浪费资源(例如写后读),并希望系统是无状态的。为实现这一目标,我们决定永远不会读取数据进行验证。我们也同意,为了加快和扩大,我们也希望保持密切的关系,而不是阅读只写人的数据。这意味着需要维护一些状态信息,但我们可以将其限制为某些需要读取我们刚写入的数据的事务。虽然这种方法与我们引入的原理相反,但如果它在有限的操作中引入状态也是可行的,从而降低了成本并提高了可扩展性。 TR TR 与所有原则一样,总有例外。如果您存在于受控环境中,则必须验证10096的写入数据,然后进行加密和备份。你该怎么办?我们不确定是否存在这样的环境,但如果存在,则必须满足其要求,例如,不能阻止读写操作。要在不阻止用户事务的情况下减少写入后的读写操作,下面列出了一系列问题以及您可以采取的步骤。 TR   管理要求/法律要求。管理层或法律是否要求采取此行动?如果是这样,你确定你理解正确吗?很少有请求明确说明您要对用户事务做什么。即使这样说,这些要求很少(并且可能从未)适用于所有操作。 TRTR 竞争性差别。这个动作有竞争力吗?请仔细回答,如果答案是“是”,则答案过于笼统而且通常是错误的。考虑到您的预期错误的概率非常小,您的竞争对手未执行第二次检查所导致的错误仅占所有错误的0.001%,因此即使您正确规避这些错误,也很难相信您可以征服对手。 TR TR 异步完成。如果您必须在管理要求(尽管可疑但仍然可能)或竞争差异(这无疑是不可能的)之后进行写入和阅读,那么请考虑它。 TR TR 在本地写入,不会中断事务。有很多方法可以在网站中创建错误。您可以通过日志重建数据,然后从处理队列重新执行它。最糟糕的情况是要求用户再次输入数据。发生这种情况的可能性非常小。如果在将数据复制到远程数据备份以获得高可用性的过程中发生故障,则只需要重新应用该记录或事务。在任何情况下都不应该中断用户事务,因为您希望同步向两个数据源写入数据。 TR TR
���ű�ǩ:

��һƪ: iis 安装准备

��һƪ: 积极利用日志文件