本文将介绍linux上系统时间跳变的定位过程,换个角度来思考如何处理这类的问题。
centos6.5系统下,在测试环境中出现了时间跳变,影响了部分业务的正常运行。通过date可以看到系统时间确实和当前时间出现了几个小时的差异,并且修正回来之后,间隔一段时间又复现。
前面几项排查无异常,只能对时间相关的进程做修改,跟踪调用过程。
修改方法:重命名程序,加入同名的脚本,内部记录调用该命令的父进程信息,以及执行的命令,并打印日志信息,便于排查。日志需要注意回滚。
1.date命令
本文将介绍分布式系统中常见的数据查询方法,也以此作为一个记录,后续如果接触新的内容会初步更新此文档。
#客户单查询
所谓的客户端查询是查询的控制逻辑在客户端进行控制,负责串联整个查询工作流。
抛开客户端缓存而言,数据路由信息的维护绝大多数而言不会放在客户端实现,因此需要从服务端获取进行定位,大致过程如下:
根据查询的具体key,发送请求到维护路由表的服务端,获取key的信息或位置
根据查询的key所在的具体数据维护位置发起读取请求
实际key对应数据维护的服务器获取实际数据返回给客户端
客户端如果需要进行范围或做全局扫描而言,则和简单查询会有所差异,差异在于需要持续获取路由表信息,以及客户端需要对数据进行过滤汇聚,相当于组织一次之后在返回数据给调用方。
这个很好理解,对于单机系统,比如mysql,客户端只是发起请求,但是真正执行的是mysql服务器。当然mysql对于查询而言会自己解析请求,优化查询任务,执行等。
和单机的区别是在于对一个多机的系统中,也会存在轻客户端重服务端场景。 像solr,greenplum,hadoop mr等,服务端接受客户端请求,生成查询树,逐步执行,汇聚,之后才返回数据给客户端。这里还涉及一个性能问题,是单机接受查询任务还是多机接受查询任务,是否在并行查询的同时可以支持高并发处理。
xxxxxxxxxx关于倒计时,如果你有什么更好的解决方案,欢迎评论交流。