项目的选型

分布式架构下选择SpringMVC不是不可行,只是不是最佳的选择,不适合微服务的架构,无法实现服务的发现和负载均衡,缺少统一的认证和鉴权,无法处理大量的请求

互联网现代分布式架构应用技术主要以 RPC 通信的微服务模型为主,代表技术如;Dubbo、gRPC、Thrift,它们的通信协议为 RPC 协议(Remote Procedure Call,远程过程调用),这样的调用方式可以提高微服务间的通信性能。

介绍你的项目一句话概括:

它可以通过RPC服务的注册和发现机制,把接口注册网关中心,再通过网关算力执行接收 HTTP 请求协议进行解析做 RPC 接口的泛化调用。

一 SpringGateWay和API网关的区别:

1.Spring Cloud 网关和此项目 API 网关的不同之处在于它们服务的范围和实现方式,Spring Cloud网关服务于微服务架构中的服务治理,而API网关则服务于分布式系统中的RPC调用管理。

1.1 功能特点: Spring Cloud网关是一种微服务网关技术,它主要提供路由、限流、鉴权、负载均衡等基本功能,通过Spring Cloud Gateway等组件来实现。相比于API网关,它更加专注于处理微服务之间的HTTP通信问题。 API网关则是一种面向API接口的网关技术,它可以提供API管理、鉴权、熔断、限流、路由等各类所需自行扩展的功能。相比于Spring Cloud网关,API网关更加适用于更适合使用各类RPC通信的大型微服务分布式系统架构。在中大型有自研能力的互联网公司用途广泛,包括;字节、阿里、京东、美团、滴滴等。

1.2 技术架构: Spring Cloud网关使用Spring Cloud Gateway等微服务框架组件来实现,通常采用Java语言进行开发。API 网关则使用Java、Netty、RPC、GRPC等技术实现,可以使用多种语言进行开发,如Java、Go等,自主扩展性强。

2.如果使用我们套API网关,首先是你们的服务有一定的体量规模,微服务较多,RPC使用频繁。需要对 RPC 接口到 HTTP 的转换进行统一管理和对外发布 HTTP 协议接口。那么可以使用。使用时,看是那套 RPC 如果是 Dubbo 那么我们正好已经开发,只需要简单配置即可使用。但前提是需要在你们公司部署一套我们的 API网关系统。

二 ZK和网关的注册中心的区别:

RPC 注册中心是 RPC 一套体系的内容,与网关不是一个注册中心。网关维护的是网关算力和 RPC 注册服务的连接分配以及服务发现等功能,都是给网关使用的。但 RPC 不一定都是 Dubbo 还可能是其他的,这与网关是分开的,任何一个RPC泛化调用都可以被配置到网关中使用.

三 池化和路由策略

连接的引入是希望可复用 RPC 链接,以避免每个请求都要重新建立连接的开销。有点像数据库的连接池一样路由策略体现在 API 网关的调用上,可以进行PIN 哈希路由做切量处理。

四 网关如何实现高可用

部署多个实例 监控与自动恢复 调用RPC失败重传 网管相当于只是协议转发 如果失败重新配置超时和重试的机制

五 API网关的性能瓶颈在哪

API网关主要的通信都在Core核心层,其他动作都是讲接口拉取下来后做映射操作,不消耗性能。最终的性能体现就是在接收 HTTP请求 ->协议转换 -> 验证->获取映射接口-> 泛化调用,这条链路上。所以可能发生的瓶颈点为;
1.网络I/0性能:如果网关处理不当,会导致请求堆积、响应延迟等问题。可以通过优化网络I/0的方式来提高系统的性能,例如使用 Netty 的异步非阻塞模型,使用季拷贝技术等。
2.Dubbo服务性能: API 网关的主要作用是将 HTTP 请求转换为 Dubbo 泛化调用,因此 Dubbo 服务的性能也是个关键因素。如果 Dubbo 服务本身存在性能问题,会导致 API 网关的性能下降。可以通过优化 Dubbo 服务的方式来提高系统的性能,例如使用 Dubbo 的异步调用、负载均衡分布式部多套]等.
3.线程池性能:API 网关需要处理大量的请求,因此线程池的性能也是一个关键因素。如果线程池的参数设置不合理,会导致线程池过度消耗 CPU、内存等资源,从而影响系统的性能。可以通过优化线程池的方式来提高系统的性能,例如设置合理的线程池大小、队列长度、拒绝策略等。[尽量要做到快速释放,超时四时间需要设置好]
4.内存使用:API 网关需要维护大量的连接和请求,因此内存使用也是一个关键因素。如果内存使用不当,会导致内存泄漏、内存溢出等问题,从而影响系统的性能。可以通过优化内存使用的方式来提高系统的性能,例如使用内存池、避免创建过多的对象等。