首页 > 编程知识 正文

微服务网关的功能有哪些,微服务为什么需要网关

时间:2023-05-03 16:04:34 阅读:144428 作者:3042

文章目录服务网关概述网关工作流的三个主要概念处理过程demo

服务网关概述

服务网关提供了一种简单有效的路由API的方法,并提供了强大的过滤功能,如熔断、电流限制和重试

网关基于spring5、springboot2、项目reactor等技术

网关是所有微服务的入口

网关工作流的三个主要概念路由

路由是构建网关的基本模块,由ID、目标URI、一系列断言和过滤器组成。 如果断言为true,则路由断言

确定收到的请求和断言是否匹配,如果匹配,则为过滤

过滤器拦截请求是在路由之前或之后改变请求的处理流程

web请求首先通过服务网关的断言匹配,然后通过一些匹配条件被定位到真正的服务节点上。 在进入微服务之前,还会经历过滤器。 过滤器是可以拦截和修改请求的任何可能的阻止程序

客户端在网关提交请求后,在网关处理程序映射中找到与请求匹配的路由,将其发送到网关web处理程序处理程序,并通过指定的过滤器链将请求发送到实际的服务运行业务日志

demo 总结(过滤器在传输前或传输后修改请求)通过找到指定的微服务并断言将通过路由转发。

! ---网关--- -从属网关/APP框架. cloud/groupidartifactidspring-cloud -启动器

server :端口:9528 spring : application : name : gateway 9528 cloud : gateway : # 所有路由都映射到此处以构成routes:-id:orror的根id uri :3358 localhost :8102 #根的uri predicates :-path=/get 在根eureka :客户端3360 register-with注册中心注册自己的fetch-registry: true # true是, 自己是注册中心的服务- URL :默认区域:3358 eureka 7779.com :7779/eureka/# eureka http://eureka 7777.com :7777/eureka http://eureka 7778.com :7778/eureka /,http://eureka 7779.com 33607779/eureka /,3358 eureka 7779.com 336077779/eureka

@ rest controller @ slf4j @ request mapping (/get ) ) publicclassordercontroller ) @ autowiredpublicresttemplaterestttemplate @ 配置网关后,访问order8102服务所需的

3358 localhost :8102/get/gateway当前网关部署后,域名块被隐藏,按网关域名请求,并传输到实际微服务

3358本地主机:9528/get/gateway

引入依赖

实际上,由于在一个微服务下可能部署了多个计算机群集,网关可以实现负载平衡。 要求根据服务名称找到微服务群集在负载平衡中指定的计算机server : port :9528 spring : application : name : gateway 9528 cll28 打开从overy 3360 locator : d : true #服务注册中心动态创建路由的功能,并使用微服务名路由路径:-id : order #路由id uri :3358 localhost :8102 #路由的uri:lb://order#是lb://微服务名predicates 3360-path=/get/gateter 在路由路径eureka :客户端: register-with-eureka 3360 true #注册中心注册自己的fetch-Register的true是, 自己是注册中心的服务- URL :默认区域:http://eureka 7779.com :7779/eureka/# eureka服务器端地址# http://eureka 7777.com 33607777.eureka 33607777 http://eureka 7778.com :7778/eureka /,http://eureka 77779.com :77779/eu

8102

@ rest controller @ slf4j @ request mapping (/get ) ) publicclassordercontroller ) @value ) ${server.port} ' ) privaler (}} 8105

@ rest controller @ slf4j @ request mapping (/get ) ) publicclassordercontroller ) @value ) ${server.port} ' ) privaler }

结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。