对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由、组合及协议转换。
在微服务的应用程序中,客户端和微服务之间的交互,有如下几个挑战:
1.微服务提供的API粒度通常与客户端的需求不同,微服务一般提供细粒度的API,也就是说客户端需要与多个服务进行交互。
2.不同的客户端需要不同的数据,不同类型客户端的网络性能不同。
3.服务的划分可能会随时间而变化,因此需要对客户端隐藏细节。
作用:
它们除了保证数据的交换之外,还需要实现对接入客户端的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费。