spring 转发请求到其他服务有什么优雅的办法吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX    Java

spring 转发请求到其他服务有什么优雅的办法吗?

  •  
  •   rizon
    othorizon 2019-12-17 12:12:55 +08:00 7098 次点击
    这是一个创建于 2205 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似网关, 我们内部服务分机房部署,外面有一个全局的控制台服务, 我要把传到控制台的服务中的部分请求转发到机房内部, 转发方式就是根据 header 中请求的机房参数。

    因为控制台本身是有业务的,所以不是一个真的网关,这种功能有什么简洁高效的实现方式吗?

    要求:

    1. 可以转发 get、post 请求
    2. 可以解析 header,并且可以往 header 中放入新的参数
    21 条回复    2020-01-13 18:27:10 +08:00
    fangzy
        1
    fangzy  
       2019-12-17 12:22:44 +08:00 via Android
    增加个拦截器,配合注解之类的
    chendy
        2
    chendy  
       2019-12-17 12:27:33 +08:00
    网关的拦截器 /插件里放业务
    Cbdy
        3
    Cbdy  
       2019-12-17 12:30:06 +08:00 via Android
    spring cloud gateway 的 proxy 功能了解一下
    donnior
        4
    donnior  
       2019-12-17 12:59:11 +08:00
    spring cloud gateway +1

    项目中遇到过楼主类似的场景,完全是可行的。

    机房的转发规则视需求可以静态配置也可以使用其 API 动态添加;修改 header 可以使用其 filter 机制来实现
    xuanbg
        5
    xuanbg  
       2019-12-17 13:05:39 +08:00
    都走 gateway 不行吗?
    realpg
        6
    realpg  
    PRO
       2019-12-17 13:22:54 +08:00
    openrusty 不香么
    shihty5
        7
    shihty5  
       2019-12-17 13:26:07 +08:00
    话说 zuul 和 gateway 有什么区别
    luozic
        8
    luozic  
       2019-12-17 13:27:44 +08:00
    为啥不用基于 nginx 的网关产品?
    wshcdr
        9
    wshcdr  
       2019-12-17 13:39:00 +08:00
    zuul 就是 网关
    Jrue0011
        10
    Jrue0011  
       2019-12-17 14:08:44 +08:00
    https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.0.RELEASE/reference/html/#building-a-simple-gateway-using-spring-mvc-or-webflux
    看了下楼上说的 spring cloud gateway 的 proxyexchange,应该是可以嵌入自己的 web 应用里的?也支持注入 header 和 parameter
    chaoshui
        11
    chaoshui  
       2019-12-17 14:09:41 +08:00
    @realpg 是 openresty 吧
    x66
        12
    x66  
       2019-12-17 14:10:15 +08:00
    zuul 几行配置就搞定了。。
    realpg
        13
    realpg  
    PRO
       2019-12-17 14:11:50 +08:00
    @chaoshui #11
    手残 领会精神。。。
    xiwangzishi
        14
    xiwangzishi  
       2019-12-17 14:58:17 +08:00
    apisix 值得拥有!
    0NF09LJPS51k57uH
        15
    0NF09LJPS51k57uH  
       2019-12-17 16:11:57 +08:00   1
    @shihty5 zuul1 是基于 BIO 的,zuul2 基于 NIO,但是与 Spring cloud 没什么关系了。Spring cloud Gateway 是因为 zuul2 跳票太久,自己 spencer gibb 自己搞的基于 NIO 的网关
    rizon
        16
    rizon  
    OP
       2019-12-18 15:34:06 +08:00
    @Cbdy #3
    @Jrue0011 #10

    @phantomzz #15
    Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway at this time. Please remove spring-boot-starter-web dependency.

    不能在原有的 spring boot 项目中用,,放弃了,自己手动写吧
    Jrue0011
        17
    Jrue0011  
       2019-12-18 17:20:58 +08:00
    @rizon 额。。。你是引入了整个 spring-cloud-starter-gateway 吗,gateway 只能基于 webflux 使用。ProxyExchange 功能应该是只需要引入 spring-cloud-gateway-mvc 就行了
    0NF09LJPS51k57uH
        18
    0NF09LJPS51k57uH  
       2019-12-19 09:06:25 +08:00
    @rizon gateway 是基于 netty 的,和 servlet 容器不兼容,https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.0.RELEASE/reference/html/#gateway-starter

    建议你使用 zuul1,可以和你现在的环境无缝兼容,client 用 okhttp 就好了。
    dyrone
        19
    dyrone  
       2019-12-19 13:08:39 +08:00
    部门描述:~~~

    代码平台(代码托管、代码效能、代码智能)是阿里巴巴一站式智能研发协同平台的核心服务,对内为阿里几万产品研发相关人员提供工具支撑,对外是阿里云开发者生态关键一环。“Work Like Alibaba”将成为中国及至全世界开发者最潮流的口号。

    本职位主要职责是负责代码平台基础设施的架构演进、Git 核心技术开发,代码领域技术趋势跟踪、下一代代码平台预言。我们是一群懂代码,爱 Git,有技术有梦想的工程师。让我们一起携手解决跨地域、分布式、海量代码托管等世界级业务和技术难题,为阿里巴巴集团内部、生态伙伴以及云上开发者服务。


    我们的使命:帮助企业让更多的工作内容和工作行为 “有意义” 的数字化。
    我们的愿景:服务一亿人的数字化办公。


    岗位描述:
    1、代码平台后端大规模服务器集群的分布式架构演进;
    2、服务器计算、存储资源的再平衡、故障修复与隔离,服务器智能运维;
    3、基于分布式存储的下一代代码平台,实现低延迟、高效率在线编码;
    4、Git 核心代码开发,业界趋势跟踪,保持技术领先,优化用户体验等等。


    岗位要求:
    1、3 到 8 年的工作经验,精通 Go 语言、C 语言或 java 语言的一种。
    2、熟悉分布式一致性协议,有分布式系统开发经验。
    3、熟悉微服务架构,RPC 的基本原理、gRPC、pb 等原理和使用,加分。
    4、热爱技术,有较强的学习能力、良好的团队合作能力、抗压能力。
    wikia
        20
    wikia  
       2020-01-06 16:53:11 +08:00
    @rizon 楼主最终找到什么优雅的方案了吗?我正好也遇到一个这样的情况。
    rizon
        21
    rizon  
    OP
       2020-01-13 18:27:10 +08:00
    @wikia #20 把功能砍了,最终就是个简单的转发需求,自己手动实现了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     991 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:48 PVG 02:48 LAX 10:48 JFK 13:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86