一、架构概述
Shenyu网关采用了业内常见的微服务架构,在分布式调用链上,完成了用户的网络请求转发、路由、读写分离、负载均衡、限流、降级、缓存等多个功能。在整个架构中,Shenyu网关核心是一个JVM进程,它以Plugin的形式支持各种基于Netty的HTTP/Websocket协议,与各种代理服务、后端服务、身份验证服务、鉴权服务集成使用,能够通过各种协议实现Dubbo、Spring Cloud等各种协议的服务转发。
而Shenyu网关还提供了管理后台,管理后台主要负责对网关进行动态配置,支持数据源和自定义限流、授权、降级、Dubbo、Spring Cloud等插件化扩展,可以根据业务需求实现快速切换、多机部署等。
二、插件化架构
Shenyu网关采用了高度插件化的架构,不同类型的插件组成了Shenyu的基本功能模块。通过插件方式来扩展Shenyu的各项功能,如负载均衡、鉴权、限流、降级等功能,灵活可靠性也更高。除了基础功能的插件,Shenyu网关还支持自定义插件的开发,开发者可以按照规范开发自己的插件,实现对业务的定制化扩展。
// 一个简单的自定义插件示例 public class MyPlugin implements Plugin { @Override public PluginEnum named() { return PluginEnum.MY_PLUGIN; } @Override public Monoexecute(final PluginData pluginData) { System.out.println("execute my plugin"); return Mono.empty(); } }
这个示例插件MyPlugin只是一个打印一句话的简单插件,大家可以根据实际需要扩展自己的业务逻辑。
三、高效性能
Shenyu网关在性能方面也做出了很多的努力。在内存使用和CPU利用率上都进行了优化,实现了高效的数据处理。对于高并发的场景,Shenyu网关提供了多种插件方案来完成负载均衡、熔断降级、限流等功能,可以高效地处理请求。同时,Shenyu网关还支持多种高速协议,包括HTTP、Websocket、Dubbo、Spring Cloud等,通过对协议进行精细优化,提升了协议数据的处理效率,提高了Shenyu的整体性能。
四、易于部署
Shenyu网关采用简单易用的部署方式,支持Docker Swarm和Kubernetes容器部署系统,可以方便地进行多机房部署和扩展。Shenyu网关还提供了丰富的文档和示例,让开发者可以快速上手使用。开发者可以参考Shenyu提供的文档来了解网关的配置文件、内部逻辑以及各种插件实现的方法。同时,Shenyu也提供了各种使用场景的示例代码和测试代码,可以帮助开发者快速学习和使用。
五、灵活运维
Shenyu网关支持分布式部署,通过后端服务动态配置的方式,实现了单个服务、单个机器、整个集群灵活运维的目的。Shenyu网关还提供了完善的监控和日志系统,通过各种监控指标、日志记录以及告警系统,可以方便地对Shenyu网关的运行情况进行监控和分析,并及时发现和解决问题。
六、扩展性
Shenyu网关支持各种扩展方式,对于不同的业务场景,可以通过不同的插件来实现自定义化扩展。除了插件扩展,Shenyu网关还可以通过集成第三方组件来实现功能扩展和协议扩展。例如可以集成Spring Cloud、Dubbo和gRPC等组件,扩展Shenyu网关的服务范围。也可以通过实现自己的协议来扩展Shenyu网关的协议范围。