记提高服务接口可用性稳定性注意事项总结三石雨

参数定义:定义具有明确含义的参数名称,实际情况中发现竟然还有o、p的参数。

参数的类型:每一个参数明确的数据类型,不要清一色的String而尽量给每一个参数定义不同合适的数据类型,避免api方法的误用和减少了数据类型的转换。

参数的数量:服务接口api中参数个数不宜太多,如果个数太多那就建议使用参数类吧。在实际情况中有七八个参数,使用参数类是不是清爽的很多。

2、服务接口api良好的使用说明

参数的使用说明就不再赘述了。着重说下下面情况:

参数有传参中文:某些情况下我们的接口会传参中文,中文参数就会有编码要求UTF-8,GBK,如果不约束具体的编码,可能接口就会有乱码甚至保存异常。如ERROR1366(HY000)

有分页:定义好默认一页记录数,还是允许使用方自行定义返回记录数。根据业务场景还是要约束一页记录数,避免数量过大而影响性能。

因此我们要对接口api制定详细的良好的使用说明。

3、服务接口api异常信息

明确详细的异常信息在调试api快速定位解决问题的利器了,因此我们必须设计良好的异常信息,以便自己记录和提供给使用方参考。

为了服务接口的安全,我们都会把参数做校验及转换。如参数id是整型类型的id=81我们就会做整型类型的校验,如果不是整型的就会返回参数id必须是整型的提示信息及自定义的错误代码。

在内部处理业务逻辑时,如果出现异常我们也要将记录相应的异常信息及自定义的错误代码,而不能只给使用方提示服务器发生错误这样信息。估计看到这样的信息会抓狂,我们的目的是当使用方拿到错误代码对照接口api使用说明就会很快定位到问题所在。

我们可以定义异常信息格式:

{"requestId":1001,"code":1024,"message":"ParamtersValidationFailed","errors":[{"code":5432,"field":"tkey","message":"Requiredargumenttkey:expect[type:java.lang.String]"},{"code":5622,"field":"token","message":"tokencannotbeblank"}]}4、服务接口api粒度

在设计接口api时,api粒度不宜过细也不宜过粗,根据具体的业务逻辑进行设计。过细的话不仅api性能差也会徒增服务器压力。如获取某个专辑信息及其中的视频信息,我们实际中只有获取某个专辑信息的接口和专辑中的视频信息的接口。和同事讨论才得知当时按照“单一职责”原则进行设计的。能够按照“单一职责”原则进行设计固然是好,但是也不能太死板应该在原则下灵活变通。现在我们在增加一个接口api(同时返回某个专辑信息及其中的视频信息)性能是不是会优于上述两种接口组合使用哪?

5、服务接口api版本演进或版本控制

随着业务的发展,老的接口api已不能满足新的业务逻辑,此时是改造老的接口还是增加新的接口?如果在老的接口中进行改造来支持新的业务逻辑,但是不得不维护老的业务逻辑,无形中增加工作量和难度。实际中我们可以新增加接口api,老的api和新的api同时提供服务,然后将老的api平滑过度到新的api。

我们可以定义api版本格式

/ms/api/v2/...6、服务接口api业务功能降级

我们就可以有以下的处理思路:

7、服务接口api限流

服务接口api的降级和限流都是流量控制的处理策略,同时也是系统的自我保护策略。虽然牺牲了一部分业务功能和高并发量,但换来的系统的可用性。

三、依赖于第三方服务接口场景

如果超时就应该断掉请求连接,把业务处理的线程让给别的请求,加快处理同时也减轻了所依赖服务的压力。

2、合理使用重试机制

根据所依赖服务接口返回的信息合理的使用重试机制,如果所依赖的服务返回业务处理异常在使用重试机制也毫无意义,只会徒增所依赖服务器的压力。

3、异步调用服务接口

4、依赖服务接口

如果所依赖的服务接口crash,那么自己的服务接口也无法正常提供数据。

根据依赖的服务接口数据的时效性,做出相应的处理策略:

b、数据时效性非常高,对于这种情况---痛点。如果您有好的处理策略请指点。

四、接口调用过程异常处理

1、接口调用过程异常原因

a、网络通讯错误

a、系统错误

服务应用在处理内部逻辑时出现了无法控制的错误,常见场景:

一般这种错误,采用重试机制就能很好得到解决。

b、业务错误

调用方传递了违背业务规则的参数从而导致了业务处理失败。

2、接口调用过程异常处理

