用 iframe 来做微服务靠谱吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
LoremIpSum

用 iframe 来做微服务靠谱吗?

  •  
  •   LoremIpSum Jun 2, 2018 6508 views
    This topic created in 2888 days ago, the information mentioned may be changed or developed.

    领导让我们把原有的系统各个模块拆成微服务,并独立部署,其他系统通过 iframe 来调用这个微服务,考虑到使用 iframe,有以下两个问题: 1.跨域问题,iframe 需要和父页面进行通信 2.样式问题,iframe 的样式,大小不可能和所有调用它的系统保持一致。

    开发起来感觉很棘手,这种方法来做微服务合适吗?是否是最佳实践。

    32 replies    2018-06-04 15:34:25 +08:00
    nine99
        1
    nine99  
       Jun 2, 2018   4
    这能叫微服务。。。
    nine99
        2
    nine99  
       Jun 2, 2018   1
    感觉他对微服务没理解吧
    picture2200
        3
    picture2200  
       Jun 2, 2018 via Android   1
    跨域问题用反向代理拦截所有模块请求。

    样式问题用固定页面大小来做。

    实际上楼主领导的方案好几年前在企业 IT 流行过。狭义上讲这不是微服务。
    guagusi
        4
    guagusi  
       Jun 2, 2018
    这微服务的理解也是醉
    LoremIpSum
        5
    LoremIpSum  
    OP
       Jun 2, 2018
    @picture2200 比如一个订单服务,就是一个 iframe,你提交订单后,还得跨域去通知父页面把窗口关了.蛋疼...
    yidinghe
        6
    yidinghe  
       Jun 2, 2018
    微服务不是这么拆分的。你要做微服务拆分,界面需要保持不变,对请求的处理逻辑再进行拆分,拆分的结果是多个后台进程之间相互调用,而不是靠浏览器去请求多个服务。
    hronro
        7
    hronro  
       Jun 2, 2018   6
    重新定义微服务
    hronro
        8
    hronro  
       Jun 2, 2018
    讲道理,iframe 能不用就不用吧,这东西大部分情况下可以扫进垃圾堆了
    picture2200
        9
    picture2200  
       Jun 2, 2018 via Android
    @LoremIpSum 用反向代理。

    例如:
    首页 URL: https://xxx/

    订单 URL: https://xxx/order

    这样就不算跨域了。
    imydou
        10
    imydou  
       Jun 2, 2018
    aws ecs + elb 非常适合此场景
    jakes
        11
    jakes  
       Jun 2, 2018
    重新定义微服务。。。
    我司 07 年的系统也是这么玩的,但是不叫“微服务”。
    你的需求 #9 的方法可解。
    sudoz
        12
    sudoz  
       Jun 2, 2018
    你可能对 microservice 有什么误解
    lqyhk1234
      &nbp; 13
    lqyhk1234  
       Jun 2, 2018
    这种方法一般是服务商向客户提供功能,优点有:
    1.客户简单的在页面中嵌入所需功能
    2.终端用户使用功能不需要跳转
    3.服务商可以防止客户更改其逻辑和表现

    比如 Paypal 的嵌入式支付窗口和 Youtube 的嵌入播放器
    dobelee
        14
    dobelee  
       Jun 2, 2018 via Android
    主可能要把古董代文明相合,你都不懂。
    phodal
        15
    phodal  
       Jun 2, 2018
    如果是 Angular 2+ 的话,可以看看这篇相关的微服务化架构方案对比: https://github.com/phodal/micro-frontend
    iConnect
        16
    iConnect  
       Jun 2, 2018 via Android
    iframe 再过阵子,都要从 http 协议中清理出去了
    CFO
        17
    CFO  
       Jun 2, 2018 via Android   1
    @phodal 前端圈还真是什么热点都想蹭
    nakes
        18
    nakes  
       Jun 2, 2018
    iframe?这是微服务都微到前端来了?新潮?。。
    LoremIpSum
        19
    LoremIpSum  
    OP
       Jun 2, 2018
    @picture2200 能说下这样做的弊端和好处吗
    Foolt
        20
    Foolt  
       Jun 2, 2018   1
    你领导的意思应该是模块化,各模块独立开发,通过统一的接口与前端通信,前端整合各模块内容返回给用户。iFrame 应该只是他了解到的实现方法,你要告诉他现在的流行做法以供他参考和选择,而不是他想到什么你就直接做什么。

    淘宝首页就是这样,前端以前是用 PHP 开发,后来改成 Node 了。

    http://taobaofed.org/blog/2016/06/02/thing-about-taobao-homepage/
    mezw
        21
    mezw  
       Jun 3, 2018 via iPhone
    跨域问题可以用 jsonp
    kookpua
        22
    kookpua  
       Jun 3, 2018 via iPhone
    @Foolt 感谢分享 对我触动很大 下来好好吸收实践
    picture2200
        23
    picture2200  
       Jun 3, 2018 via Android
    @LoremIpSum

    好处是:
    1. Ajax 请求好实现,不用考虑跨域。

    2. 部署停机好控制,假如在工作时段部署的话就可以先从反向代理下掉一台部署一台。

    3. 反向代理的常规功能,负载均衡等等。

    4. 以后可以在反向代理做网关功能,例如提前处理和加一些隐藏的 header,认证 token 等等。
    picture2200
        24
    picture2200  
       Jun 3, 2018 via Android
    @LoremIpSum

    坏处是

    看起来很复杂。

    多学习一个组件,要 tuning 反向代理。

    如果反向代理需要高可用的话,需要用 dns 做 load balance 也就是 GSLB 功能。
    ech0x
        25
    ech0x  
       Jun 3, 2018 via iPhone
    这是微服务????
    learnshare
        26
    learnshare  
       Jun 3, 2018 via Android
    这顶多叫页面插件化
    zhjits
        27
    zhjits  
       Jun 3, 2018
    pjax 了解一下
    mritd
        28
    mritd  
       Jun 3, 2018 via iPhone
    你怕是对微服务有什么误解吧
    dopdopdop
        29
    dopdopdop  
       Jun 3, 2018
    ngnix 反向代理
    restful api
    中间件包装接口
    jatesun
        30
    jatesun  
       Jun 3, 2018
    兄弟你在开玩笑吧
    wellsc
        31
    wellsc  
       Jun 3, 2018
    what are you talking about?
    sylar1015
        32
    sylar1015  
       Jun 4, 2018
    如果所有模块都是自己开发,这样是不合适的;
    如果是需要集成其他厂家的页面,和自己的系统交互,我也在找这样的方案;
    About     Help     Advertise     Blog     API     FAQ     Solana     1429 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 165ms UTC 17:02 PVG 01:02 LAX 10:02 JFK 13:02
    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