短答:给每个浏览器取取一个请求ID,在标准HTTP头中携带到后端,并在两侧结构化日志中放出相同的ID.
将定价决定本身保留在带有明确评价ID的旗帜后,因此可以验证回滚而不是猜测.
浏览器是第一个审计表面 推出新的定价规则 在一款 Edtech app 听起来像一个特性旗的任务。
从操作上看,这是资金的追踪问题。
学生在浏览器中看到价格,前端调用取出后端,后端在写出订单前评价一面旗帜.
当这些事件无法合并时,回滚就变成了一场辩论,讨论的是哪项要求产生了什么代价。
我因失职和重复送货而被调用 同样的故障模式出现在这里:一个仪表盘上说系统是健康的,但个人提出的重要事项很难重建的要求.
申请身份证不能证明价格是正确的 这使得证据可以合并.
最小的有用合同是直截了当的: 浏览器为每次外出获取创建非秘密请求ID.
ID在(或团队所选择的等同标题)中出行.
服务器验证或替换错误的值,然后记录接受的值.
申请的每个日志记录包括身份证、路线、结果和期限。
一个单独的旗下评价ID识别出定价决定及其规则版本.
不要在请求的ID中放入用户邮件,信使或价格.
这是一种相关的关键,而不是授权机制或商业记录.
前端和后端日志如何与浏览器获取请求ID关联?
浏览器和服务器需要共享边界,而不是共享日志库.
对于一个JavaScript或Node.js应用程序,取回包装器在发送请求之前应当生成一个ID并附加到信头上.
节点(Node.js)服务应该读取HTTP边缘的该页眉,绑定它以请求上下文,并将其列入之后的每一个日志事件.
确切的语言是次要的;传播规则是重要的部分。
这是Go的服务器侧形状.
它只在检查了它的大小和字符集后才接受一个呼叫者提供的ID.
在使用可信赖的网关的部署中,网关可能建立值取而代之;应用程序仍然需要明确的所有权规则,所以两层不会沉默地不同意.
回复信头在回滚调查中很重要 支持工程师可以从浏览器网络记录中复制ID,然后在不要求客户重复购买的情况下搜索服务器日志.
反应不应暴露内部旗帜规则或其他敏感的诊断领域。
该例子故意将国旗决定与运输ID分开.
一个请求可以发出多个内部呼叫;一个定价决定可以记录一次,并有稳定的评价ID.
如果这两个识别符被拼接,重复和扇出变得难以解释.
事件合同是持久的边界 一个有用的事件足够小 足以查询 足够丰富 足以解释一个决定。
至少记录请求ID,时间戳,服务或浏览器组件,路由名称,状态类,持续时间,以及结果类.
对于定价路径,要添加旗下密钥,评价ID,规则版本,分组标签,以及响应是引出还是承诺命令.
将调查不需要的识别资料搁置或略去。
记录改变操作意义的过渡。
在浏览器中查看的引文不是后端执行的命令 。
将两者记录在一个请求的ID下并不等于是同一事件;它只让调查人员看到他们的关系.
四个金色信号是有用的起步镜头:活度,流量,出错和饱和.
关联性将镜头从整体健康扩展至一项交易。
例如,如果请求以错误的决定返回成功的答复,低出错率可以与不良的旗帜规则并存.
这就是为什么回滚显示器应该比较