高可用高性能系统(九)UDP的应用

来源:互联网 发布:钢铁少女数据 编辑:程序博客网 时间:2024/04/28 18:03
    UDP对实现高可能高性能系统有啥好处呢?其实UDP的好处是间接的。我们知道UDP和TCP不同的是,UDP不保证可靠性,他只管发,不管收没收到。也就是说一个报文,他只会发一次而已。而TCP就必须靠复杂的机制保证可靠性。而且,UDP还具有广播,可以一次让多台机器收到报文,如果靠TCP的话,就必须发多次,性能上,当然差别很大了。
    以上只是简单介绍下UDP的特性,下面我们来引入实际的例子。我假设有N个DMBS,有个数据必须同时写入到这些数据库中,同时还保证成功。这个案例在第五章基于规则的路由请求中有提到过。这个案例看似简单,其实十分复杂难办。如果我将N个DBMS的写操作做为一个事务,那么这个写操作的成功将受到N个因素影响,任何一个失败,都将导致整个事务失败。而且,如果是以TCP来传输这个写操作的话,还必须发送N次,在所有的写操作成功后才被认为是成功了。
    如果是UDP的话,可以用多播或者广播的方式,发送一次就可以了。即使不是以这种方式,那么我们用UDP报文发送的话,也不用等待太长的时间。在很多情况下,N个DBMS的写操作并不需要构成一个完整的事务。可能有一个核心的DMBS需要保证他的完整性,而其他DBMS相对来说,并不需要那么苛刻的要求,比如查询。查询是个很费资源的操作,将查询请求放置在一个单独的DBMS是很明智的做法,将这么耗资源的操作独立起来,可以避免核心操作被干扰。在这种情况下,我们只要保证核心数据库的写操作是成功的就行了。即使查询数据库的写操作失败,我们依然可以将他缓冲起来,在合适的时候在发送。UDP正好符合这个需求,而且在性能上要优于TCP的传输。
    UDP是不可靠的传输,这个我们必须要记住。但是我们可以在UDP上附加一个简单的机制保证他的可靠性,过程可以象TCP那样。TCP的可靠性我们是无法选择,但是UDP的可靠性,我们可以选择。我们可以根据需要解除这种附加的机制,来提高性能或者实现可用性。
原创粉丝点击