场景:微服务架构中多个服务共同完成一件事情 在部署时只有一个域名 此时需要对每个服务进行集中管理。使用新一代的路由网关(Getway)

demo 部署案例: 本列使用Consul 作为服务发现

Service1:

pom.xml 核心依赖

  <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><version>2.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

服务注册关键代码:

 @Beanpublic ConsulServiceRegistry consulServiceRegistry(ConsulClient consulClient,ConsulDiscoveryProperties properties,TtlScheduler ttlScheduler,HeartbeatProperties heartbeatProperties) {return new ConsulServiceRegistry(consulClient, properties, ttlScheduler, heartbeatProperties);}@Bean@ConditionalOnMissingBeanpublic ConsulDiscoveryProperties consulDiscoveryProperties(InetUtils inetUtils) {ConsulDiscoveryProperties properties = new ConsulDiscoveryProperties(inetUtils);//这个必须配,使用ip注册服务properties.setPreferIpAddress(true);//在consul中注册服务properties.setRegister(true);//启动服务发现properties.setEnabled(true);//禁止自动注销properties.setDeregister(true);//只需保证该字段不为空即可properties.setInstanceId(context.getEnvironment().getProperty("service.id"));//在注册中心显示的服务名称properties.setServiceName(context.getEnvironment().getProperty("spring.application.name"));//服务标记properties.setTags(Arrays.asList(""));//健康检查地址properties.setHealthCheckPath("/actuator/health");//健康检查间隔properties.setHealthCheckInterval("10s");return properties;}@Bean@ConditionalOnMissingBeanpublic ConsulClient getClient() {String consulUrl = null;int consulPort = 0;if (System.getenv("CONSUL_URL") == null || System.getenv("CONSUL_URL").equalsIgnoreCase("")) {consulUrl = "yourConsulHost";consulPort = 8500;} else {consulUrl = System.getenv("CONSUL_URL").split("//")[1];consulPort = 80;}return new ConsulClient(consulUrl, consulPort);}@Bean@ConditionalOnMissingBeanpublic HeartbeatProperties heartbeatProperties() {HeartbeatProperties properties = new HeartbeatProperties();properties.setEnabled(true);return properties;}@Bean@ConditionalOnMissingBeanpublic TtlScheduler ttlScheduler(ConsulClient consulClient, HeartbeatProperties heartbeatProperties) {return new TtlScheduler(heartbeatProperties, consulClient);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {this.context = applicationContext;}

开启 注册发现配置:

@EnableDiscoveryClient

Getway 关键配置 (使用StripPrefix GatewayFilter Factory 作为过滤工厂)

@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {StripPrefixGatewayFilterFactory.Config config = new StripPrefixGatewayFilterFactory.Config();SetPathGatewayFilterFactory.Config c1 = new SetPathGatewayFilterFactory.Config();config.setParts(1);return builder.routes().route("router1", r -> r.path("/s3").uri("http://host:8897/s3")).route("router2", r -> r.path("/s2").uri("http://host:8899/s2")).build();}

开启getway 自动发现功能 :

spring.cloud.gateway.discovery.locator.enabled=true

测试: 在浏览器上输入 网关的 地址 :  根据地址上不同path切换到不同的服务上

如: http://localhost:8080/s2  切换到 service2 服务上

http://localhost:8080/s3 切换到 service3服务上

SpringCloud Getway相关推荐

  1. SpringCloud Getway服务网关

    Gateway网关 网关的角色是作为一个 API 架构,用来保护.增强和控制对于 API 服务的访问. API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来 管理授 ...

  2. springcloud getway 断言规则和404的原因

    1: 普通断言 routes:- id: host_routeuri: https://www.baidu.com/predicates:- Path=/data/aa 当你搜索www.localho ...

  3. SpringCloud 分布式链路追踪、分布式日志系统

    目录 概述 Zipkin的使用 搭建zipkin server zipkin dependencies 在服务中添加zipkin的相关配置 SkyWalking的使用 部署skywalking web ...

  4. Spring Security到底是什么

    Spring Security你懂了吗 前置知识 掌握Spring框架 掌握SpringBoot框架 掌握JavaWeb框架 下面的内容主要是用来介绍用户认证和用户的授权 两个安全认证框架对比 Spr ...

  5. 「架构」全链路异步模式

    总结自尼恩的全链路异步: 网关纯异步化 网关层的特点: 不需要访问业务数据库只做协议转换和流量转发 特点是 IO 密集型,特别适合纯异步的架构,可以极大的节省资源. 如何进行网关异步化? 使用高性能的 ...

  6. springcloud家族路由系列之getway

    springcloud家族路由系列之geteway springcloud家族路由系列之geteway 基础项目搭建(idea) 1.新建项目选择项目类型 2.设置项目团队名.产品名.项目类型.语言. ...

  7. SpringCloud:网关getway 路由转发

    Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...

  8. springcloud启动getway报错

    报错提示 Error starting ApplicationContext. To display the conditions report re-run your application wit ...

  9. SpringCloud入门实例

    SpringCloud微服务 概述 ​ Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线 ...

最新文章

  1. php composer 无法下载,php – composer无法安装laravel / passport
  2. 转:几款主流 NoSql 数据库的对比
  3. ASP.NET获取文件名,后缀名
  4. java虚拟机采用UTF-16编码格式对字符进行编码
  5. web报表工具FineReport的SQL编辑框的语法简介
  6. 给老外索要仿真代码信件
  7. Stata: 实时估计个股贝塔(beta)系数
  8. HSV(HSB)和HSL颜色空间
  9. [心灵] 我对这个世界充满了想象力和好奇心
  10. Python进阶-正则表达式
  11. linux下安装安装jdk和安装android studio
  12. 使用GridSearchCV对CatBoostClassifier分类器调参
  13. 因子图优化原理(iSAM、iSAM2论文解析)
  14. java 加密工具类
  15. Linux解决ip ping不通百度的问题
  16. 某盘客户端工具,这速度绝了!请低调使用
  17. android 淘口令,淘口令解析
  18. 开源中国java商城项目jshop的部署与总结
  19. 用 Python Turtle画图学习(紫色樱花树) 附源代码
  20. 某型武器系统测试工装研制

热门文章

  1. 北京十大it外包公司
  2. PC安装安卓系统模拟器
  3. 19款国产手机无一幸免:15分钟破解人脸识别,打印眼镜让刷脸形同虚设 ?
  4. 设计模式--静态工厂、简单工厂方法案例分析
  5. DNS概述和DNS服务器部署(详细正向解析)
  6. UVA 1646 Edge Case
  7. 分形 —— 龙曲线的构造
  8. 视频编码:H.264编码
  9. 高效视频编码 (HEVC) -H.265(结构解析)
  10. [UTCTF2020]sstv