小白网-奉贤部落-奉贤免费信息发布平台

查看: 62|回复: 0

nacos网关(nacos静态路由)

[复制链接]

2万

主题

0

回帖

8万

积分

论坛元老

Rank: 8Rank: 8

积分
88256
发表于 2025-7-26 12:32 | 显示全部楼层 |阅读模式
随着营业和架构的成长,微办事的开辟摆设形式已经成为现今技术成长的趋向,微办事流量进口的控制根基经过网关实现他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。网关的功用:路由转发、融合、限流、平安认证、日志监控等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。,之前也颁发过一篇关于它的文章他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。有爱好可以领会一下网关的根基先容他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
背景今朝我们的营业流量进口已经过网关同一转发,路由信息在设置文件中界说他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。可是,这类方式有一个弱点,即必须重新启动办事才能点窜路由信息他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。网关作为付出一切流量的进口,需要保证其高可用性,是以需要在不重启办事的情况下点窜路由信息他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。现在静态路由的设置是连系Nacos实现的,转发办事需要在Nacos注册表中注册,网关间接在注册表当挑选机械停止转发他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。下面是具体转换的代码他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
拜候网关Nacos以静态革新网关路由设置表他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如要实现静态路由设置,需要做两件事他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • Nacos可以监控客户端前台设置文件的点窜;
  • 将点窜后的设置文件变动成网关路由;针对以上两点,我们需要经过代码监控Nacos设置文件的变化,同时需要操纵Spring事务公布将设置文件变化信息静态革新到路由设置表中他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。焦点代码以下:
    @ Component@ Slf4jpublic class NacosDynamicRouteService实现applicationeventpublisherware {@ Value(" $ { spring . cloud . nacos . config . server-addr } "private String server addr;@ Value(" $ { nacos . group } "私有字符串组;@ Value(" $ { nacos . dataid } "私有字符串routeConfigDataId@ Value(" $ { nacos . namespace } "私有字符串命名空间;@ Resourceprivate RouteDefinitionWriter RouteDefinitionWriter;private ApplicationEventPublisher ApplicationEventPublisher;私有静态终极列表ROUTE _ LIST = new ArrayList  lt gt();@ Overridepublic void setApplicationEventPublisher(@ not null ApplicationEventPublisher ApplicationEventPublisher){this . ApplicationEventPublisher = ApplicationEventPublisher;}@ post constructpublic void dynamicRouteListener(){try {Properties Properties = new Properties();properties . put(" server addr ",server addr);properties.put("namespace ",命名空间);config service config service = nacosfactory . createconfigservice(properties);//法式初次启动加载初始路由设置string initconfiginfo = config service . getconfig(RouteConfigDataID,Group,5000);addandpublishbatchrroute(initConfigInfo);config service . add Listener(routeConfigDataId,group,new Listener(){@ Overridepublic void receive config info(String config info){addAndPublishBatchRoute(config info);}@ Overridepublic Executor get Executor(){返回null}});} catch(Exception e){e . printstacktrace();}} Private void增加和公布Batch route(string config)List gatewaytroutedefinitions = JSON object . parse array(configInfo,route definition . class);for(route definition route definition:gatewayroutededefinitions){add route(route definition);}publish();log . info("  gt; gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtNacos静态设置网关路由完成| {} ",JSON . tojsonstring(gatewayRouteDefinitions));} catch(Exception e){e . printstacktrace();}}Private Void Publish(){This他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。ApplicationEventPublishers他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。publish event(New RefreshRouteEvent(This他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。RoutedE }}
    设置文件yml
    nacos:GROUP:DEFAULT _ GROUPdataId:gateway-outer-nacos-betanamespace:beta
    Nacos控制台设置路由信息路由转发JSON
    具体JSON设置以下:留意my-service注册了Nacos的办事名,用于转发办事他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    [{"id": "service ","order": 0," args ":[{" pattern ":"/service/* * "/h/]},"name": "Path"}]," filters ":[{" args ":{" _ genkey _ 0 ":" 1 "[/h
    将办事转发到Nacos registry的第一步是先容Nacos registry和spring-cloud依靠他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    2 . 1 . 4 . releasecom . Alibaba . cloudspring-cloud-starter-Alibaba-nacos-config$ { Alibaba . nacos . version }com . Alibaba . cloudspring-cloud-starter-Alibaba-nacos-discovery$ { Alibaba . nacos . version }SR6POMimport
    步调2: SpringBootApplication增加办事发现正文@ enabledDiscovery Client
    @ spring boot Application@ EnableDiscoveryClientpublic class Application {public static void main(String[]args){spring Application . run(Application . class,args);}}
    第三步:增加bootstrap.yml注册办事中心称号,转发网关负载他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    spring:利用:称号:我的办事
    步调4:将Nacos注册表设置地址增加到设置文件中他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    http://192.168 . x . 1:8848/nacos/index . html是背景登录治理界面他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    spring:cloud:nacos:config:server-addr:192.168 . x . 1:8848,192.168.x.2:8848,192.168.x.3: 8848 命名空间:beta # naming 空用于情况隔离发现:server-addr:192.192
    Gray scale,Nacos权重设备首先,您需要在权重设备生效之前向网关项目增加一个负载平衡战略他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。代码以下:
    @ Configurationpublic class Configuration {@ Bean@ Scope(value = " prototype ")public I rule loadBalanceRule(){return new NacosRule();}}
    接下来可以在Nacos控制台界面设备权重,完成流量倾斜转发他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    注册办事列表
    办事具体信息操纵页面
    办事流量转发权重设备
    在转动办事公布的进程中,可以经过点击办事离线按钮停止在线办事的转发,避免办事重启致使的数据题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。即网关(SpringCloud Gateway)连系Nacos完成网关路由静态设置、灰度公布、线上线下文雅办事等功用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    不竭分享开辟进程中利用的技术和访谈中的常见题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如你也对IT技术感爱好,可以“关注”我他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。让我们一路进修,一路进步!
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-11-13 02:08 , Processed in 0.141747 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表