| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 16166 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.timesync.introduction">
- <title>Einführung</title>
- <para>
- <classname>Zend_TimeSync</classname> ist fähig die Internet- oder Netzwerkzeit von einem
- Zeitserver zu empfangen indem es das <emphasis>NTP</emphasis> oder
- <emphasis>SNTP</emphasis> Protokoll verwendet. Mit <classname>Zend_TimeSync</classname>
- ist Zend Framework fähig unabhängig von den Zeiteinstellungen des Servers auf dem es
- läuft zu agieren.
- </para>
- <para>
- Um unabhängig von der aktuellen Zeit des Servers zu sein, arbeitet
- <classname>Zend_TimeSync</classname> intern nur mit dem Unterschied der wirklichen Zeit der
- über NTP oder SNTP geschickten und der internen Zeit des Servers.
- </para>
- <note>
- <title>Hintergrund</title>
- <para>
- <classname>Zend_TimeSync</classname> ist nicht fähig die Zeit des Servers zu ändern,
- aber es gibt eine Instanz von <link linkend="zend.date.introduction">Zend_Date</link>
- zurück mit der der Unterschied zur Serverzeit verarbeitet werden kann.
- </para>
- </note>
- <sect2 id="zend.timesync.introduction.why">
- <title>Warum Zend_TimeSync ?</title>
- <para>
- Warum würde jemand <classname>Zend_TimeSync</classname> verwenden ?
- </para>
- <para>
- Normalerweise hat jeder Server in einer Multiserver Farm einen Service laufen der die
- eigene Zeit mit einem Zeitserver syncronisiert. In einer Standardumgebung sollte es
- also nicht notwendig sein <classname>Zend_TimeSync</classname> zu verwenden. Aber
- manchmal ist es sehr nützlich wenn es keinen Service gibt und wenn man nicht das Recht
- hat so einen Service zu installieren.
- </para>
- <para>
- Hier sind ein paar Beispiele, wo <classname>Zend_TimeSync</classname> perfekt passt:
- </para>
- <itemizedlist mark='opencircle'>
- <listitem>
- <para>
- <emphasis>Server ohne Zeitservice</emphasis>
- </para>
- <para>
- Wenn eine Anwendung auf einem Server läuft und auf diesem Server kein
- Zeitservice läuft kann es Sinn machen <classname>Zend_TimeSync</classname> in
- der eigenen Anwendung zu verwenden.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Separater Datenbank Server</emphasis>
- </para>
- <para>
- Wenn eine Datenbank auf einem anderen Server läuft und dieser Server
- nicht mit <emphasis>NTP</emphasis> oder
- <emphasis>SNTP</emphasis> an dem Anwendungsserver angebunden ist,
- kann man Probleme haben Zeitstempel zu speichern und zu verwenden.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Mehrere Server</emphasis>
- </para>
- <para>
- Wenn die Anwendung auf mehr als einem Server läuft, und die Zeitbasis dieser
- Server nicht miteinander gekoppelt sind, kann das zu Problemen in der Anwendung
- führen wenn Teile der Anwendung von einem Server und andere von einem anderen
- Server kommen.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Batch Ausführung</emphasis>
- </para>
- <para>
- Wenn man mit einem Zeitserver arbeiten oder Ihn in einer Batchdatei oder in
- einer Kommandozeilen Anwendung inkludieren will, kann
- <classname>Zend_TimeSync</classname> nützlich sein.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- <classname>Zend_TimeSync</classname> kann in allen diesen Fällen eine gute Lösung bieten
- und kann verwendet werden wenn man nicht in der Lage ist Services auf dem Server zu
- starten.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.ntp">
- <title>Was ist NTP ?</title>
- <para>
- Das <code>Network Time Protocol</code> (<emphasis>NTP</emphasis>) ist
- ein Protokoll für die Synchronisierung von mehreren Systemuhren über
- Paket-geführte, variabel laufende Datennetzwerke. NTP verwendet den UDP Port 123 als
- seine Transportschicht. Siehe <ulink
- url="http://en.wikipedia.org/wiki/Network_Time_Protocol">diesen Wikipedia
- Artikel</ulink> für Details über das Protokoll.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.sntp">
- <title>Was ist SNTP?</title>
- <para>
- Das <code>Simple Network Time Protocol</code> (<emphasis>SNTP</emphasis>)
- ist ein Protokoll für die Synchronisierung von mehreren Systemuhren über
- Paket-geführte, variabel laufende Datennetzwerke. SNTP verwendet den UDP Port 37 als
- Transportschicht. Es ist fast identisch mit dem Network Time Protokoll aber
- einfacher.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.problematic">
- <title>Problematische Verwendung</title>
- <para>
- Vorsicht das man sich, wenn <classname>Zend_TimeSync</classname> verwendet wird, einige
- Gedanken über Details betreffend der Struktur von Zeitsynchronisierung und dem Internet
- selbst machen muß. Die richtige Verwendung und die beste Praxis werden hier beschrieben.
- Bevor man <classname>Zend_TimeSync</classname> verwendet sollte das hier sorgfältig
- durchgelesen werden.
- </para>
- </sect2>
- <sect2 id="zend.timesync.introduction.decision">
- <title>Auswählen welcher Server verwendet werden soll</title>
- <para>
- Der Zeitserver der verwendet werden soll muß, anhand der folgenden Kriterien, sehr
- sorgfältig ausgewählt werden:
- </para>
- <itemizedlist mark='opencircle'>
- <listitem>
- <para>
- Distanz
- </para>
- <para>
- Die Distanz vom Server auf dem die Anwendung läuft und dem Zeitserver der
- angefragt wird. Wenn der Server in Europa sitzt mach es weni Sinn einen
- Zeitserver zu verwenden der in Tahiti ist. Es sollte immer ein Server
- ausgewählt werden der nicht weit weg ist. Das reduziert die Zeit für die
- Anfrage und es reduziert auch die Last im Netzwerk.
- </para>
- </listitem>
- <listitem>
- <para>
- Geschwindigkeit
- </para>
- <para>
- Wie lange es dauert eine Anfrage zu empfangen ist auch relevant. Es sollten
- andere Server probiert werden um das beste Ergebnis zu erhalten. Wenn ein
- Server angefragt wird auf den nie zugegriffen werden kann wird man immer
- unnötige Verzögerungen haben.
- </para>
- </listitem>
- <listitem>
- <para>
- Aufteilung
- </para>
- <para>
- Es sollte nicht immer der gleiche Server verwendet werden. Alle Zeitserver
- sperren Anfragen von Servern welche sie überfluten. Wenn eine Anwendung
- exzessiv Zeitserver verwendet sollte man ein Pool verwenden wie anbei
- beschrieben.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Wo kann man also einen Zeitserver finden ? Generell kann jeder Zeitserver verwendet
- werden den man kennt. Das kann ein Zeitserver im eigenen LAN oder ein öffentlicher
- Zeitserver sein auf den man Zugriff hat. Wenn man sich für einen öffentlichen Zeitserver
- entscheidet sollte man einen Pool-Server verwenden. Serverpools sind öffentliche
- Adressen von denen man einen zufälligen Zeitserver auf dem Pool erhält wenn man die
- Zeit anfrägt. Auf diesem Weg muß man seine Anfragen nicht aufteilen. Es gibt
- öffentliche Serverpools für verschiedene Regionen sodas man die vorher erwähnten
- Probleme nicht hat.
- </para>
- <para>
- Siehe <ulink url="http://www.pool.ntp.org">pool.ntp.org</ulink> um den
- am nächsten liegenden Serverpool zu finden. Wenn, zum Beispiel, der eigene Server also
- in Deutschland liegt kann man sich auf <code>0.europe.pool.ntp.org</code> verbinden.
- </para>
- </sect2>
- </sect1>
|