1.本技术涉及通信技术领域,尤其涉及一种时间同步系统、方法和容器云平台。
背景技术:2.相关技术中,容器云平台的时间同步方法,是先解决云平台内物理层容器集群物理机之间的时间同步,再通过物理层定时向虚拟层进行时间发播,来实现虚拟层时间同步,最后,容器内的客户端时间再和容器宿主机的时间进行同步。
3.发明人研究发现,上述方案中,首先都需要进行物理机一级的时间同步,然后再从物理机广播时间给虚拟机,或者虚拟机通过协议方式和物理机同步时间,最后容器内部客户端才能获取所在宿主机(物理机或者虚拟机)时间,来更新自己的时间,整个更新过程涉及多层同步,容易降低时间精度。
技术实现要素:4.本技术的目的在于提供一种时间同步系统、方法和容器云平台,以解决现有的时间同步方案存在的时间精度低的问题。
5.第一方面,提供了一种时间同步系统,系统包括时间服务器、存储服务器和容器集群,容器集群上运行有多个客户端;
6.时间服务器,用于将目标系统时间写入到存储服务器中;
7.客户端,用于响应目标系统时间写入到存储服务器,从存储服务器读取目标系统时间,并依据目标系统时间更新客户端的客户端系统时间。
8.在一种实施方式中,时间服务器,还用于将目标系统时间发布至存储服务器的目标主题中;
9.存储服务器,响应目标系统时间发布至存储服务器的目标主题中,向订阅了目标主题的客户端推送发布通知消息;
10.客户端,响应发布通知消息,从存储服务器中读取与目标主题对应的目标系统时间。
11.在一种实施方式中,客户端,还用于调用存储服务器的接口监听存储服务器,并当监听到存储服务器写入了目标系统时间时,读取存储服务器写入的目标系统时间。
12.在一种实施方式中,时间服务器,还用于定时获取目标系统时间,并将定时获取的目标系统时间写入存储服务器,以更新存储服务器中已写入的目标系统时间。
13.在一种实施方式中,时间同步系统包括存储集群,存储集群包括控制模块和一个以上存储服务器;
14.时间服务器,用于将目标系统时间同步到存储集群中的所有存储服务器中;
15.控制模块,用于当存储集群中超过预设数量的存储服务器已写入目标系统时间时,则向时间服务器反馈写入成功消息。
16.第二方面,一种容器云平台,其特征在于,包括上述第一方面的时间同步系统。
17.第三方面,提供一种基于时间同步系统的时间同步方法,该系统包括时间服务器、存储服务器和容器集群,容器集群运行有多个客户端,方法包括:
18.时间服务器将目标系统时间写入到存储服务器中;
19.客户端端响应所述目标系统时间写入到所述存储服务器,从存储服务器中读取目标系统时间,并依据目标系统时间更新客户端的客户端系统时间。
20.在一种实施方式中,时间服务器将目标系统时间写入到存储服务器中,包括:
21.时间服务器将目标系统时间,发布至存储服务器的目标主题;
22.存储服务器响应目标系统时间发布至目标主题中,向订阅了目标主题的客户端,推送发布通知消息;
23.客户端响应目标系统时间写入到存储服务器,从存储服务器读取目标系统时间,包括:
24.客户端响应发布通知消息,从存储服务器中读取与目标主题对应的目标系统时间。
25.在一种实施方式中,客户端响应目标系统时间写入到存储服务器,从存储服务器读取目标系统时间,包括:
26.客户端调用存储服务器的接口监听存储服务器,并当监听到存储服务器写入了目标系统时间时,读取存储服务器写入的目标系统时间。
27.在一种实施方式中,时间服务器将目标系统时间写入到存储服务器中之后,方法还包括:
28.时间服务器定时获取目标系统时间,并将定时获取的目标系统时间写入存储服务器,以更新存储服务器中已写入的目标系统时间。
29.在一种实施方式中,时间同步系统包括存储集群,存储集群包括控制模块和一个以上存储服务器;
30.时间服务器将目标系统时间写入存储服务器中,包括:
31.时间服务器将目标系统时间,写入存储集群中的所有存储服务器中;
32.当存储集群中超过预设数量的存储服务器已写入目标系统时间时,控制模块向时间服务器反馈写入成功消息。
33.在本技术提供的其中一个方案中,需要进行时间同步的容器内的客户端不需要和时间服务器进行同步,时间服务器只需要将自己获取到的目标系统时间更新给存储服务器就行,其他需要同步时间的容器内部客户端,直接获取存储服务器中时间服务器所写入的时间,使容器集群的客户端可及时获取并更新容器客户端的内部客户端系统时间,也不需要像传统方案那样需要多层同步,进而减少了时间损耗,提高了时间精度。
附图说明
34.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
35.图1是本技术一种实施例提供的一种时间同步系统的一结构示意图;
36.图2是本技术一种实施例提供的一种时间同步系统的另一结构示意图;
37.图3是本技术一种实施例提供的一种时间同步方法的一交互示意图;
38.图4是本技术一种实施例提供的一种服务器的结构示意图。
具体实施方式
39.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
40.本技术主要提供了一种时间同步系统、容器云平台,和对应的时间同步方法,为了说明本技术的技术方案,下面通过不同的具体实施例来分别进行说明。
41.实施例一
42.如图1所示,本实施例提供了一种时间同步系统,所述系统包括时间服务器、存储服务器和容器集群,所述容器集群运行有多个客户端,其中:
43.所述时间服务器,用于将目标系统时间写入存储服务器中;
44.所述客户端,用于响应目标系统时间写入到存储服务器,从所述存储服务器读取所述目标系统时间,并依据所述目标系统时间更新所述客户端的客户端系统时间。
45.本实施例中,时间服务器是一个能够获取到符合预设条件的目标系统时间的服务器,符合预设条件指的是,该目标系统时间符合标准时间或者其他预先设定的同步时间,该标准时间指的是从卫星导航系统或者其他能提供专业时间的服务器所获取的时间,其他预先设定的同步时间指的是为了客户端的同步工作需求,而另外设置的参考时间。所述时间服务器,用于将符合预设条件的目标系统时间写入所述存储服务器中后,若写入成功,所述存储服务器响应时间服务器的写入成功,向时间服务器反馈写入成功消息。若写入失败,所述存储服务器响应该写入失败,向时间服务器反馈写入失败消息,以告知时间服务器。
46.存储服务器在时间同步系统中,扮演中间服务器的角色,主要用于为客户端提供调用接口,以供客户端获取时间服务器所写入的目标系统时间。
47.容器集群,是建立在一个或多个服务器上的容器集群,例如,上述容器可以是docker容器等,容器集群中的容器可以运行于物理机或者虚拟机上,具体不做限定,每个容器上一般搭载(运行)有一客户端,容器集群上的客户端也就是要进行时间同步的同步客户端,该客户端可以指的是微服务中的应用客户端或用户系统,具体也不做限定。
48.如图2所示,容器集群包括客户端1、客户端2、客户端3、...、客户端n,当所述存储服务器写入了所述目标系统时间时,容器集群上的客户端能够响应存储服务器写入了所述目标系统时间,从存储服务器中读取上述目标系统时间以更新自己的客户端系统时间,这样容器集群上的客户端均能够得到相同的客户端系统时间,使容器集群上的多个客户端达到时间同步的目的。本技术实施例中的容器可以是直接搭载在物理机上,也可以是搭载在物理机上运行虚拟机,具体不做限定。
49.可见,与传统的方案相比,本实施例提供的时间同步系统具有如下特点:
50.需要进行时间同步的客户端不需要和时间服务器进行同步,时间服务器只需要将自己获取到的目标系统时间更新给存储服务器就行,其他需要同步时间的容器内部客户端,只需要响应时间服务器写入上述目标系统时间,获取存储服务器中时间服务器所写入
的时间,使容器集群的每个客户端可及时获取并更新容器客户端的内部客户端系统时间,也不需要像传统方案那样需要多层同步进而减少了时间损耗,降低了额外的计算和维护成本,也提高了时间精度。
51.而且,本技术实施例提供的时间同步系统,无需通过像其他传统的系统配置方式实现,或者复制容器的宿主机的相关文件到容器内等繁琐操作,对于越来越复杂或者大型的容器集群来说说,传统方案中这样修改配置文件的方式,也会无形增加了运维人员的工作量,而本技术实施例能够有效地避免了上述繁琐的工作量,也是具有较强的实用性和扩展性。
52.如图2所示,在一些实施例中,该时间同步系统还包括存储集群,在一实施例中,该时间同步系统包括一个以上容器集群,该存储集群上包括控制模块(图中未示出)和一个以上存储服务器,示例性的,该存储集群可以是etcd集群,存储集群中的存储服务器指的是etcd集群上的etcd服务器,etcd集群上包括多个etcd服务器。
53.如图2所示,该时间同步系统包括容器集群1、...、容器集群m,每个容器集群可以运行有多个客户端,存储集群包括存储服务器1、存储服务器2、...、存储服务器n,容器集群1包括客户端1、客户端2和客户端3,容器集群m包括客户端1、客户端2和客户端3等。需要说明的是,etcd集群是一个高可用的键值(key/value)存储系统,在对etcd服务器写入目标系统时间时,可调用etcd服务器提供的写入接口,将目标系统时间以《key,value》方式写入etcd集群中的存储区域中。
54.可见,本实施例可以利用etcd集群本身提供的高可用性,来保证容器中的每个客户端均能够随时获取到etcd服务器上写入的目标系统时间,其中,本实施例中提及的存储集群还可以是其他的存储集群服务器,如未来中更高用性的存储集群,本实施例不做限定。
55.其中,当时间同步系统包括存储集群时,存储集群的控制模块用于管理存储集群上的存储服务器,包括接口调用、信息同步等管理。所述时间服务器,还用于将所述目标系统时间同步到所述存储集群中的所有所述存储服务器中;所述控制模块,用于当所述存储集群中超过预设数量的所述存储服务器已写入所述目标系统时间时,则向所述时间服务器反馈写入成功消息。
56.在该实施例中,由于容器集群中需要同步的客户端较多的情况,为了保证后续的多个客户端能够及时响应时间服务器写入目标系统消息,从存储集群上调用到相应的接口,以获取所需的同步时间,时间服务器需将所述目标系统时间写入到所述存储集群中的所有所述存储服务器中,直至存储集群中的大多数存储服务器已成功写入上述目标系统时间。
57.例如,如果存储集群中有三台存储服务器,那么需要有两台存储服务器都已同步到该目标系统时间,如果有五台存储服务器,则需要其中的三台服务器已同步到该目标系统时间。如果存储集群中满足超过了预设数量的存储服务器写入了上述目标系统时间,说明当前足够使得后续的客户端的同步需求,则控制模块向时间服务器反馈写入成功消息,以通知时间服务器目前已同步得差不多,时间服务器当前可无需进行目标系统时间的写入动作;如果存储集群中不满足超过了预设数量的存储服务器写入了上述目标系统时间,可能是某些原因导致一些存储服务器写入失败,说明当前不足够后续的客户端的同步需求,则控制模块会向时间服务器反馈写入失败消息,以通知时间服务器继续向失败的存储服务
器写入目标系统时间,直至超过了预设数量的存储服务器写入了上述目标系统时间。
58.需要说明的是,为了客户端能够及时、准确的接收到所述存储服务器写入的所述目标系统时间,本实施例包括了两种方式使得客户端能够同步到目标系统时间,如下:
59.方式1:所述时间服务器,还用于将所述目标系统时间发布至所述存储服务器的目标主题中;所述存储服务器,响应所述目标系统时间发布至所述存储服务器的目标主题中,向订阅了所述目标主题的客户端推送发布通知消息;所述客户端,响应所述发布通知消息,从所述存储服务器中读取与所述目标主题对应的所述目标系统时间。
60.在该方式1中,时间服务器在获取到符合预设条件的目标系统时间之后,采用发布/订阅的方式,将所述目标系统时间发布至所述存储服务器的目标主题中,需要说明的是,该目标主题是存储服务器划分出的用于发布目标系统时间的主题(topic),该目标主题对应一存储区域,发布至该目标主题上的目标系统时间将存储于该存储区域中,目标主题可以视为发布消息的一个标识,消息发布者可以为发布消息添加主题,并按照该主题发布到消息中间件中,以供消息订阅者订阅所需的主题,其中,本实施例将为目标系统时间所设置的主题称为目标主题。此时时间服务器相当于是一消息发布者,存储服务器相当于消息中间件,而客户端相当于消息订阅者(即消息消费者),目标系统时间即为发布消息。客户端可用于订阅存储服务器上的目标主题,如在客户端在启动时订阅该目标主题,这样,当时间服务器向目标主题写入目标系统时间时,存储服务器会响应时间服务器写入目标系统时间,为订阅了该目标主题的客户端,及时推送发布通知消息,使得客户端响应所述发布通知消息,从所述存储服务器中读取所述目标主题对应的目标系统时间。
61.通过该实施例可以看出,一但目标主题写入上的目标系统时间,订阅了该目标主题的多个客户端便能及时得到目标系统时间,容器集群上的客户端达到时间同步的目的。
62.其中,当时间同步系统包括存储集群时,此时的存储集群相当于一消息中间件,时间服务器在获取到目标系统时间之后,采用发布/订阅的方式,将所述目标系统时间同步发布至存储集群的多个存储服务器中,此时,目标主题对应存储集群的存储区域,直至储存集群中超过预设数量的存储服务器的目标主题同步到上述目标系统时间,保证后续的多个客户端能够及时从存储集群上调用到相应的存储服务器。这样,当目标主题上对应的目标系统时间有变化时,容器集群中已订阅了该目标主题的客户端,便能及时收到发布通知消息,从而订阅了该目标主题的客户端响应发布通知消息,调用存储集群中的存储服务器的监听接口,以与读取目标主题对应的目标系统时间。
63.需要说明的是,当推送发布通知消息时,存储服务器可以记录订阅了目标主题上的客户端进行记录,以便为订阅了该目标主题的客户端推送发布通知消息。
64.另外需要说明的是,订阅了该目标主题的客户端响应发布通知消息,调用存储集群中的存储服务器时,控制模块会为订阅了该目标主题的客户端路由合适的存储服务器读取接口(如http接口),以使客户端通过该存储服务器读取接口,从存储服务器中读取与目标主题对应的目标系统时间。也就是说,每个存储服务器都具有对外调用读取接口的服务能力,多个存储服务器组成一个集群,但外部的客户端某一个时刻具体调用哪个存储服务器,是由控制模块依据集群内部机制来决定的,即某一时刻会将客户端的调用请求路由到某一台存储服务器。
65.方式2:客户端用于调用所述存储服务器的监听接口监听所述存储服务器,并当监
听到所述存储服务器写入了所述目标系统时间时,读取所述存储服务器写入的所述目标系统时间。
66.在该方式2中,与方式1不同的地方在于,客户端是主动监听存储服务器是否写入有目标系统时间的动作,方式1是客户端被动依据发布通知消息来读取目标系统时间,并当监听到所述存储服务器写入了所述目标系统时间时,读取所述存储服务器写入的所述目标系统时间。
67.通过该实施例可以看出,一但存储服务器写入了目标系统时间,容器集群上的多个客户端便能得监听并读取到该目标系统时间,从而更新自身的客户端系统时间,使得容器集群上的多个客户端达到时间同步的目的。
68.其中,当时间同步系统包括存储集群时,时间服务器在获取到目标系统时间之后,时间服务器还用于将所述目标系统时间同步发布至存储集群的多个存储服务器中,直至储存集群中超过预设数量的存储服务器的目标主题同步到上述目标系统时间,保证后续的多个客户端能够及时从存储集群上调用到相应的存储服务器。这样,当监听到存储集群中存储服务器对应的目标系统时间有变化时,调用该存储服务器读取接口的客户端,便能及时读取对应的目标系统时间。
69.需要说明的是,客户端调用存储集群中的存储服务器时,控制模块会为客户端的调用请求路由合适的存储服务器读取接口(如http接口),以使客户端通过该存储服务器接口,监听该存储服务器的监听接口,并通过读取接口读取对应的目标系统时间。
70.通过上述方式1和方式2可以看出,本实施例提供了两种客户端及时同步系统时间的方式,当所述存储服务器写入了所述目标系统时间时,容器集群上运行的多个客户端能响应存储服务器写入了所述目标系统时间,从所述存储服务器读取所述目标系统时间,并依据所述目标系统时间更新所述客户端的客户端系统时间,使容器集群中的客户端达到时间同步的目的,而且无需像传统方案需设计物理层、虚拟层以及容器与虚拟层或物理层之间的交互,有利于提高同步的时间精度。
71.在一实施例中,所述时间服务器,还用于定时目标系统时间,并将定时获取的目标系统时间写入所述存储服务器,以更新所述存储服务器中已写入的目标系统时间。在该实施例中,可以将时间服务器的写入时间设计为一个定时任务,定时取目标系统时间定时写入到存储集群中的存储服务器,保证客户端能够接近实时的方式同步到服务器时间。
72.在一实施例中,提供了一种容器云平台,包括上述时间同步系统。根据以上时间同步系统的描述可见,本技术实施例提供的容器云平台,实现了容器云平台内,所有客户端的系统时间都可以和容器云平台内的时间服务器时间保持一致的目的,即实现了整体的时间同步方法,也能够提高容器云平台内的所同步的时间精度。
73.综上,本技术实施例提供的时间同步系统中,定义一台服务器作为时间服务器,并且可以将几台存储服务器部署成一个存储服务器集群,时间服务器利用存储服务提供的写入接口,定时将目标系统时间写入存储服务器的存储空间;其他运行在容器集群内部的客户端,监听存储服务器中存储的目标系统时间对应的时间值,一旦监听到该时间值变化,即刻获取时间值并更新自身的客户端系统时间,从而起到了对容器集群的客户端系统时间同步的效果,而且无需多层交互,可提高同步时间的精度。
74.实施例二
75.上述从系统角度对本技术实施例提供的时间同步系统进行了描述,下面为对基于该时间同步系统的时间同步方法进行描述,包括如下步骤:
76.s101:所述时间服务器将目标系统时间写入到所述存储服务器中;
77.s102:所述客户端响应所述目标系统时间写入到所述存储服务器,从所述存储服务器中读取所述目标系统时间,并依据所述目标系统时间更新所述客户端的客户端系统时间。
78.本实施例中,时间服务器是一个能够获取到符合预设条件的目标系统时间的服务器,符合预设条件指的是,该目标系统时间符合标准时间或者其他预先设定的同步时间,该标准时间指的是从卫星导航系统或者其他能提供专业时间的服务器所获取的时间,其他预先设定的同步时间指的是为了客户端的同步工作需求,而另外设置的参考时间。所述时间服务器,用于将符合预设条件的目标系统时间写入所述存储服务器中后,若写入成功,所述存储服务器响应时间服务器的写入成功,向时间服务器反馈写入成功消息。若写入失败,所述存储服务器响应该写入失败,向时间服务器反馈写入失败消息,以告知时间服务器。
79.存储服务器在时间同步系统中,扮演中间服务器的角色,主要用于为客户端提供调用接口,以供客户端获取时间服务器所写入的目标系统时间。
80.容器集群,是建立在一个或多个服务器上的容器集群,例如,上述容器可以是docker容器等,容器集群中的容器可以运行于物理机或者虚拟机上,具体不做限定,每个容器上一般搭载(运行)有一客户端,容器集群上的客户端也就是要进行时间同步的同步客户端,该客户端可以指的是微服务中的应用客户端或用户系统,具体也不做限定。
81.如图2所示,容器集群包括客户端1、客户端2、客户端3、...、客户端n,当所述存储服务器写入了所述目标系统时间时,容器集群上的客户端能够响应存储服务器写入了所述目标系统时间,客户端能够从存储服务器中读取上述目标系统时间以更新自己的客户端系统时间,这样容器集群上的客户端均能够得到相同的系统时间,使容器集群上的多个客户端达到时间同步的目的。本技术实施例中的容器可以是直接搭载在物理机上,也可以是搭载在物理机上运行虚拟机,具体不做限定。
82.可见,与传统的方案相比,本实施例提供的时间同步方法具有如下特点:
83.需要进行时间同步的客户端不需要和时间服务器进行同步,时间服务器只需要将自己获取到的目标系统时间更新给存储服务器就行,其他需要同步时间的容器内部客户端,只需要响应时间服务器写入上述目标系统时间,获取存储服务器中时间服务器所写入的时间,使容器集群的每个客户端可及时获取并更新容器客户端的内部客户端系统时间,也不需要像传统方案那样需要多层同步进而减少了时间损耗,降低了额外的计算和维护成本,也提高了时间精度。
84.而且,本技术实施例提供的时间同步方法,无需通过像其他传统的系统配置方式实现,或者复制容器的宿主机的相关文件到容器内等繁琐操作,对于越来越复杂或者大型的容器集群来说说,传统方案中这样修改配置文件的方式,也会无形增加了运维人员的工作量,而本技术实施例能够有效地避免了上述繁琐的工作量,也是具有较强的实用性和扩展性。
85.如图2所示,在一些实施例中,该时间同步系统还包括存储集群,在一实施例中,该时间同步系统包括一个以上容器集群,该存储集群上包括控制模块(图中未示出)和一个以
上存储服务器,示例性的,该存储集群可以是etcd集群,存储服务器指etcd集群上的etcd服务器,etcd集群上包括多个etcd服务器。
86.如图2所示,该时间同步系统包括容器集群1、...、容器集群m,每个容器集群可以运行有多个客户端,存储集群包括存储服务器1、存储服务器2、...、存储服务器n,容器集群1包括客户端1、客户端2和客户端3,容器集群m包括客户端1、客户端2和客户端3等。需要说明的是,etcd集群是一个高可用的键值(key/value)存储系统,本实施例可以利用etcd集群本身提供的高可用性,来保证容器中时间同步服务能够随时获取到etcd服务器上写入的目标系统时间,其中,本实施例中提及的存储集群还可以是其他的存储集群服务器,如未来更高用性的存储集群,本实施例不做限定。
87.其中,当时间同步系统包括存储集群时,存储集群的控制模块用于管理存储集群上的存储服务器,包括接口调用、信息同步等管理。在一实施例中,所述时间服务器将所述目标系统时间同步到所述存储集群中的所有所述存储服务器中;当所述存储集群中超过预设数量的所述存储服务器已写入所述目标系统时间时,所述控制模块则向所述时间服务器反馈写入成功消息。
88.在该实施例中,由于需要同步的客户端较多的情况,为了保证后续的多个客户端能够及时响应时间服务器写入目标系统消息,从存储集群上调用到相应的读取接口,以获取所需的同步时间,时间服务器需将所述目标系统时间写入到所述存储集群中的所有所述存储服务器中,直至存储集群中的大多数存储服务器已成功写入上述目标系统时间。
89.例如,如果存储集群中有三台存储服务器,那么需要有两台存储服务器都已同步到该目标系统时间,如果有五台存储服务器,则需要其中的三台服务器已同步到该目标系统时间。如果存储集群中满足超过了预设数量的存储服务器写入了上述目标系统时间,说明当前足够使得后续的客户端的同步需求,则控制模块向时间服务器反馈写入成功消息,以通知时间服务器目前已同步得差不多,时间服务器当前可无需进行目标系统时间的写入动作;如果存储集群中不满足超过了预设数量的存储服务器写入了上述目标系统时间,可能是某些原因导致写入失败,说明当前不足够后续的客户端的同步需求,则控制模块会向时间服务器反馈写入失败消息,以通知时间服务器继续向失败的存储服务器写入目标系统时间,直至超过了预设数量的存储服务器写入了上述目标系统时间。
90.需要说明的是,为了客户端能够及时、准确的接收到所述存储服务器写入的所述目标系统时间,本实施例包括了两种方式使得客户端能够同步到目标系统时间,所述客户端响应所述目标系统时间写入到所述存储服务器,从所述存储服务器读取所述目标系统时间,主要包括如下两种方式实现:
91.方式1:
92.所述时间服务器将目标系统时间写入到所述存储服务器中,包括如下步骤:所述时间服务器将所述目标系统时间,发布至所述存储服务器的目标主题;所述存储服务器响应所述目标系统时间发布至所述目标主题中,向订阅了所述目标主题的所述客户端,推送发布通知消息;
93.所述客户端响应所述目标系统时间写入到所述存储服务器,从所述存储服务器读取所述目标系统时间,包括:所述客户端响应所述发布通知消息,从所述存储服务器中读取与所述目标主题对应的所述目标系统时间。
94.在该实施例中,时间服务器在获取到符合预设条件的目标系统时间之后,采用发布/订阅的方式,将所述目标系统时间发布至所述存储服务器的目标主题中,需要说明的是,该目标主题是存储服务器划分出的用于发布目标系统时间的主题(topic),该目标主题对应一存储区域,发布至该目标主题上的目标系统时间将存储于该存储区域中,目标主题可以视为发布消息的一个标识,消息发布者可以为发布消息添加主题,并按照主题发布到消息中间件中,以供消息订阅者订阅所需的主题,其中,本实施例将为目标系统时间所设置的主题称为目标主题。此时时间服务器相当于是一消息发布者,存储服务器相当于消息中间件,而客户端相当于消息订阅者,目标系统时间即为发布消息。客户端可用于订阅存储服务器上的目标主题,如在客户端在启动时订阅该目标主题,这样,当时间服务器向目标主题写入目标系统时间时,存储服务器会响应时间服务器写入目标系统时间,可以为订阅了该目标主题的客户端,及时推送发布通知消息,使得客户端响应所述发布通知消息,从所述存储服务器中读取所述目标主题对应的所述目标系统时间。
95.通过该实施例可以看出,一但目标主题写入上的目标系统时间,订阅了该目标主题的多个客户端便能及时得到目标系统时间,容器集群上的客户端达到时间同步的目的。
96.其中,当时间同步系统包括存储集群时,此时的存储集群相当于一消息中间件,时间服务器在获取到目标系统时间之后,采用发布/订阅的方式,将所述目标系统时间同步发布至存储集群的多个存储服务器中,此时,目标主题对应存储集群的存储区域,直至储存集群中超过预设数量的存储服务器的目标主题同步到上述目标系统时间,保证后续的多个客户端能够及时从存储集群上调用到相应的存储服务器。这样,当目标主题上对应的目标系统时间有变化时,已订阅了该目标主题的客户端,便能及时收到发布通知消息,从而订阅了该目标主题的客户端响应发布通知消息,调用存储集群中的存储服务器,以读取与目标主题对应的目标系统时间。
97.需要说明的是,当推送发布通知消息时,存储服务器可以记录订阅了目标主题上的客户端进行记录,以便为订阅了该目标主题的客户端推送发布通知消息。
98.另外需要说明的是,订阅了该目标主题的客户端响应发布通知消息,调用存储集群中的存储服务器时,控制模块会为订阅了该目标主题的客户端路由合适的存储服务器接口(如http接口)以使客户端通过该存储服务器接口,从存储服务器中读取与目标主题对应的目标系统时间。也就是说,每个存储服务器都具有对外调用接口的服务能力,多个存储服务器组成一个集群,但外部的客户端某一个时刻具体调用哪个存储服务器,是由控制模块依据集群内部机制来决定的,即某一时刻会将客户端的调用请求路由到某一台存储服务器。
99.方式2:
100.所述客户端响应所述目标系统时间写入到所述存储服务器,从所述存储服务器读取所述目标系统时间,包括如下步骤:所述客户端调用所述存储服务器的监听接口监听所述存储服务器,并当监听到所述存储服务器写入了所述目标系统时间时,读取所述存储服务器写入的所述目标系统时间。
101.在该方式2中,客户端是主动监听存储服务器是否写入有目标系统时间的动作,方式1是客户端被动依据发布通知消息来读取目标系统时间,并当监听到所述存储服务器写入了所述目标系统时间时,读取所述存储服务器写入的所述目标系统时间。
102.通过该实施例可以看出,一但存储服务器写入了目标系统时间,容器集群上的多个客户端便能得知该目标系统时间并更新自身的客户端系统时间,使得容器集群上的多个客户端达到时间同步的目的。
103.其中,当时间同步系统包括存储集群时,时间服务器在获取到符合预设条件的目标系统时间之后,时间服务器会将所述目标系统时间同步发布至存储集群的多个存储服务器中,直至储存集群中超过预设数量的存储服务器的目标主题同步到上述目标系统时间,保证后续的多个客户端能够及时从存储集群上调用到相应的存储服务器。这样,当存储集群中存储服务器对应的目标系统时间有变化时,调用该存储服务器接口的客户端,便能及时收到,并读取对应的目标系统时间。
104.需要说明的是,客户端调用存储集群中的存储服务器时,控制模块会为客户端的调用请求路由合适的存储服务器读取接口(如http接口),以使客户端通过该存储服务器接口,读取对应的目标系统时间。也就是说,每个服务器都具有对外调用接口的服务能力,多个存储服务器组成一个集群,但外部时间同步客户端某一个时刻具体调用哪个存储服务器,是由控制模块依据集群内部机制来决定的,即某一时刻会将客户端的调用请求路由到某一台存储服务器。
105.通过上述方式1和方式2可以看出,本实施例提供了两种客户端及时同步系统时间的方式,当所述存储服务器写入了所述目标系统时间时,容器集群上运行的多个客户端能响应存储服务器写入了所述目标系统时间,从所述存储服务器读取所述目标系统时间,并依据所述目标系统时间更新所述客户端的客户端系统时间,使容器集群中的客户端达到时间同步的目的。
106.在一实施例中,该方法还包括如下步骤:所述时间服务器定时获取目标系统时间,并将定时获取的目标系统时间写入所述存储服务器,以更新所述存储服务器中已写入的目标系统时间。在该实施例中,可以将时间服务器的写入时间设计为一个定时任务,定时取目标系统时间定时写入到存储集群中的存储服务器,保证客户端能够接近实时的方式同步到服务器时间。
107.下面,结合图3,以调用etcd集群为例,对时间同步方法的一完整交互过程做一描述,包括如下步骤:
108.s10、时间服务器调用etcd集群的etcd服务器的写入接口,将符合预设条件的目标系统时间,以《key,value》方式写入到etcd服务器中。
109.在对etcd服务器写入目标系统时间时,调用etcd服务器提供的写入接口,将目标系统时间以《key,value》方式写入etcd集群中的存储区域中,其中,key表示目标系统时间,value表示目标系统时间值。
110.s20、时间服务器写入成功后,etcd集群响应该写入成功,向时间服务器返回写入成功消息。
111.etcd集群内部保证多数服务器都同步该时间数据后,向时间服务器返回写入成功。
112.s30、客户端响应时间服务器写入目标系统时间,调用etcd服务器的读取接口,以向etcd集群中的etcd服务器调用目标系统时间。
113.其中,客户端响应时间服务器写入目标系统时间,读取目标系统时间的方式可见
前述实施例的描述,也即上述方式1和方式2,这里不详细展开描述,例如,容器中的时间同步客户端在启动时,会订阅时间服务器发送目标系统时间时使用的目标主题的相同主题值,以调用etcd集群中相应etcd服务器的读取接口。
114.s40、etcd集群响应客户端的调用,向客户端返回目标系统时间。
115.容器云平台内位于容器中的客户端调用etcd服务器的读取接口,读取时间服务器写入的key值,使得etcd服务器返回该key相应的目标系统时间值value。
116.s50、时间服务器调用etcd集群的etcd服务器的写入接口,定时更新已写入的目标系统时间。
117.时间服务器会定时获取最新的目标系统时间,调用etcd服务的写入接口,定时更新目标系统时间相关的《key,value》。
118.s60、时间服务器更新成功后,etcd集群响应该更新成功,向时间服务器返回更新成功消息。
119.s70、客户端响应时间服务器更新上述对目标系统时间的更新,调用etcd服务器的读取接口,以向etcd集群中的etcd服务器调用已更新的目标系统时间。
120.s80、etcd集群响应客户端的调用,向客户端返回更新的目标系统时间。
121.步骤s50-s80中,位于容器中的所有同步客户端,会实时接收到更新的目标系统时间,使得客户端获取到时间变更数据,依据获取到的新value更新容器内的时间,完成同步工作。
122.综上,本技术实施例提供的时间同步方法中,定义一台服务器作为时间服务器,并且可以将几台存储服务器部署成一个存储服务器集群,时间服务器利用存储服务提供的写入接口,定时将目标系统时间写入存储服务器的存储空间;其他运行在容器集群内部的客户端,监听存储服务器中存储的目标系统时间对应的时间值,一旦监听到该时间值变化,即刻获取时间值并更新自身的客户端系统时间,从而起到了对容器集群的客户端系统时间同步的效果,而且无需多层交互,可提高同步时间的精度。
123.实施例三
124.在一个实施例中,提供了一种服务器,其内部结构图可以如图4所示,该服务器可以为上述时间同步系统中的时间服务器、存储服务器、或者运行有容器集群的服务器,该服务器包括通过系统总线连接的处理器、存储器和通信接口,其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性和易失性存储介质、内存储器。该存储介质存储有计算机程序。该服务器的通信接口用于与外部的外部服务器等连接通信,以获取所需的数据或指令,该计算机程序被处理器执行时以实现本技术实施例中提到的时间同步方法中时间服务器、或存储服务器的功能或步骤,或者使得该服务器的容器集群的客户端,能够实现本技术实施例中提到的时间同步方法中客户端的功能或步骤。
125.在一实施例中,提供了一种计算机可读存储介质,可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述时间同步方法中,时间服务器、或者存储服务器、或者运行有容器集群客户端的服务器的步骤或功能。
126.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
127.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。