文/刘阳王志谦
随着网络在生活中适用面越来越广,使得大部分的网络服务器在固定时间内所需处理的客户请求在不断的增多。目前广泛实施的DHCP逻辑框架——即基于failover草案的双机服务模型,已不可能再进一步的优化,只能通过硬件设备的改良来提升服务效率。所以引入新逻辑框架来解决目前DHCP服务面临的瓶颈是有其必要性的。
现有的DHCP的多处理机服务设计主要是两种,其一是将所有的数据保存在数据库,数据存取以及数据查询都交由数据库来完成;另一种是将服务器的IP池划分为若干个IP段,每一段由一个服务器来负责IP地址的分配,同时每台服务器采用多线程来并行处理客户请求以及1∶N的冗余方案来应对服务器崩溃的情况。
目前所有集群化服务的设计中,共享存储的应用较为广泛,实现方式主要分为基于高速缓存行的硬件实现和基于虚存页的软件实现,以及目前应用较多的存储结构主要是两大类:NUMA(non-uniformMemoryAccess,非一致访存结构)和COMA(CacheOnlyMemoryArchitecture,唯高速缓存结构)。前者的做法是:每一个共享页都有固定的主节点,每一个处理机需要资源时都是从主节点处获取该共享页的备份,除此之外所有的处理机都必须根据一致性协议将相对于主节点的页差(diff)传回到主节点进行数据更新。诸如JIAJIA、Cashmere等系统都是基于该存储结构来实现的;后者则不是基于主节点的对称存储结构。其思想是:每一个拥有该共享页的处理机都将保存这个共享页和相应的diff,如果一旦其他的处理机需要该共享页时,就会向当前所有持有该共享页的处理机发出请求,持有该页的处理机就会将共享页和diff一起发送到请求源。ThreadMarks、CVM等系统都是基于这种方法来实现的。
本文的方案的设计场景是在一个局域网内——实现基于局域网内的DHCP服务集群化,如图1所示。将所有的DHCP服务器放置在同一个网段。采用共享存储的方法来实现多处理机的数据的一致性。虽然是基于局域网的DHCP集群化服务,但是对于今后的DHCP云服务的思想有一定程度上的吻合,所以姑且可以将本文看成是DHCP云服务的小范围尝试。