打车软件背后的配置管理难题
不到三年时间,打车软件之间的烧钱大战便彻底改变了大家的消费习惯,街边招手打车这种传统模式逐渐被取代,有了手机软件,轻轻一按即可轻松出行。作为国内专车市场的拓荒者,创立于2010年的易到用车,通过400电话和互联网提供专车服务的时间要早于Uber和滴滴快的。易到用车担任架构师刘宇在会上与大家进行了打车领域高效可靠的配置管理系统设计与实现技术的分享。
随着移动出行领域的飞速发展,传统的基于文件的配置管理方式已经不能满足需求,甚至在多环境、多应用的场景给工程师制造了巨大的麻烦,降低了工作效率。配置文件和代码耦合在一起,多环境下配置不一致,增加了开发、测试人员的工作量。新建环境难度大,不利于业务的飞速增长。而由于配置引起的错误,造成不能迅速定位的问题。各个应用独自管理配置,效率低。
因此,易到用车在此背景下,自主研发了易到配置管理系统。据刘宇介绍,它具有如下特点:
1.所有环境配置项集中管理,一处修改,相应机器实时同步更新
2.分布式设计,高可用,对于服务器宕机,升级等情况对客户端透明
3.所有系统资源统一管理,以引用的方式提高配置效率
4.支持API方式修改、发布配置项
5.分环境,分应用的权限控制
6.管理后台提供对环境,应用,资源和配置项的添加,查询WEB接口,并支持快速环境复制,以及批量配置等功能提高配置效率
7.配置项支持多次改动,一键发布,及时生效的功能
8.客户端部署方便,使用简单,支持C,PHP语言接口
9.基于每个配置项的日志功能,方便定位问题和审计
其配置中心角色分别部署于各个环境,刘宇建议,每个环境至少部署两个中心,每个中心的地位对等。配置中心可同时为多个环境服务,即Cache不同环境的配置项。中心缓存每个环境配置项及其变化信息(Changelist),Changelist用于实现Agent的增量更新,以daemon方式运行。
客户端Agent&SDK方面,Agent与配置中心之间以TCP长连接通信,以私有协议获取配置项,消息体以json做为格式;Agent定时轮询中心配置项的变化,并进行增量更新;Agent的缓存以共享内存的方式实现;App通过SDK在Agent的缓存中查找配置项;Agent以daemon方式运行