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

接口设计需要考虑哪些方面相关推荐

  1. 升级至4K超高清12G-SDI接口时需要考虑的三件事

    升级至4K超高清12G-SDI接口时需要考虑的三件事 1. 传输接口:基于SDI或IP的视频(10G以太网) 2. 传输介质:同轴电缆还是光纤? 3. 传输速度:3G-SDI还是12G-SDI? 1. ...

  2. 腾讯技术分享:微服务接口设计原则

    来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...

  3. flash 接口_Flash接口设计变得简单

    flash 接口 Many people have tried to create interfaces in Flash, but have become overwhelmed by the wh ...

  4. 面试官:你了解大厂的接口设计原则么?就会curd的我当场自闭

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  5. 成功进行射频与模拟混合信号PCB设计需要考虑的因素

    转载自 吴川斌的博客 http://www.mr-wu.cn/ 今天,老wu打算再次分享Optimum Design Associates的大神Scott Nance关于<RF & An ...

  6. php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

    2016年12月29日13:45:27  关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restf ...

  7. 接口设计,这36个核心知识点一定要注意

    目录 前言 设计好接口的 36 个锦囊 总结 前言 作为后端开发,不管是什么语言,Java.Go 还是 C++,其背后的后端思想都是类似的.我们做后端开发工程师,主要工作就是:如何把一个接口设计好.所 ...

  8. 聊聊接口设计的36个小技巧

    前言 大家好,作为后端开发,不管是什么语言,Java.Go还是C++,其背后的后端思想都是类似的.后面打算出一个后端思想的技术专栏,主要包括后端的一些设计.或者后端规范相关的,希望对大家日常工作有帮助 ...

  9. API接口设计要考虑的几个重要原则和方法总结

    转载:https://ask.zkbhj.com/?/article/254 2020博客地址汇总 2019年博客汇总 这里想和大家讨论的是在后台接口设计过程中,还有哪些方面需要考虑,以及还有哪些优秀 ...

  10. API接口设计最佳实践

    目录 目录 前言 API接口设计 Token设计 API接口设计原则 1.明确协议规范 2.统一接口路径规范 3.统一接口版本管理 4.为你的接口设定调用门槛 5.接口返回规范 6.接口安全规范 7. ...

最新文章

  1. Pixhawk---通过串口方式添加一个自定义传感器(超声波为例)
  2. 嵌入式开发常用工具软件
  3. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
  4. linux essid 异常,关于BSSID,ESSID讨论
  5. java成员变量覆盖_java-成员变量的属性与成员函数的覆盖
  6. 几个小技巧提升导图使用逼格
  7. 利用JavaScript生成随机数字!
  8. mysql post 注入工具类_【Mysql sql inject】POST方法BASE64编码注入write-up
  9. Windows Server 2008 R2+SQL Server 2014 R2升级到Windows Server 2016+SQL Server 2016
  10. stm32+ucos,si4438调试
  11. python xlwt图表_Python中用xlwt制作表格实例讲解
  12. java cobar_alibaba的COBAR真是强大.
  13. 软件人才争夺战日趋白热化
  14. 007-绘制三角函数图像(一)
  15. LeViT: aVision Transformer in ConvNet‘s Clothing for Fast in
  16. 抖音测试图文内容一级流量入口
  17. 【数论】整除分块(数论分块)
  18. [Java]观察者模式和中介者模式改造机场
  19. 如何转换音频格式?建议收藏这几个方法
  20. omniplan导出html,MAC系统下的甘特图神器——Omniplan3使用指南

热门文章

  1. 全球及中国阻力带行业市场前瞻及投资竞争力分析报告2022-2027年
  2. Android ScrollView 长截屏
  3. qt 使用msvc 打断点无反应解决办法
  4. 建立主DNS区域和辅助DNS区域的最佳实践
  5. 从洛伦兹曲线定性地看马太效应的根源
  6. 【解决】Outlook无法正常显示邮件中的图片
  7. 最新WingIDE注册破解方法
  8. 并发编程-Semaphore,CycliBarrier,CountDownlatch类的使用
  9. 获取 Panabit Linux 版 root 密码
  10. Linux的PCI驱动介绍(入门)