近日我司进行云服务商更换,恰逢由我负责新上线的三方调用 api 维护管理,在将服务由阿里云部署到腾讯云过程中,我们压测发现在腾讯云调用京东接口时 TP999 抖动十分剧烈,尽管业务层有重试操作但是超时依然较多,并不满足业务要求-- 接下来针对过程中发现的种种问题我们便踏上了优化之路. 开端 那还是普通的一夜,突然群里蹦出一些报警消息,多条业务线调用外部 api 超时,dubbo 线程池数量不足,还好很快服务恢复了正常,不过这也为我提了个大醒,我维护的服务作为业务调用的聚合出口,一旦服务发生异常将…
幂等 当涉及业务数据的变更,不是简单的数据查询时, 在调用方相同条件有效重复请求时,就需要保持业务系统数据之间的一致性,不管请求多少次都会返回相同的结果. 比如一个订单支付接口,第一次请求返回支付成功,即使后面的请求没有实际的支付行为,也应该返回查询到的支付成功的结果.如果拦截并抛出异常,就可能造成一端支付失败,一端支付成功的情况:如果第一次返回支付失败,就不需要幂等,因为支付失败在该业务场景下是无效的. 如何确定是相同的请求重复发送,就需要调用方带上一个请求的唯一标识,如订单号,数据库主键,或…
概述 API 是一个服务的门面,就像衣装是人的形象一样. 优雅的 API 设计,能让业务方使用起来倍儿爽,提升开发效率,降低维护成本:糟糕的 API 设计,则让业务方遭心,陷入混沌. 本文将展示一个扩展搜索 API 的优化过程,从中也可以学到一些东西. 现状 找一个上游工程的扩展搜索代码如下: extendKeywords.add((EsCondition) ConditionFactory.in("order_tags", Arrays.asList("IS_XXX_ORD…
if  c++==python:(869710179) 2013-7-6 10:21:31 计算机本来就是用命换的行业 爱笑的眼睛(373213735) 2013-7-6 10:21:55 if  c++==python:(869710179) 2013-7-6 10:22:10 说不定那天就被累死了 保腚-范德萨(747350816) 2013-7-6 10:26:06 最惨的是一上30多岁,一旦要是换工作,就不好办了 横瓜(601069289)  11:26:54 计算机本来就是用命换的行业…
最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生相当大的优化结果.根据经验数据一般不做任何优化,接口的可用性在95%左右.举个例子,广告接口的可用性直接决定了收入,那么丢失的5%收入如何捡回来,对一家收入还不错的公司来说,是一件非常重大的事情.例如日营收1亿+的百度. 造成这样的主要的原因有两大块 1. app端网络状况并不好 即便是wifi条件…
我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https://github.com/dingo/api/wiki. The Dingo API package is meant to provide you, the developer, with a set of tools to help you easily and quickly build your…
首选我们看看api定义: http://open.taobao.com/api.htm?docId=38078&docType=2&scopeId=14474 注意下span这个参数 订单查询时间范围,单位:秒,最小60,最大1200,默认60,仅当查询常规订单,及三方订单时需要设置此参数,渠道,及会员订单不需要设置此参数,直接通过设置page_size,page_no 翻页查询数据即可 意思就是最多一次只能查询20分钟的订单, 可能考虑到服务器压力之类的吧. 远不如之前的接口 时间任意,…
在API优化list中,公司客户系统的服务号客服有个获取聊天消息的接口getHistory请求时间很长,就去优化了下,记下过程. 一,配置环境,追踪使用Xdebug: 1.在https://xdebug.org/下载安装 2.修改php.ini,添加: [Xdebug] zend_extension=/alidata/server/php/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so xdebug.default_enable=on…
查看mysql server超时时间: MariaDB [(none)]> use xspeeder; MariaDB [xspeeder]> show global variables like '%timeout%'; +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | connect_timeout | | | dea…
router.get('/api/tags/search/:list/:key/:page', function(req, res) { if(_.isEmpty(req.params.key)) { res.json({items:null}); } else { var key = urlencode.decode(req.params.key); var page = parseInt(req.params.page); if(!page) page = 0; var filter = {…