V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sharewind
V2EX  ›  Google

google 是如何实现不同的服务同一个 ip 地址?

  •  
  •   sharewind · 2014-10-29 10:31:17 +08:00 · 3901 次点击
    这是一个创建于 3657 天前的主题,其中的信息可能已经有所发展或是发生改变。
    17 条回复    2014-10-29 22:23:57 +08:00
    tabris17
        1
    tabris17  
       2014-10-29 10:40:39 +08:00
    host呗
    xidianlz
        2
    xidianlz  
       2014-10-29 10:42:55 +08:00
    可能你看到的只是放在公网的一个代理服务器,真实的服务器可能藏在代理服务器后面,根据你的请求转发到不同的真实服务器。
    以上言论均属猜测。
    millken
        3
    millken  
       2014-10-29 10:43:04 +08:00
    BGP
    lhbc
        4
    lhbc  
       2014-10-29 10:47:14 +08:00
    你是指不同的服务器使用同一个IP还是同一台服务器承载多种业务?

    前者:
    anycast+集群。
    后者:
    数据都在数据中心里,前端(anycast+集群)根据业务类型(简单来讲就是URL)提交给相应的数据中心服务器处理。
    clino
        5
    clino  
       2014-10-29 10:57:17 +08:00
    反向代理不就行了,不同的域名转给不同的应用处理
    mhycy
        6
    mhycy  
       2014-10-29 11:03:15 +08:00
    一直很想知道入口服务器是如何保证高可用的....
    tmqhliu
        7
    tmqhliu  
       2014-10-29 11:19:19 +08:00
    @mhycy Google的入口服务器是分布在全球的,使用 Anycast 技术任何一台都可以充当服务器
    jasontse
        8
    jasontse  
       2014-10-29 11:21:48 +08:00 via iPad
    这很稀奇吗? 虚拟主机不就是这样的?
    mhycy
        9
    mhycy  
       2014-10-29 11:25:33 +08:00
    @tmqhliu
    事实上一个区域同一时间同一个请求访问的服务器是同一台的.即使检测到离线并切换这中间也会有数秒的停顿时间.
    而且即使是某一个特定的区域,Anycast也只能把多个IP解析到多个服务器上,不可能单个IP解析到多个服务器,如果单个IP解析到多个服务器的话请求本身就不是连续的了.如果引入额外的同步设备,这也会增加单点故障的风险.
    lhbc
        10
    lhbc  
       2014-10-29 11:52:42 +08:00
    @mhycy 肯定会使用集群的,所以特定区域的单台服务器故障不会有任何影响
    如果是某地区的线路故障,Anycast把路由切换至其他区域也就是瞬间的事,而且这应该是有监控并且自动切换的
    mhycy
        11
    mhycy  
       2014-10-29 12:07:10 +08:00
    @lhbc 集群说着容易,但是实现难点很多.

    入口服务器即使是个集群,对于一个session必定会在请求的时间内解析到某个特定的机子.
    而解析到某个特定的机子这中间必须经过一个负载均衡设备.
    而这个设备本身会引入额外的单点故障风险.
    前端服务器切换这个动作肯定可以瞬间完成,但是切换之前这个心跳信息因为负载的关系肯定不会过于频繁.
    这就会引出一个问题,如果这个负载均衡设备出现单点故障的话那就必定会产生一段时间的服务中断.

    那么如何保证这一个点高可用呢?
    learnshare
        12
    learnshare  
       2014-10-29 12:08:31 +08:00
    反向代理不是很简单?
    mhycy
        13
    mhycy  
       2014-10-29 12:12:46 +08:00
    @lhbc
    @tmqhliu

    换个说法好了,写的自己都乱了....囧

    请求的上下行数据流本身是分散的数据包
    所以数据流本身不可能转发到两台不相关的机子.

    只能有一个机子接收,那么那个机子就是事实上的入口服务器.
    入口服务器可以损坏,但是在损坏这段时间,毕竟会中断一部分的数据流
    如果要避免这个情况发生,可以镜像处理.
    但是镜像也最终会汇聚到一个点进行判断,然后再最终输出.
    这样判断设备本身产生了新的单点故障风险.

    所以纠结的问题就是:如何避免这个单点存在呢?
    lhbc
        14
    lhbc  
       2014-10-29 13:10:23 +08:00 via iPhone
    @mhycy session,cookies都可以存在另外的集群上,根本不存在单点故障。
    mhycy
        15
    mhycy  
       2014-10-29 13:15:47 +08:00
    @lhbc

    这个session指的不是web上面的session
    指的是TCP会话本身,别误会...
    wdlth
        16
    wdlth  
       2014-10-29 13:54:07 +08:00
    本来就是前端服务器,就像CDN一样,服务是由后端提供的。
    moemoedar
        17
    moemoedar  
       2014-10-29 22:23:57 +08:00 via Android
    任播技术
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:36 · PVG 00:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.