欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

NTP方式保证以时间戳同步可靠性

程序员文章站 2022-04-26 19:57:26
...

数据库同步的方式有设置标志位同步方式、以时间戳同步的方式,对于一对一的同步这两种方式都满足,但是对于一对多的同步,则只能选择时间戳的同步方式了,但是已时间戳同步的方式的一个问题是如何可靠的保证数据可以不丢失的同步到数据库中。下面有两种方式

数据库同步的方式有设置标志位同步方式、以时间戳同步的方式,对于一对一的同步这两种方式都满足,但是对于一对多的同步,则只能选择时间戳的同步方式了,但是已时间戳同步的方式的一个问题是如何可靠的保证数据可以不丢失的同步到数据库中。下面有两种方式来保证以时间戳同步的可靠性。

1、计算服务器与客户端两台电脑的时间差,将该时间差记入在同步时间的比对当中,下图是使用kettle做的一个计算同步的时间差的思路:

NTP方式保证以时间戳同步可靠性

该思路的xml代码为:

getLeadValueNormal0/downloadServerData/commonData
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDTRANSNAMEYTRANSNAMESTATUSYSTATUSLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSSTARTDATEYSTARTDATEENDDATEYENDDATELOGDATEYLOGDATEDEPDATEYDEPDATEREPLAYDATEYREPLAYDATELOG_FIELDYLOG_FIELD
ID_BATCHYID_BATCHSEQ_NRYSEQ_NRLOGDATEYLOGDATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSINPUT_BUFFER_ROWSYINPUT_BUFFER_ROWSOUTPUT_BUFFER_ROWSYOUTPUT_BUFFER_ROWS
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATELOGGING_OBJECT_TYPEYLOGGING_OBJECT_TYPEOBJECT_NAMEYOBJECT_NAMEOBJECT_COPYYOBJECT_COPYREPOSITORY_DIRECTORYYREPOSITORY_DIRECTORYFILENAMEYFILENAMEOBJECT_IDYOBJECT_IDOBJECT_REVISIONYOBJECT_REVISIONPARENT_CHANNEL_IDYPARENT_CHANNEL_IDROOT_CHANNEL_IDYROOT_CHANNEL_ID
ID_BATCHYID_BATCHCHANNEL_IDYCHANNEL_IDLOG_DATEYLOG_DATETRANSNAMEYTRANSNAMESTEPNAMEYSTEPNAMESTEP_COPYYSTEP_COPYLINES_READYLINES_READLINES_WRITTENYLINES_WRITTENLINES_UPDATEDYLINES_UPDATEDLINES_INPUTYLINES_INPUTLINES_OUTPUTYLINES_OUTPUTLINES_REJECTEDYLINES_REJECTEDERRORSYERRORSLOG_FIELDNLOG_FIELD
0.00.0
100005050NY50000YN1000100-2012/11/16 13:59:51.117-2014/05/12 15:22:12.008
backupConn${CLIENT_DATABASE_IP}ORACLENative${CLIENT_DATABASE_NAME}${CLIENT_DATABASE_PORT}${CLIENT_DATABASE_USERNAME}${CLIENT_DATABASE_PASSWORD}FORCE_IDENTIFIERS_TO_LOWERCASENFORCE_IDENTIFIERS_TO_UPPERCASENIS_CLUSTEREDNPORT_NUMBER${CLIENT_DATABASE_PORT}QUOTE_ALL_FIELDSNSUPPORTS_BOOLEAN_DATA_TYPENUSE_POOLINGNserverConn${SERVER_DATABASE_IP}ORACLENative${SERVER_DATABASE_NAME}${SERVER_DATABASE_PORT}${SERVER_DATABASE_USERNAME}${SERVER_DATABASE_PASSWORD}FORCE_IDENTIFIERS_TO_LOWERCASENFORCE_IDENTIFIERS_TO_UPPERCASENIS_CLUSTEREDNPORT_NUMBER${SERVER_DATABASE_PORT}QUOTE_ALL_FIELDSNSUPPORTS_BOOLEAN_DATA_TYPENUSE_POOLINGNwardConn${CLIENT_DATABASE_IP}ORACLENative${CLIENT_DATABASE_NAME}${CLIENT_DATABASE_PORT}${CLIENT_DATABASE_USERNAME}${CLIENT_DATABASE_PASSWORD}FORCE_IDENTIFIERS_TO_LOWERCASENFORCE_IDENTIFIERS_TO_UPPERCASENINITIAL_POOL_SIZE50IS_CLUSTEREDNMAXIMUM_POOL_SIZE500PORT_NUMBER${CLIENT_DATABASE_PORT}QUOTE_ALL_FIELDSNSUPPORTS_BOOLEAN_DATA_TYPENUSE_POOLINGY增加常量增加常量 2Y计算器Set Variables 2Y调用DB存储过程调用DB存储过程 2Y调用DB存储过程 2增加常量Y增加常量 2计算器YSet Variables 2SetVariableY1noneTIMEDIFFDOWNLOAD_SERVER_COMMON_DATA_LEADJVMY118273Y增加常量ConstantY1noneDIVIDENDInteger86400000-1-1388241Y增加常量 2ConstantY1noneDEVIATIONInteger10000-1-1364362Y计算器CalculatorY1noneTEMPSUBTRACTLOCAL_DATESERVER_DATEBigNumber-1-1NTEMP2ADDTEMPDEVIATIONBigNumber-1-1NTIMEDIFFDIVIDETEMP2DIVIDENDBigNumber-1-1N251272Y调用DB存储过程DBProcY1noneserverConnF_GET_SYSDATE2INTSERVER_DATEBigNumberY140134Y调用DB存储过程 2DBProcY1nonewardConnF_GET_SYSDATE2INTLOCAL_DATEBigNumberY353132YN

2、通过NTP方式校对系统时间

1)如果可以连接到Internet网中,则可以采用国际上的校时服务器去校对时间

2)如果在内网中且不能上网,则可以自己定义一台都可访问到的台式机作为NTP服务器,其他机子与该计算机教士即可,下面是window NTP校时服务器的设置。

可以参考文章:NTP服务同步时间方案