零配置

关于零配置,最早我是在2010年做WLAN的时候了解到的。当时运营商的规范里面要求瘦AP架构下,AP要能够零配置启动。一个概念我当时第一感觉就是——简单,易维护。后续的VIS 2.0设计里面也沿用了这种集中式配置+客户端零配置的做法。最近在做RS重构,对这种架构有了更深一层的认识。

RS里,配置管理是一个非常重要的部分,另一块,就是media gateway。这里主要考虑media gateway的配置如何实现,由于media gateway很多库都是c/c++实现的,而且对效率比较敏感,所以用c/c++是顺理成章的事情。它的配置,其实非常简单,用1,2个table就可以满足需要,那么到底放在自己这块用c/c++实现呢,还是放到统一的配置管理服务上实现呢?

假如media gateway是一个单独的小产品,我们当然希望越简单越好,让media gateway自己保存配置。但是当它作为整个RS系统的一部分的时候,我们不得不从整体来考虑,这时候将配置管理部分抽离出来让一个平台来解决这些公共的功能才是最合理的做法。另一方面,让平台来做还可以借助第三方工具,一来提高了效率,二来而不用担心media gateway的代码过于臃肿。举个例子,系统平滑升级,我们需要考虑数据结构发生变化的时候,如何将现有数据迁移到新的结构中。这其实在JAVA中,比如hibernate,已经有很多工具/方法可以解决这种问题,我们甚至都不需要自己写SQL语句。但是在C/C++中实现这种功能,就会有点繁琐,甚至会影响性能和稳定性。

最后总结下一下,单独的小产品,自己管理配置最好不过。对于大系统而言,由平台统一管理才是王道。