| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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>
- wird Zend Framework ermöglicht, 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 empfangenen 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,
- jedoch gibt es 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, einen solchen 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 ist, 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 in einer Batchdatei oder in einer
- Kommandozeilen Anwendung verwenden möchte, 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 Network Time Protocol (<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
- 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 Simple Network Time Protocol (<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 angefragten
- Zeitserver. Wenn der Server in Europa lokalisiert ist, macht es wenig Sinn,
- einen Zeitserver aus Tahiti zu verwenden. Es sollte immer ein Server
- ausgewählt werden, der nicht weit entfernt ist. Das reduziert die Zeit für die
- Anfrage und es reduziert 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, wie anbei beschrieben einen Pool
- verwenden.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Wo kann man also einen Zeitserver finden? Generell kann jeder bekannte Zeitserver
- verwendet werden. 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 muss man seine Anfragen nicht aufteilen. Es
- gibt öffentliche Serverpools für verschiedene Regionen, so dass 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 <emphasis>0.europe.pool.ntp.org</emphasis>
- verbinden.
- </para>
- </sect2>
- </sect1>
|