这个异常主要用于收缩和屏蔽服务层的具体错误信息,当服务端遇到无法处理的错误情况时,需要继续向客户端外抛,让客户端来择机进行重试。客户端亦可通过SelfException快速判断当前业务中断的原因来自于SelfService的失败。

我们可以在返回的结果中增加isReTry,来告诉调用方服务接口是否需要重试机制。

五、总结

合理的服务接口设计和良好的服务接口使用,都会提高服务接口可用性和稳定性、易用性、健壮性。

THE END
1.产品说明书注意事项(精选8篇)(2) 动力与工作装置连接时, 若配套动力为电动机:动力与机具连接部分必须安装防护罩;若配套动力为柴油机或各种型号四轮拖拉机, 机具部分必须加防护罩, 动力部分无法防护时, 在使用说明书安全注意事项中, 应提醒用户自行安装防护罩或到生产企业加工防护罩, 严禁无防护罩作业。 6.安全标志、标识等 (1) 使用机器前https://www.360wenmi.com/f/filef433my2e.html
2.产品说明书注意事项(全文)第一篇:产品说明书注意事项产品说明书)篇一:产品使用说明书(范例) xxx化工有限公司 xxxx使用说明书图片已关闭显示,点此查看产品名称:产品编号:用途:参阅产品安全资料 施工方法:参阅产品安全资料 公司https://www.99xueshu.com/w/y03mmb6buuvz.html
3.iperf工具使用总结iperf 工具使用总结 简介: 转载请注明出处: iperf是一个用于测量网络带宽的工具,可以通过客户端和服务器之间的数据传输来评估网络性能。下面详细介绍iperf的使用方法、常用命令和参数以及注意事项,并提供一些示例说明。在iperf中,流量测试通常使用TCP或UDP协议。https://developer.aliyun.com/article/1573957
4.牛免疫球蛋白G(IgG)酶联免疫检测试剂盒使用说明注意事项: 从2-8℃取出的试剂盒,在开启试剂盒之前要室温平衡至少30分钟。酶标包被板开封后如未用完,板条应装入密封袋中保存。 各步加样均应使用加样器,并经常校对其准确性,以避免试验误差 严格按照说明书的操作进行,试验结果判定必须以酶标仪读数为准. https://www.antpedia.com/news/90/n-2520190.html
5.天际降药品说明书应用在开始利妥昔单抗治疗前,通过测量 HBsAg 和抗 HB 筛查所有患者的HBV 感染情况(见[警告]和[注意事项])。首次给药前检查全血细胞计数(CBC),包括血小板。在利妥昔单抗治疗期间每隔 2-4 个月检查 CBC 及分类计数和血小板计数末次给药后继续监测血细胞减少,直至消退。 https://ypsm.yzsbh.com/drugFilter.action?interId=Y00000013069
6.32位和64位编程注意事项总结江阴雨辰互联将32位代码向64位平台移植的注意事项 新近的64位平台在二进制上与32位应用程序兼容,这意味着可以非常简单地移植现有的程序。许多目前在32位平台上运行良好的程序也许不必移植,除非程序有以下要求: ·需要多于4GB的内存。 ·使用的文件大小常大于2GB。 https://www.yc00.com/web/1691896694a549886.html
7.品味树莓派:GPIOZero库使用入门gpiozero基础说明 入门使用 LED PWMLED Button 更多入门例程 类基础说明 注意事项 总结 目的 树莓派有很多GPIO口可供用户使用,官方同时也提供了一些方式来操作这些IO口,其中目前主要推荐的是基于Python的GPIO Zero库,本文将简单介绍该库的基础使用方法。 基础说明 https://blog.csdn.net/Naisu_kun/article/details/105288110
8.工厂车间现场管理,简直全面得不可思议发出号令,集合人员; 人员报数点到(通过报数声音确认人员精神状态); 总结昨天的工作; 传达今天的生产计划和基本活动,说明注意事项; 公司指示事项的传达; 人员工作干劲的鼓舞; 宣布作业的开始 尤其是班组内有轮班或上班时间不一时,就特别要把晨会事项 传达到下一班组。https://www.meipian.cn/1klt7cyz
9.前端边角料微信公众号开发中常见的目录配置总结使用说明:设置使用说明:设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口。 配置步骤 确保需要填写的域名已通过 ICP 备案 将微信平台提供的 txt 文件放置在域名所在的服务器根目录下,保证可以访问 填写不带协议头的域名或路径 官方示例如下: 注意事项 https://juejin.cn/post/6863301900947849230