服务网关
随着微服务的不断增多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信可能出现:
-
客户端会多次请求不同的微服务,增加了客户端的复杂性
-
存在跨域请求,在一定场景下处理相对复杂
-
身份认证问题,每个微服务需要独立身份认证
-
难以重构,随着项目的迭代,可能需要重新划分微服务
-
某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定的困难
针对这些问题,API网关顺势而生。
API 网关直面意思是将所有 API 调用统一接入到 API 网关层,由网关层统一接入和输出。一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短连接支持、容错能力。有了网关之后,各个 API 服务提供团队可以专注于自己的的业务逻辑处理,而 API 网关更专注于安全、流量、路由等问题。
服务调用
在微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于 HTTP 的 RESTful 接口和基于 TCP 的 RPC 协议。以上两种都属于同步通信,还有基于队列模式的异步通信。
-
REST(Representational State Transfer):一种 HTTP 调用的格式,更标准,更通用,无论哪种语言都支持 http 协议。
-
RPC(Remote Promote Call):一种进程间通信方式,允许像调用本地服务一样调用远程服务。RPC 框架的主要目标就是让远程服务调用更简单、透明。RPC 框架