API网关应该返回在条件允许的情况下,应该返回缓存信息。例如,产品价格不频繁改动,如果产品价格服务不可用,则应该返回缓存中的产品价格。数据应该缓存在API服务器内存或者第三方内容中如Reddis或者memcached。通过返回默认信息或者缓存信息,API网关保证系统错误不影响用户体验。
Netflix Hystrix 是一个有用远程服务引用库。Hystrix 采用调用超时策略。它采用断路模式,即阻止客户端等待调用不反应的服务。如果某个服务发生错误的次数超过阈值,则Hystrix 启动断路并不允许客户端继续调用该服务。Hystrix定义了一个包括返回调用机制,报错后允许你获取缓存或者默认数据。
总结
对于大多数的微服务程序,采用API网关(作为程序的单一访问点)是有意义的。API网关负责请求路由、组合请求结果和协议解析。它为每种程序的客户端提供的单独的接口。它通过获取内存或者默认值可以掩盖后端错误。但是其路由的构建、结果的合并将是核心。