技术框架:Spring cloud + Mybatis + mongdb + redis + smart-doc 项目描述:本系统共分为五个系统:企业自维护平台、业务工作平台、综合管理平台、数据分析平台、企业信息公开平台,主要负责企业自维护平台、业务工作平台、综合管理平台;
技术要点:1、系统采用前后端分离架构,前端使用vue、bootstrap等;后端使用spring cloud微服务:spring boot、nacos、hystrix、zuul、feign、ribbon等;使用mogdb做存储;使用redis缓存常用数据。
Feign ----->Hystrix —>Ribbon —>>Spring Cloud Gateway提供了添加、删除和查询路由的 API ,通过API添加的路由默认存储在内存之中。应用重启时,通过API添加的路由会丢失,进而导致应用的功能受损。如果应用有多个实例,Spring Cloud Gateway也没有提供路由同步机制,多个实例之间的路由信息不一致,影响正常的业务。由于Spring Cloud Gateway默认实现在可靠性和一致性方面存在不足,进而无法直接部署在生产环境,为此需要自定义实现路由的存储和同步机制。
在Spring Cloud Gateway中一个RouteDefinition对象定义一个路由。Spring Cloud Gateway启动时首先加载所有的RouteDefinition,然后生成路由并讲路由加载到内中(有缓存机制,主要目的是提供路由匹配的效率)。Spring Cloud Gateway可以从四个数据源加载RouteDefinition:配置文件,Fluent Route API,RouteDefinitionRepository和DiscoveryClient(Spring Cloud定义的服务发现接口)。从路由的加载机制可以看出,能够实现动态添加、删除、修改路由的方式就是自定义实现RouteDefinitionRepository,从而可以保证在Spring Cloud Gateway启动时加载之前已经添加过的路由。
Spring Cloud Gateway定义了一个RouteRefreshListener用来监听路由变化事件RefreshRoutesEvent,因此在添加、删除、更新路由后只需要发布一个RefreshRoutesEvent事件以让所有存储路由的组件更新路由即可。
实现步骤:
基于mysql的实现源码参考 Spring Cloud Gateway Example
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)