SpringCloud Getway
场景:微服务架构中多个服务共同完成一件事情 在部署时只有一个域名 此时需要对每个服务进行集中管理。使用新一代的路由网关(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相关推荐
- SpringCloud Getway服务网关
Gateway网关 网关的角色是作为一个 API 架构,用来保护.增强和控制对于 API 服务的访问. API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来 管理授 ...
- springcloud getway 断言规则和404的原因
1: 普通断言 routes:- id: host_routeuri: https://www.baidu.com/predicates:- Path=/data/aa 当你搜索www.localho ...
- SpringCloud 分布式链路追踪、分布式日志系统
目录 概述 Zipkin的使用 搭建zipkin server zipkin dependencies 在服务中添加zipkin的相关配置 SkyWalking的使用 部署skywalking web ...
- Spring Security到底是什么
Spring Security你懂了吗 前置知识 掌握Spring框架 掌握SpringBoot框架 掌握JavaWeb框架 下面的内容主要是用来介绍用户认证和用户的授权 两个安全认证框架对比 Spr ...
- 「架构」全链路异步模式
总结自尼恩的全链路异步: 网关纯异步化 网关层的特点: 不需要访问业务数据库只做协议转换和流量转发 特点是 IO 密集型,特别适合纯异步的架构,可以极大的节省资源. 如何进行网关异步化? 使用高性能的 ...
- springcloud家族路由系列之getway
springcloud家族路由系列之geteway springcloud家族路由系列之geteway 基础项目搭建(idea) 1.新建项目选择项目类型 2.设置项目团队名.产品名.项目类型.语言. ...
- SpringCloud:网关getway 路由转发
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...
- springcloud启动getway报错
报错提示 Error starting ApplicationContext. To display the conditions report re-run your application wit ...
- SpringCloud入门实例
SpringCloud微服务 概述 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线 ...
最新文章
- php composer 无法下载,php – composer无法安装laravel / passport
- 转:几款主流 NoSql 数据库的对比
- ASP.NET获取文件名,后缀名
- java虚拟机采用UTF-16编码格式对字符进行编码
- web报表工具FineReport的SQL编辑框的语法简介
- 给老外索要仿真代码信件
- Stata: 实时估计个股贝塔(beta)系数
- HSV(HSB)和HSL颜色空间
- [心灵] 我对这个世界充满了想象力和好奇心
- Python进阶-正则表达式
- linux下安装安装jdk和安装android studio
- 使用GridSearchCV对CatBoostClassifier分类器调参
- 因子图优化原理(iSAM、iSAM2论文解析)
- java 加密工具类
- Linux解决ip ping不通百度的问题
- 某盘客户端工具,这速度绝了!请低调使用
- android 淘口令,淘口令解析
- 开源中国java商城项目jshop的部署与总结
- 用 Python Turtle画图学习(紫色樱花树) 附源代码
- 某型武器系统测试工装研制