高可用高性能系统(六)虚拟网

来源:互联网 发布:java布尔类型 编辑:程序博客网 时间:2024/03/29 06:27

    虚拟网在这个系统中作用是为了能更好控制请求和响应的处理。象DNS等标准的互联网组件来说,我们没有办法控制,但如果我们建立自己的虚拟网,那么就完全可以实现自己的DNS。象很多以DNS来实现负载均衡的系统来说,在这里都是很容易实现,当然这不是主要的考虑因素。
    我们假设有一个服务失效了,那么我们的传统做法如何处理呢?如果是通过DNS来实现负载均衡的话,实际只能删除改服务的IP,防止新的请求指向这个服务。如果是在网关之后,带集群的话,这个失效的管理可以由网关来切换。然而,如果是网关的话,同样将问题转移到网关失效的情况上。总之,在传统的网络服务中,和IP切换相关的操作十分困难。
    如果我们为系统建立一个虚拟网络,那么一切都在控制之中。很简单,IP策略,路由控制,请求分发都可以按照自己的规则来完成。我们继续以期货交易系统为例,如何利用虚拟网络来解决IP相关的问题。
    1、我们建立多个路由服务,这些路由服务通过IP地址和端口实现互联,从而构成了一个虚拟网络。
    2、每个路由服务本身指定一个虚拟IP地址。
    3、每个客户端可以自己指定一个IP地址,或者申请一个IP地址,当然可以是多个。这个和多网卡的概念是一样。
    4、服务被设定为路由服务的客户端,只是他们可以自己指定IP地址。
    5、当一个服务失效后,可以服务可以使用相同IP向路由服务注册,因此,请求能容易被接管。
    6、是否允许多个服务注册相同的IP,这个可以考虑,但后续的问题也比较多,个人不建议。

    一个期货经纪公司可以有很多营业部,这些营业部在物理上可能分布在很多地方,甚至跨越多个省市。但一个经纪公司在交易所中的帐号很有效,可能只有一个。每个营业部的交易请求都需要集中到总部。我们在营业部部署一个或者多个路由服务,将这些交易请求转发到总部,将一些营业部相关处理留在营业部。对营业部来说,相当于在局域网进行操作,他只需要知道提供服务节点的虚拟地址就可以了,这些服务究竟被部署在总部还是部署在本地,由路由服务来控制就可以了。


    我们可以在虚拟网中实现一个DNS服务,利用DNS来实现负载均衡在虚拟网中很容易被实现。如果我们有一个集群,那么可以在这个集群之前带多个路由服务,路由服务可以作为虚拟网的组件,也可以是真实存在的路由。当一个路由服务失效时,在虚拟网中很容易被其他路由服务接管,只要重新由另外的路由服务注册相同的IP就可以。如果我们是在多个节点部署相同的服务来实现高可用,那么在虚拟网中完全可以通过相同的方式来切换服务。
    有一种方案,由同一网关来接收请求,但由具体完成处理的服务来返回结果来进行负载均衡。在传统的方案,需要建立2个或者多个TCP通道来处理请求接收和结果返回。但在虚拟网中,这个也不需要做这个处理,这是因为路由服务也是虚拟网的一个组件,路由选择可以由他自动完成,不需要另外建立。
    我们知道P2P网络在处理节点失效的情况十分有效,因为存在一个tracker服务跟踪所有的连接情况。我们在虚拟网中,不一定有tracker,但路由服务是知道客户端的存活情况,这个可以实时回馈到特定服务器中,这样来降低失效响应时间是有效的。  

原创粉丝点击