前言
现在的互联网产品技术架构,如果没有上微服务架构,都感觉被同行鄙视,太low了。在微服务架构中,不同的微服务有不同的请求地址,各个微服务之间通过互相调用完成用户请求。客户端要完成用户请求,需要调用很多微服务接口。
比如:
用户查看一个商品详情页,详情页包含了商品基本信息,商品价格,库存信息,评论信息,促销活动信息等,而这些信息是不同的微服务提供的;如:库存服务,促销服务,评论系统等。
用户要查看商品详情页,需要让客户端调用多个微服务,且客户端直接与各个微服务通信,会有以下的问题:
1、客户端多次请求不同的微服务,增加了客户端的复杂度。
2、多次网络请求,耗时增加。
3、微服务的请求地址不同,很容易引起跨域问题。
4、客户端请求微服务需要保证安全认证,但每个服务都要进行认证。
5、将来的项目重构,微服务的变化,如:把多个服务合并一个服务,或一个服务拆分多个服务;这样会导致客户端请求需要重构。
6、限流、降级、监控等需求,会导致实现复杂,每个服务都要实现,重复代码。
遇到这些问题,**我们怎么去解决呢?**我们只要增加一个API网关。
什么是API网关?
API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供