学习文章: https://www.nginx.com/blog/introduction-to-microservices/
问题
- 一个问题是客户端需求与每个微服务公开的细粒度API之间的不匹配。
- 客户端直接调用微服务的另一个问题是,有些服务可能使用不支持Web的协议。一个服务可能使用Thrift二进制RPC,而另一服务可能使用AMQP消息传递协议。两种协议都不是特别适合浏览器或防火墙的协议,并且最好在内部使用。应用程序应在防火墙外部使用HTTP和WebSocket之类的协议。
API 网关
- API网关是服务器,是系统的单个入口点。它与面向对象设计中的“ 外观”模式相似。API网关封装了内部系统架构,并提供了针对每个客户端量身定制的API。它可能还具有其他职责,例如身份验证,监视,负载平衡,缓存,请求整形和管理以及静态响应处理。
image.png - API网关负责请求路由,组合和协议转换。来自客户端的所有请求都首先通过API网关。然后,它将请求路由到适当的微服务。API网关通常会通过调用多个微服务并汇总结果来处理请求。
优点
- 好处是它封装了应用程序的内部结构。客户端不必调用特定的服务,而只是与网关进行对话。API网关为每种客户端提供特定的API。这减少了客户端与应用程序之间的往返次数。它还简化了客户端代码。
缺点
它是另一个必须开发,部署和管理的高可用性组件。API网关也有成为开发瓶颈的风险。开发人员必须更新API网关才能公开每个微服务的端点。
技术实现
- 在JVM上,您可以使用基于NIO的框架之一,例如Netty,Vertx,Spring Reactor或JBoss Undertow。
- 一种流行的非JVM选项是Node.js,它是基于Chrome的JavaScript引擎构建的平台。
- NGINX Plus提供了易于部署,配置和编程的成熟,可扩展的高性能Web服务器和反向代理。NGINX Plus可以管理身份验证,访问控制,负载平衡请求,缓存响应,并提供可感知应用程序的运行状况检查和监视。
服务调用
- 用进程间通信机制。进程间通信有两种样式。一种选择是使用基于消息的异步机制。一些实现使用消息代理,例如JMS或AMQP。
服务发现
- 处理部分故障: 另一个问题是部分失败的问题。每当一个服务调用另一个响应缓慢或不可用的服务时,在所有分布式系统中都会出现此问题。API网关绝不应无限期地阻塞等待下游服务。但是,它如何处理故障取决于特定的情况以及哪个服务出现故障。
网友评论