Java客户端自动升级实现思路

    众所周知,CS模式的Client的升级是一件挺麻烦的事情。Java客户端也不例外。TCC是一个分布式的测试覆盖率检测工具,目前,在淘宝、支付宝、阿里云、B2B等公司中共有上百个应用在使用。其中,TCC的客户端被部署到上百台linux服务器上。如果TCC的客户端需要升级,没有自动升级的支持,就需要手动对每一台服务器进行升级,这将会非常痛苦。针对这个问题,富曲于年初开发了TCC客户端的自动升级功能,极大地减少了TCC客户端升级所带来的维护负担。
    在我看来,TCC客户端的自动升级功能,是TCC工具的亮点特性。简单来讲,就是只要在TCC的服务端更新TCC客户端的版本(zip包),并且更新记录版本号的文件version_info.txt。TCC客户端在其本地也有一个记录当前版本号的文件vertion.txt,里边只有一行文字,也就是当前TCC客户端的版本。TCC客户端每隔一段时间(目前是设置为5分钟检查一次,这里,可以根据实际的需要去设定检查周期)向TCC服务端请求vertion信息,如果发现服务端的版本更新(版本号更大),此时,TCC客户端请求下载新的客户端压缩包,下载完成后,解包,然后替换客户端的jar文件。然后,启动shell脚本(shell脚本会先启动一个Java进程(记为进程1),然后紧接着杀掉TCC客户端进程,进程1会先sleep一两分钟(确保TCC客户端进程退出),然后执行一个shell脚本,该脚本是重新启动TCC客户端。等TCC客户端启动成功,进程1退出。Java客户端的大致升级过程就是这样。

你可能感兴趣的:(java,客户端,自动升级,实现思路)