代码完全实现动态服务网关 | 学习笔记

简介: 快速学习 代码完全实现动态服务网关

开发者学堂课程【精通 Spring Cloud Alibaba代码完全实现动态服务网关学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/634/detail/10123


代码完全实现动态服务网关


代码如下:

@Service

public class GatewayService implements ApplicationEventPublisherAware{

private ApplicationEventPublisher publisher;

@Autowired

private RouteDefinitionWriter routeDefinitionWriter;

@Autowired

private MayiktGatewayMapper mayiktGatewayMapper;

@override

publicvoid setApplicationEventPublisher(ApplicationEventPublisher

applicationEventPublisthis.publisher= applicationEventPublisher; }

public String loadAIILoadRoute()

List<GateWayEntity> gateWayEntities= mayiktGatewayMapper.gateWayAII();

for(GateWayEntity gb:

gateWayEntities) {

loadRoute(gb);}
return
success;

}

public String loadRoute(GateWayEntity gateWayEntity) {

RouteDefinition definition= newRouteDefinition();

Map<String, String> predicateParams = new HashMap<>( initialCapacity:8);

PredicateDefinition predicate = new PredicateDefinition();

FilterDefinition filterDefinition = new FilterDefinition();

Map<String,String>filterParams= newHashMap<>(initialCapacity: 8);

URI uri = null;

if ("0".equals(gateWayEntity.getRouteType()))

//如果配置路由 type 0的话 则从注册中心获取服务地址

uri = UriComponentsBuilder.fromUriString("1b://"+ gateWayEntity.getRouteUr1()+"/").build(

} else {

uri=UriComponentsBuilder.fromHttpUrl(gateWayEntity.getRouteUr1()).build().touri();}

//定义的路由唯一的 id

definition.setId(gateWayEntity.getRouteId(OD;

predicate.setName("Path");

//路由转发地址

predicateParams.put("pattern",gateWayEntity.getRoutePattern();

predicate.setArgs(predicateParams);

//名称是固定的, 路径去前缀

filterDefinition.setName("StripPrefix");

filterParams.put("_genkey_0","1");

filterDefinition.setArgs(filterParams);

definition.setPredicates(Arrays.asList(predicate));

definition.setFilters(ArCall to 'asLits with one argument more... (Ctrl+F1)));

definition.setUri(uri);

routeDefinitionWriter.save(Mono.just(definition)).subscribe();

this.publisher.publishEvent(new RefreshRoutesEvent( source: this)); return "success";

}

相关文章
|
6月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
364 14
|
安全 5G 网络性能优化
深入理解5G中的SAEGW:服务网关边界
【10月更文挑战第9天】
509 0
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
923 8
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
335 1
Gateway服务网关
|
前端开发 Java API
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
370 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
|
测试技术 微服务
微服务(八)-服务网关zuul(四)
微服务(八)-服务网关zuul(四)
|
监控 前端开发 Java
微服务(七)-服务网关zuul(三)
微服务(七)-服务网关zuul(三)
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
431 2

热门文章

最新文章