打破了vs你错了

为微服务构建REST API时,需要做出一些关于响应的设计决策。 某些响应显然是微服务周围协议的产物–例如3xx代码之类的东西都与重定向和路由有关。

通常,您将尝试获取正确的2xx代码以取得成功。 如有疑问,将为200(确定),但对于打算创建数据的请求,请考虑201(已创建),对于将在以后处理的请求,请考虑202(已接受)。

在本文中,我想讨论用于错误的4xx和5xx响应。 我还要考虑您的服务是否将尝试容忍下游错误。 您希望软件变得越复杂,内部异常就越精确。

确切地说,我的意思是简单。

笨拙的异常处理策略最终将导致艰苦的工作来应对所有用例。

简化简化简化

此刻,每当我被要求对微服务中的异常和错误提出意见时,我都会回答相同的答案。

有两类错误的...它出了问题,或者你就错了。

你错了

客户端错误最容易检测,需要与响应代码一样精确的错误处理。 通常,404错误并不是真正的例外,就如同返回零结果一样。 对于其他错误,您基本上得到了:

  • 安全违规,在处理请求之前应在适当的框架中进行检查
  • 无效的请求-通常是畸形的身体

容易忘记,如果随机的Json解析异常发生在正确的层则可以简单地将其归类为您错了。

一旦知道了要尝试证明的简单分类,就可以轻松地了解要做什么和要测试什么。

错了

这些错误分为两类:

  • 我的算法无法解决这种情况-对不起
  • 某些下游服务无法正常工作

在这两个中,后者可能有一些变体,其中需要对错误应用重试策略,以便在给我们之前再次提出请求,从而避免出现网络故障,或者避免与多个相关服务进行某种机会游戏,目前其中任何一个都可能会出现故障。

提示:如果要获得回应就像Yahtzee的游戏一样,则需要添加一些重试,并且这些重试应该在明确定义的可重试范围内, 出错了。

如果您的重试策略错误,它将重试以下内容:

  • 我的算法无法应付
  • 该请求永远不会有效

当然,生活中的事物不可能是二进制的吗?

有两种类型的人。 有人认为一切都是二元选择,然后还有其他人……

从标题的二进制选择开始是一个很好的/强烈的起点。 然后在必要时将每个类别分为子类别,可以帮助您处理特定的细微差别。

到目前为止,这对我们有用。

您可以逐步建立。

有两种类型的人员:懂得如何逐步构建事物的人员,以及……我将在另一天告诉您另一种类型的人员。

翻译自: https://www.javacodegeeks.com/2020/03/it-broke-vs-youre-wrong.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php魔术变量的概念_PHP 魔术变量和魔术函数详解

魔术变量PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变。…

android studio on/off 切换开关,如何使用android studio中的开关小部件来启用/禁用函数()?...

