分布式系统中的代码检查清单

sanja



Microservice体系结构的观点在软件开发中很普遍。但是,使用它的组织除了在实现业务逻辑方面的困难外,还面临着分布式故障。



分布式计算错误已得到充分记录,但难以检测。结果,构建大规模且可靠的分布式系统架构成为一个复杂的挑战。一旦进入网络,在单片系统上看起来不错的代码可能会成为问题。 Mail.ru云解决方案



团队翻译了一篇文章,该文章的作者多年来一直参与检测生产代码中的典型故障,并研究了导致该结果的原因。本文提供了代码审查指南,作者将其用作基本清单。



远程系统出现故障



无论系统设计得多么认真,它都会在某个时候失效-这是软件投入生产时的事实。



失败的发生有多种原因:错误,基础架构问题,突然的流量激增,疏忽大意,但它们几乎总是发生。整个体系结构的健壮性和可靠性取决于调用模块如何处理错误:



  1. . . , , . — . , .
  2. . , . ? ? , ? ? .




这种情况比完全崩溃更糟,因为不知道远程系统是否正在运行。因此,要处理这种情况,您应该始终检查以下问题。



使用Service Mesh技术(例如Istio)可以透明地解决应用程序代码中的某些问题。但是,您需要确保无论使用哪种方法都可以处理此类问题:



  1. 设置远程系统调用的超时这也适用于远程API和数据库调用,事件发布的超时。检查是否为呼叫中的所有远程系统设置了拖尾和合理的超时。这样可以避免在远程系统无响应时浪费资源等待。
  2. -. , — . , .



    , - (, ). , , . — , .
  3. (Circuit Breaker). , , Hystrix. . , Circuit Breaker . — .
  4. - . - — , . , . , -. , .
  5. . , . , , .
  6. . , ( API, ), — . : , , . .


,



  1. , API . - API. , API . API API, — .
  2. SLA — . SLA , . , .



    SLA : — . , SLA. — , , .
  3. API-. SLA — SLA.
  4. . — , . , , , . .



    — «» , «» . , id = 123, id =123. , «» , « ». .




  1. . , , . , Redis, . , .
  2. . API (), ? , , ? API ?
  3. . , , , . . . , , . . .




  1. 在每个入口点检查输入。在分布式环境中,从安全角度来看,系统的任何部分都可能受到损害或存在错误。因此,每个模块都必须检查它在输入中收到的内容。并且不要假设它将收到干净的,即安全的输入。
  2. 切勿将凭据存储在代码存储库中。这是一个非常常见的错误,很难消除。但是,凭据应始终从外部(最好是安全的)存储加载到系统运行时中。


我希望您发现这些准则有助于减少分布式系统代码中的常见错误。



祝好运!



还有什么要读的:



  1. , : .
  2. -Agile .
  3. .



All Articles