首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试系列-kafka消息相关机制

如:订单场景,要求订单的创建、付款、发货、收货、完成消息在同一订单下是有序发生的,即消费者在接收消息时需要保证在接收到订单发货前一定收到了订单创建和付款消息; 针对这种场景的处理思路是:针对部分消息有序...,有可能存在A发送失败,B发送成功,A需要重试的时候顺序关系就变成了BA,简之一句就是在发送B时A的发送状态是未知的; 针对以上的问题,严格的顺序消费还需要以下参数支持:max.in.flight.requests.per.connection...(在发送阻塞前对于每个连接,正在发送但是发送状态未知的最大消息数量。...,并且leader接收成功并确认后就算消息发送成功,但是这种情况如果leader接收成功了,但是follwer未同步时leader异常,就会造成上位的follwer丢失数据,提供了较好的持久性和较低的延迟性...,下次启动也会重复消费;生产者重复发送数据,消费者重复消费数据,这些都导致消息重复,那么避免重复也应该在消息的生产与消费来避免; 对于生产端: 每个分区使用一个单独的写入器,每当你发现一个网络错误,检查该分区中的最后一条消息

67710

Apache BookKeeper 一致性协议解析

写入存储节点失败简单可以分两种情况,如果还没有收到Qa 个数成功响应前,收到了错误响应(比如超时等),会立即执行 EnsembleChange。...如果已经收到了 Qa 个数成功响应(更新 LAC),后续的错误响应只会记录下失败 Bookie 节点,在下一次写入时再触发 EnsembleChange。...如果遇到无法恢复的状态码,就会直接往外层抛出异常。上层使用方比如 Pulsar 侧接收到这个异常后,会正常关闭当前 Ledger,然后创建新的 Ledger 继续写入。...,bookie1 未知回答, bookie2 未知回答,恢复失败,需要重试 需要特别注意,由于 LAC 非常重要,如果最终恢复的 LAC 小于实际 LAC,就会发生日志截断,相当于这段数据就丢失了。...这里有个前提条件,就是数据不能条带化写入,因为条带化写入会让数据分散到多台节点,单台节点内数据不连续,所以生产环境还是建议配置 E=Qw=Qa 。

6000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    测试思想-测试设计 接口测试用例设计实践总结

    ; 3、业务规则、功能需求 这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例 5、参数是否必填 逆向用例: 针对每个必填参数,都设计1条参数值为空的逆向用例 4、参数之间是否存在关联...有些参数彼此之间存在相互制约的关系 逆向用例: 根据实际情况,可能需要设计0~n条用例 5、参数数据类型限制 逆向用例: 针对每个参数都设计1条参数值类型不符的逆向用例 6、参数数据类型自身的数据范围值限制...正向用例: 针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例 逆向用例: 针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例 针对每个参数(...异常流测试用例:异常容错校验 4) 编写描述 尽量逻辑化,这样方便后续的维护 5) 实践操作 接口样例 获取订单列表接口(多条件) 获取店铺指定期间的所有订单列表(多种条件组合),默认根据日期倒序排序...,开发过程中,开发者肯定需要调用这些接口,如果类型错了,他们也就获取不到预期的数据,这些错误,他们肯定可以发现,所以,他们传递的参数值一般能保证类型正确。

    1.3K20

    接口用例规范与优化

    工具包 Http Client 客户端请求处理 用例层 :根据不同的业务场景,调用多个接口,组成一条测试用例。...比如:创建一条订单交易成功用例,则需要走的订单流程为创建商品—创建订单—订单支付—发货—确认收货 @Test(description = "单库存商品确认收货流程测试") public void createInfo2ConfirmReceipt...null:result.getOrderId(); } 原子层:与后端服务交互,接收第三方接口返回的数据,将返回数据进行上下文校验。...在测试过程中为了保证高效准确校验接口,返回数据是否是所期望的数据,根据这一诉求,在接口用例实现上下文校验的功能,实现原理是构造期望数据与返回值进行对比,用断言方式校验返回数据与期望值是否一致,出现数据不一致情况则抛出错误...异常校验:在接收接口返回的数据,有时会返回异常信息,比如:网络超时,库存不足等异常信息,针对这一情况,提出校验response内容的方法解决。下面是创建订单接口返回内容以及对返回信息校验。

    57920

    快递100快递实时物流快递查询接口API案例代码

    一、实时物流快递查询接口 1.1 请求地址 https://poll.kuaidi100.com/poll/query 1.2 请求类型 post 1.3 输入参数 请求参数(header) 名称...快递100的服务器出理间隙或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数没有按照文档规定填写等,也会报此错误 502 服务器繁忙...rel="nofollow noopener noreferrer">JAVA示例代码    php-demo..." style="color: #027eff;" target="_blank" rel="nofollow noopener noreferrer">PHP示例代码    <a...[产品介绍] 二、实时查询API应用场景 在电商网页/APP/小程序中,顾客在订单详情里查询购买商品的物流轨迹; 客服人员查看订单的实时轨迹情况,确保商品的发货状态正常; 企业邮寄礼品、文件等,业务人员根据单号追踪发货状态

    1.8K71

    快递100快递信息订阅推送API接口案例代码

    一、订阅接口 1.1 订阅请求地址 https://poll.kuaidi100.com/poll 1.2 订阅请求类型 post 1.3 订阅输入参数 请求参数(header) 名称...快递100的服务器出理间隙或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数写错等,也会报此错误...:autoCheck=1、comOld=原来的公司编码、comNew=新的公司编码);并且给贵方的回调接口(callbackurl)推送一条含有如下字段的信息:status=abort、autoCheck...如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃 returnCode 200: 提交成功 500: 服务器错误 其他错误请自行定义 message...信息推送服务是企业提交快递单号,快递100接收到后便对这些运单进行跟踪,当运单状态发生变化的时候,快递100便通过调用回调接口将运单的跟踪信息推送给贵公司,直到这些运单号的生命周期结束(一般以“已签收”

    1.5K51

    【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术

    地下室、室外等) 弱网状态,重复提交操作,会导致接口调用错乱、业务重复调用、业务出错等BUG 弱网状态,测试响应超时导致的接口报错等 弱网状态,测试延迟导致的页面交互错乱等 弱网状态,测试接口超时,导致的前后端异常问题...(状态变更错误、数据加减错误) 1、弱网下客户端要传参数给服务器。...、报错、溢出问题 2、假设因为BUG导致绑定了别人的卡,提现测试 3、假设列表数据10w条,大量数据测试 4、假设接口返回跳转链接字段空,点击跳转,APP闪退,需异常处理 接口应该返回: {"code"...,冲入和冲出账户回退检测 接口异常报错 1、接口报错500,前端处理检测 2、接口返回格式错误,前端处理检测 3、接口未获取到数据,前端处理检测 十二、SQL、代码注入 1、表单类注入 登录时SQL是这样...举例: 从参数注入,简单的测试方法是: ① http://www.xxx.com/index.php?id=2 ② http://www.xxx.com/index.php?

    1.8K31

    面试官:谈一谈如何避免重复下单?

    所以一个分布式系统接口,须保证幂等性。 二、如何避免重复下单 前端页面也可直接防止用户重复提交表单,但网络错误会导致重传,很多RPC框架、网关都有自动重试机制,所以重复请求在前端侧无法完全避免!...如支付之前记录一条这个订单的支付流水。 2.1.3 每次接收请求时,判断之前是否处理过 若有一个订单已支付,就肯定已有一条支付流水。...三、解决 ABA 3.1 什么是 ABA 如订单支付后,seller 要发货,发货完成后要填个快递单号。假设 seller 填个 666,刚填完,发现填错了,赶紧再修改成 888。...系统异常时 666 请求到了,单号更成 666,接着 888 请求到了,单号又更新成 888,但是 666 更新成功的响应丢了,调用方没收到成功响应,自动重试,再次发起 666 请求,单号又被更新成 666...页面在更新数据的请求中,把这个版本号作为更新请求的参数,带回给订单更新接口。

    72620

    psrlog日志记录库的通用接口

    github.com/php-fig/fig… composer require psr/log 日志接口规范 本文制定了日志类库的通用接口规范。...本规范的主要目的,是为了让日志类库以简单通用的方式,通过接收一个 Psr\Log\LoggerInterface 对象,来记录日志信息。...如果传入的等级常量参数没有预先定义,则必须抛出 Psr\Log\InvalidArgumentException 类型的异常。在不确定的情况下,使用者不该使用未支持的等级常量来调用此方法。...它可以装载任何信息,所以实现者必须确保能正确处理其装载的信息,对于其装载的数据,一定不能 抛出异常,或产生PHP出错、警告或提醒信息(error、warning、notice)。...return null */ public function error($message, array $context = array()); /** * 出现非错误性的异常

    83420

    掌握8条方法设计规则,设计优雅健壮的Java方法

    8条设计方法的规则,帮助开发者更好进行方法设计检查参数的有效性为了防止错误发生,方法中一般会对参数进行校验,比如ArrayList的构造和添加方法传入容量为负数会抛出非法参数异常IllegalArgumentExceptionpublic...,同时也可以在文档中说明哪样的参数是有效的如果不检查参数是否有效,可能在运行时抛出异常,也可能计算出错误结果导致排查时间久必要时进行保护性拷贝方法入参、响应的对象是可变对象时,如果方法中依赖这些对象,但在其他地方又对对象进行修改...,每个方法使用子集的参数减少参数列表过长也可以使用类包含所有参数或者结合前两种情况使用建造者builder4.定义参数类型为接口而不是类接口范围更广、通用性更好,比如能定义Map就不要定义HashMap...(@throws)总结方法中不检查入参会导致运行时异常或错误结果,考虑在方法中检查入参,增加代码健壮性依赖的可变对象逃逸被修改会导致错误结果,可使用不可变对象或保护性拷贝(入参、响应)解决设计方法时需要见名知意...、避免参数过长、定义参数类型为接口而不是类、boolean类型考虑泛型,并且API中不要追求大量便利的方法,这种方法应该在工具类中重载编译时就能够确定,为了避免转换类型调用错重载方法,可以使用具体类型命名的方法代替重载

    11321

    SRE-面试问答模拟-Linux与K8S

    HTTP错误码和原因常见错误码:404:资源未找到。500:服务器内部误。502:网关错误(通常是后端服务不可用或超时)。403:无权限访问。3....查看ifconfig或ip命令下的接口错误和丢包信息。使用tcpdump或wireshark抓包分析。10....MAC地址和IP地址的转换MAC地址是网络接口的物理地址,IP地址是网络层的逻辑地址。ARP协议用于将IP地址转换为MAC地址。18. 常见RAID类型和使用场景RAID 0:条带化,性能高但无冗余。...RAID 5:带奇偶校验的条带化,兼顾性能和冗余。RAID 10:条带化和镜像结合,性能和冗余兼具。19....消息具有类型,可以按照类型接收特定的消息。消息队列中的消息是有格式的,可以包含不同类型的数据。信号信号用于通知进程发生了某种事件。用途:用于异常情况的通知,例如非法内存访问、除零错误等。

    11710

    php 抛出异常使用场景

    致命或是可恢复性错误的抛出并不延伸自 Exception 类。这种分离是为了防止现存的 PHP 5.x 代码接收到的错误异常调用到终止程序。...此外,异常携带了栈中被创建的对象的信息。自定义类并未自动拥有保存信息的参数。...TypeError (类型错误) TypeError 实例化的抛出是由实参和形参 当调用函数时申明的形参和实参类型不一致(传入参数和方法中定义的参数类型不一致)将会抛出一个 TypeError 实例。...in PHP 7 } 3.PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别) 一句话总结: throwable接口+Error类 在PHP7更新中有一条:更多的Error...变为可捕获的Exception,现在的PHP7实现了一个全局的throwable接口,原来老的Exception和其中一部分Error实现了这个接口(interface),PHP7中更多的Error变为可捕获的

    1.9K30

    【实战】Tp5+小程序(三)--微信登录与令牌

    [微信内部错误/程序编写出错]的异常处理 // api/service/UserToken.php get() $wxResult = json_decode($result, true); if (...empty($wxResult)) { // 经验总结得:如果返回的结果为空[没有返回错误信息和错误代码],则是微信服务器接口的问题,直接抛出异常一颗 throw new \Exception...() // 4.3 写入缓存,并返回令牌 return $token; 3.异常处理类 3.1 微信内部错误[直接抛出异常] 3.2 微信接口调用出错[微信相关异常处理类 WechatException..., 所以,在接收客户端传入参数时,需要进行多余字段的过滤。...封装处理客户端传入的参数的方法,由于当前用户的信息是通过缓存获取的,为避免用户传入的参数造成错误修改,所以需要对客户端传入数据进行过滤, 如果携带用户 id 参数,则抛出异常,不再继续处理。

    8.7K52

    写了这么久的业务连异常都不知道怎么处理吗

    ,但是因为我不小心,导致忘记发汇率接口,然后就会出现一个问题,因为我汇率服务本身,里面是处理了异常的,就算我没有升级这个服务,你一样也可以调通这个服务,但是我会把我自己的异常转换成code,然后支付调用汇率这个服务...,所以那一次升级,就是因为这个逻辑导致了有6k多单的发货没有被发货,导致了这个事故,像上面这个问题,其实我们觉得我们不应该说帮人家去做决策,如果失败的话,我们不应该说给一个默认值,而是抛异常出去才对,这才是正确的做法...我们还有很多不足的地方,延迟发货的告警没有告,调用汇率接口失败了,也没有告警,而是把原生的错误转换了等等。...不过我们还是先来了解下Java的异常体系吧! image.png 什么是异常 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。..."), INVALID_USER(1001, "用户名或密码错误"), INVALID_REQ_PARAM(1002, "参数错误"), EXAM_NOT_FOUND(1003,

    30510

    PHP笔记 | 异常处理

    抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性, PHP代码中的异常通过throw抛出, 异常抛出之后,后面的代码将不会再被执行。...既然抛出异常会中断程序执行,那么为什么还需要使用异常处理? 异常抛出被用于在遇到未知错误, 或者不符合预先设定的条件时, 通知客户程序,以便进行其他相关处理,不至于使程序直接报错中断。...基本语法 try{ //可能出现错误或异常的代码 //catch表示捕获,Exception是php已定义好的异常类 }...检测数字(输入参数)是否大于 1。 如果是,则抛出一个异常。 在 "try"代码块中调用checkNum()函数。...checkNum()函数中的异常被抛出 "catch"代码块接收到该异常, 并创建一个包含异常信息的对象 ($e)。

    1K30

    CodeReview常见代码问题

    常见错误有: a. 值为NULL导致空指针异常; b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。...未捕获潜在的异常 第二个容易出错的地方是未捕获潜在的异常。调用API接口、库函数或系统服务等,只顾着享受便利却不做防护,常导致因为局部失败而影响整体的功能。最好的防护依然是“防御式编程”。...可以使用公共文档维护, 也可以开发错误码管理系统来避免相同的错误码。 参数检测缺乏或不足 参数检测是对业务处理的第一层重要过滤。...同样,当 Java 调用 PHP 接口时, 不规范的PHP接口既可能返回列表,也可能返回 true or false , Java 解析返回结果也会比较尴尬。...无需物流是针对快递发货的, 如果快递发货占发货的90%, 无需物流只占10%,那么, isNoExpress = false 几乎总为真。 涉及到判断的时候,可能不得不写 if (!

    95800

    技术积累 - 代码问题及对策

    常见错误有:a. 值为NULL导致空指针异常;b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。...未捕获潜在的异常 第二个容易出错的地方是未捕获潜在的异常。调用API接口、库函数或系统服务等,只顾着享受便利却不做防护,常导致因为局部失败而影响整体的功能。最好的防护依然是“防御式编程”。...可以使用公共文档维护, 也可以开发错误码管理系统来避免相同的错误码。 参数检测缺乏或不足 参数检测是对业务处理的第一层重要过滤。...同样,当 Java 调用 PHP 接口时, 不规范的PHP接口既可能返回列表,也可能返回 true or false , Java 解析返回结果也会比较尴尬。...无需物流是针对快递发货的, 如果快递发货占发货的90%, 无需物流只占10%,那么, isNoExpress = false 几乎总为真。涉及到判断的时候,可能不得不写 if (!

    91640

    RxJS 快速入门

    不仅如此,有时候我到底需要串起多少个 Ajax 请求是未知的,要串起哪些也同样是未知的。这已经不再是地狱,而是《Mission: Impossible》了。...你去电商平台下单,并付款 平台会给你一个订单号,这个订单号本质上是一个回执,代表商家做出了“稍后我将给你发货”的承诺 商家发货给你,在这个过程中你不用等待(异步) 过一段时间,快递到了 你签收(回调函数被调用...圆圈的最后,通常会有一条竖线或者一个叉号。竖线表示这个流正常终止了,也就是说不会再有更多的数据提供出来了。而叉号表示这个流抛出错误导致异常中止了。...它接收任意多个参数,参数可以是任意类型,然后它会把这些参数逐个放入流中。 from - 数组转为流 ? 它接受一个数组型参数,数组中可以有任意数据,然后把数组的每个元素逐个放入流中。...debounceTime 就是这样,你传入一个最小平静时间,在这个时间窗口内连续过来的数据一概被忽略,一旦平静时间超过它,就会往把接收到的下一条数据放到流中。

    1.9K20

    PHP高性能纯协程网络通信引擎Swow

    你无需再为未捕获的异常殚精竭力,也不要再去捕获Throwable,遇到未知的错误请Let it crash。...PHP可编程性 最小C核心意味着底层不再包揽所有事务,而是仅提供最细粒度的基础接口,即扩展层不再像是一个框架(framework),而更像是库(library),这将使PHP的编程能力最大化。...拥抱异常 Swow在错误处理方面和PHP的改革理念也是一致的,PHP8干掉了大量的notice、warning、error,转而使用基于异常机制的Error/Exception,极大地增强了程序的健壮性...曾经我们要求开发者在每个IO操作后检查返回值,否则程序就可能陷入非预期的错误状态中,这样的编码方式,无异于是一种历史的倒退,干掉if ($err != null),拥抱异常机制,才是正确的发展道路。...或是用不超过一百行代码写出一个百K级QPS的 HTTP + WebSocket 混合服务器,整个示例纯同步、零异步回调,还通过异常捕获很轻松地处理了各种错误情况。

    26110
    领券