试试这个:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JRadioButton;public class test {public static volatile boolean activated false;public test() {JFrame q new JFrame();q.…

javabeans_(单元测试)JavaBeans的技巧

javabeans如果您正在编写Java代码,那么您至少要编写一些遵循JavaBean约定的类,即,具有带有公共getter和setter方法的私有属性的类,包含无参数的构造函数,可序列化,并且遵守Equals和HashCode合同。 最重要的…

8分钟答辩稿_5分钟学会8个答辩小套路,教资面试没在怕的啦!

注意!1.笔试成绩查询时间官方给出的时间是12月10日,但是根据往年情况,一般时间都会提前,12月9日下午极有可能开通查询,所以大家要准备好哦~现在进入教资【成绩查询微信群】,老师都会第一时间发布通知&#…

android lable标签,android:label说明

文章目录1. 说明android:label 用于app 在切换activity的时候,自动更换左上角的显示2. 代码架构3. String.xml 字符串资源文件My Application主界面 labsecond 界面 lab4. AndroidMainfest.xmlpackage"com.example.myapplication">android:allowBackup"true&…

Neo4J OGM与Quarkus

在下面的视频中,我演示了一个使用Neo4J数据库和Neo4J OGM的Quarkus应用程序示例。 看一下GitHub上的示例项目 。 我为咖啡豆创建了一个示例域,其中包含我们可以查询和匹配的某些风味配置文件。 红色节点是来自某个国家/地区的咖啡豆,味道像…

鸿蒙os内测版应用名称,谁知道报名鸿蒙系统公测,应用名称怎么填的?

[分享交流]谁知道报名鸿蒙系统公测,应用名称怎么填的?92209电梯直达huafen327001442初窥门径发表于 2020-12-18 21:17:21来自:HUAWEI Mate 30 Pro 5G最新回复 2020-12-26 21:47:39Screenshot_20201218_210913_com.tencent.mm_edit_1719993392…

命令模式应用_命令设计模式的应用

命令模式应用嗨,您好! 今天,我将与您分享一种非常出色的编程设计模式。 它有很多用法,是我的最爱之一。 编程设计模式命令具有多种用例。 在这篇文章中,我们将看到如何实现来自现实世界的东西。 我们将使用电子汽车钥…

Java XMPP负载测试工具

在本文中,我们将开发用Java编写的XMPP负载测试工具。 目录 1.简介 2. XMPP负载测试工具 3.先决条件 4. LoadXmppTest Java程序 4.1。 创建一个新的Maven项目 4.2。 创建主类 4.3。 XmppManager类 4.4。 建立 4.5。 负载测试 5.总结 6.参考 7.下载Maven项目 1.简介 …

android sdcard 压缩图片,android如何往SDCard中存取图片

import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.graphics.Bitmap;import android.os.Environment;import android.util.Log;/*** 保存图片的类***/public class SaveBitmap {private f…

python get()函数_C++使用ffpython嵌入和扩展python(python2和python3)

C使用ffpython嵌入和扩展python(python2和python3)摘要:在服务器编程中,经常会用到python脚本技术。Python是最流行的脚本之一,并且python拥有定义良好的C API接口,同时又有丰富的文档,与C结合非常的适合。…

c# opencv 轮廓检测_C#中OpenCVSharp实现轮廓检测

OpenCv提供了函数 findContours()用于对物体轮廓进行检测,该函数实现算法是由S.suzuki K.Abe于1985年发表的。OpenCVSharp封装了这个函数,有2个参数(contours,hierarchy)要做特别的说明。public static void FindContours(InputOutputArray i…

鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...

本帖最后由 一梦盛夏 于 2020-12-2 17:33 编辑这篇文章可能会颠覆你的想象,挑战你的认知,请耐心阅读。今天不说专业术语,全部用比喻方式来聊,这样会更明白一些,也欢迎大家一起来讨论。首先,我们先聊聊何为鸿…

linux nat冲突,Linux系统下的NAT及防火墙的混合应用

2011-11-28 13:03朋友你好!我刚开始搞linux,碰到了很多问题,想问你下,希望能帮我解答下。下面是我的一段shell 程序#!/bin/shwhile [ 0 ]doread scoreif [ $score -lt 60 ];thenecho " you must work hard!"…

外贸常用术语_13个常用的国际贸易术语详解

原标题:13个常用的国际贸易术语详解做外贸的我们一定要详细的了解外贸运输术语的含义,每一个术语买卖双方所需承担的责任与义务。这样能够更好的区分买卖双方该承担履行的责任与义务。很多时候我们只是知道我们日常经常用到的,其他的还是不是…

卡夫卡–一次语义学

在分布式环境中,故障是很常见的情况,可以随时发生。 在Kafka环境中,代理可能会崩溃,网络故障,处理故障,发布消息时失败或无法使用消息等。这些不同的场景引入了不同类型的数据丢失和重复。 失败场景 A&am…

android 打印机蜂鸣器,CANON喷墨打印机 蜂鸣器响5声不打印的问题解决办法

CANON喷墨打印机 蜂鸣器响5声不打印的问题解决办法通常我们如果遇到CANON打印机蜂鸣器响5声即表示废墨仓满,一般都可以通过按键且使用02、03、05墨盒的机型按下面方法操作:同时按住左、右两键,插入电源,然后松开两键;按…

python病毒usb文件自动安装_win7禁USB自动安装驱动功能避免木马病毒入侵

用户在限制USB设备使用方面,首先考虑的就是禁止其自动播放,以避免木马病毒入侵,但很多时候,这样的方法并不是很有效。如果你是Win7用户,那就可以通过它独有的“权限控制”技术,从源头上控制USB设备的自动运…

java错误代码典型案例_Java代码中的典型错误

java错误代码典型案例该页面包含在与我一起工作的人的Java代码中看到的最典型的错误。 静态分析(出于明显的原因,我们使用查询无法捕获所有错误,这就是为什么我决定在此处列出所有错误的原因。 如果您要在此处添加其他内容,请告诉…

tinymce vue 部分工具不显示_tinymce-vue使用问题及解决记录

一、本地图片上传:1.转成base64,转换后的字符粘贴到notpadd中看了下,有近20万个字符,所以直接没考虑2.选择图片后调用后台方法传到服务器,保存后返回一个网络地址,传入success的回调方法,通过网…