Skip to main content

概述

接口按照调用者不同一般分为2类:

  • 外部接口: 一般以HTTP协议为主, 基于该接口为用户提供操作界面(比如Web), 属于用户操作(用户-->服务)
  • 内部接口: 一般以RPC为主, 也可以直接沿用外部接口, 属于服务间调用(服务-->服务)

内外接口一体

架构层面一开始并没有规划内部接口, 导致内部接口缺失, 只有外部接口(RESTful接口), 这种情况下 一般不会选择专门开发内部接口, 而是直接沿用RESTful接口进行服务间调用, 具体来说就是直接使用http client来调用

这样虽然减少了开发量,但是架构层面内外流量无法区分, 内部流量容易走公网绕一圈 带来了很多问题:

  • 内部流量如果很大, 相当于自己DDOS自己服务
  • 外部网络一般都是安全重地, 各种防火墙,安全规则, 这无疑大大降低了内部调用的性能
  • 外部流量和内部流程走一个入口, 容易出现安全隐患, 把一些高危接口开放到了外部
  • 还有最重要的成本问题,外部流量很贵, 内部流量免费, 把内部流量转化为外部流量会增加大量成本

内外接口分离

  • HTTP接口: 外部接口(高安全)
  • GRPC接口: 内部接口(高性能)