接口设计需要考虑哪些方面
2019独角兽企业重金招聘Python工程师标准>>>
接口设计需要考虑哪些方面
1.接口的命名。
2.请求参数。
3.支持的协议。
4.TPS、并发数、响应时长。
5.数据存储。DB选型、缓存选型。
6.是否需要依赖于第三方。
7.接口是否拆分。
8.接口是否需要幂等。
9.防刷。
10.接口限流、降级。
11.负载均衡器支持。
12.如何部署。
13.是否需要服务治理。
14.是否存在单点。
15.接口是否资源包、预加载还是内置。
16.是否需要本地缓存。
17.是否需要分布式缓存、缓存穿透怎么办。
18.是否需要白名单。
当我们设计接口,我们或多或少都会有上面列举的一些考虑,我们只有想的更多才能让让我们的接口更加完善,我个人觉得100%完美的接口是不存在,只有适合才是最重要。
接口设计原则
原则一:必须符合Restful,统一返回格式,约定业务层错误编码,每个编码可以携带可选的错误信息。
原则二: 命名必须规范、优雅。
原则三:单一性。
单一性是指接口要做的事情应该是一个比较单一的事情,比如登陆接口,登陆完成应该只是返回登陆成功以后一些用户信息即可,但很多人为了减少接口交互,返回一大堆额外的数据。
比如有人设计一个用户列表接口,接口他返回每一条数据都是包含用户了一大堆跟另外无关的数据,结果一问,原来其他无关的数据是他下一步想要获取的,想达成数据的懒加载。
原则四:可扩展。
接口扩展性,是指设计接口的时候多想想多种情况,多考虑各个方面,其实我觉得单独将扩展性放在这里也是不妥的,感觉说的跟单一性有点相反的意思,其实这个不是这个意思。
这边的扩展性是指我们的接口充分考虑客户端,想想他们是如何调用的,他要怎样使用我的代码,他会如何扩展我的代码,不要把过多的工作写在你的接口里面,而应该把更多的主动权交给客户程序员。
如获取不同的列表数据接口,我们不可能将每个列表都写成一个接口。 还有一点,我这里特别想指出来的是很多开发人员为了省事(姑且只能这么理解),将接口设计当成只是 app 页面展示。
这些人将一个页面展示就用一个接口实现,而不考虑这些数据是不是属于不同的模块、是不是属于不同的展示范畴、结果下次视觉一改,整个接口又得重写,不能复用。
原则五:必须有文档。
良好的接口设计,离不开清晰的接口文档表述。文档表述一定要足够详细
原则六:产品心。
原则七:第三方服务接口数据能缓存就缓存。
原则八:第三方服务需要做降级。
原则九:建议消除单点。
原则十:接口粒度要小。
原则十一:客户端能处理的逻辑就不要给服务端处理,减少服务端压力。
原则十二:资源预加载。
原则十三:不要过度设计。
原则十四:缓存尽量不要穿透。
原则十五:接口能缓存就缓存。
原则十六:思辨大于执行
高性能:如果我们发现这个接口tps和响应时间没有达到我们的要求怎么办。
A:数据存储方面:我们会想数据库有没有分库、分表、有没有做主从,有没有读写分离、字段是否有加索引、是否存在慢 sql,数据库引擎是否选用合适、是不是用了事务;
其次我们会想到是不是引用了分布式缓存、缓存 key 大小是否合适,失效时间是否设置合理,会不会大量缓存穿透、有没有引入本地缓存。
B:业务方面:是否有大量的计算、能否异步处理。是否需要引入线程池或者 MQ 来异步处理任务。有没有必要将接口进行垂直拆分和水平拆分、将接口粒度变小。
C:其他方面:nginx 层面做缓存、加机器、用 ssd,资源放 cdn,多机房部署、资源文件预加载。
高可用:如何保证服务高可用,需要从几个维度来实现:
A:消除单点,基于高可用第二位。
B:能做集群的全部做集群。譬如 Redis 集群、mysql集群、MongoDB副本集。
C:能做读写分离的都做读写分离。
D:异地多机房部署,接入 GSLB
E:必须有限流、降级机制。
F:监控。高可用的保证,基于第一位。
转载于:https://my.oschina.net/u/1428688/blog/3019409
接口设计需要考虑哪些方面相关推荐
- 升级至4K超高清12G-SDI接口时需要考虑的三件事
升级至4K超高清12G-SDI接口时需要考虑的三件事 1. 传输接口:基于SDI或IP的视频(10G以太网) 2. 传输介质:同轴电缆还是光纤? 3. 传输速度:3G-SDI还是12G-SDI? 1. ...
- 腾讯技术分享:微服务接口设计原则
来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...
- flash 接口_Flash接口设计变得简单
flash 接口 Many people have tried to create interfaces in Flash, but have become overwhelmed by the wh ...
- 面试官:你了解大厂的接口设计原则么?就会curd的我当场自闭
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- 成功进行射频与模拟混合信号PCB设计需要考虑的因素
转载自 吴川斌的博客 http://www.mr-wu.cn/ 今天,老wu打算再次分享Optimum Design Associates的大神Scott Nance关于<RF & An ...
- php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restf ...
- 接口设计,这36个核心知识点一定要注意
目录 前言 设计好接口的 36 个锦囊 总结 前言 作为后端开发,不管是什么语言,Java.Go 还是 C++,其背后的后端思想都是类似的.我们做后端开发工程师,主要工作就是:如何把一个接口设计好.所 ...
- 聊聊接口设计的36个小技巧
前言 大家好,作为后端开发,不管是什么语言,Java.Go还是C++,其背后的后端思想都是类似的.后面打算出一个后端思想的技术专栏,主要包括后端的一些设计.或者后端规范相关的,希望对大家日常工作有帮助 ...
- API接口设计要考虑的几个重要原则和方法总结
转载:https://ask.zkbhj.com/?/article/254 2020博客地址汇总 2019年博客汇总 这里想和大家讨论的是在后台接口设计过程中,还有哪些方面需要考虑,以及还有哪些优秀 ...
- API接口设计最佳实践
目录 目录 前言 API接口设计 Token设计 API接口设计原则 1.明确协议规范 2.统一接口路径规范 3.统一接口版本管理 4.为你的接口设定调用门槛 5.接口返回规范 6.接口安全规范 7. ...
最新文章
- Pixhawk---通过串口方式添加一个自定义传感器(超声波为例)
- 嵌入式开发常用工具软件
- html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
- linux essid 异常,关于BSSID,ESSID讨论
- java成员变量覆盖_java-成员变量的属性与成员函数的覆盖
- 几个小技巧提升导图使用逼格
- 利用JavaScript生成随机数字!
- mysql post 注入工具类_【Mysql sql inject】POST方法BASE64编码注入write-up
- Windows Server 2008 R2+SQL Server 2014 R2升级到Windows Server 2016+SQL Server 2016
- stm32+ucos,si4438调试
- python xlwt图表_Python中用xlwt制作表格实例讲解
- java cobar_alibaba的COBAR真是强大.
- 软件人才争夺战日趋白热化
- 007-绘制三角函数图像(一)
- LeViT: aVision Transformer in ConvNet‘s Clothing for Fast in
- 抖音测试图文内容一级流量入口
- 【数论】整除分块(数论分块)
- [Java]观察者模式和中介者模式改造机场
- 如何转换音频格式?建议收藏这几个方法
- omniplan导出html,MAC系统下的甘特图神器——Omniplan3使用指南