Wie man

Einrichten des Drei-Knoten-CockroachDB-Clusters auf CentOS 8

Einrichten des Drei-Knoten-CockroachDB-Clusters auf CentOS 8

Maßstab, Maßstab, Maßstab! Alles skalieren ist ein Begriff, den Sie mehrmals hören werden, wenn Sie durch Unternehmenskorridore gehen. Egal, ob Sie in der Geschäftsentwicklungsabteilung oder in der technischen Abteilung tätig sind, die Skalierung des Geschäfts oder die Skalierung Ihrer Containerserver ist etwas, mit dem Sie sich bestens auskennen.

Für diejenigen, die mit der Verwaltung von Datenbanken beauftragt sind, ist CockroachDB hier, um Ihre Anforderungen an die Datenbankskalierung zu sortieren. CockroachDB ist ein Master-Skalierer mit minimalem Aufwand und leistungsstarken Ergebnissen. In diesem Handbuch werden wir CockroachDB auf drei Knoten installieren und konfigurieren und demonstrieren, wie Daten in einem Knoten repliziert und in den drei Knoten verfügbar sind. Das ist KakerlakeDB?

CockroachDB ist die Cloud-native, verteilte SQL-Datenbank, die Konsistenz der nächsten Ebene, hohe Ausfallsicherheit, Datenlokalität und enorme Skalierbarkeit für moderne Cloud-Anwendungen bietet. Unternehmen wie Comcast, Lush und Bose bauen ihre Cloud-Datenarchitekturen auf CockroachDB. Cockroach Labs wurde von einem Team von Ingenieuren gegründet, die sich dem Aufbau modernster Systeminfrastruktur verschrieben haben, und hat Investitionen von Benchmark, G/V, Index Ventures und Redpoint Red.

CockroachDB verteilt eine einzelne Binärdatei, die sowohl Kern- als auch Unternehmensfunktionen enthält. Sie können die Kernfunktionen ohne Lizenzschlüssel verwenden. Um die Enterprise-Funktionen nutzen zu können, benötigen Sie jedoch entweder eine Testversion oder einen Enterprise-Lizenzschlüssel.

In diesem Handbuch werden wir eine CockroachDB-Datenbank mit drei Knoten auf CentOS 8-Servern zusammen mit einem optionalen HAProxy-Load-Balancer-Server bereitstellen und dann herumstöbern, um zu sehen, woraus sie besteht. Bevor wir beginnen, klären wir alle Abhängigkeiten und Systemanforderungen.

System Anforderungen

Installieren Sie den CockroachDB-Cluster auf CentOS 8-Servern

Es sollte beachtet werden, dass jeder Knoten in Ihrem Cluster eine Kopie der Kakerlaken-Binärdatei haben muss. Um CockroachDB auf jedem Knoten zu installieren, befolgen Sie die folgenden Schritte.

Schritt 1: Aktualisieren und installieren Sie wichtige Pakete

Aktualisieren Sie Ihre Server, um die neuesten Patches und Software zu erhalten, und installieren Sie wichtige Anwendungen wie vim, wget und dergleichen.

sudo dnf -y aktualisiere sudo dnf -y installiere vim wget

Fügen Sie dann zu jedem der Knoten Folgendes hinzu:/etc/hosts”-Datei, falls Sie kein internes DNS zum Auflösen von Domänennamen haben.

$ sudo vim /etc/hosts 172.28.182.170 Kakerlake-db01 172.28.182.246 Kakerlake-db02 172.28.187.217 Kakerlake-db03 172.28.190.34 Loadbalancer

Bevor Sie mit dem nächsten Schritt fortfahren, erstellen Sie die folgenden Verzeichnisse und erstellen Sie auf jedem Datenbankserverknoten die Benutzer-Kakerlake, die für die Verwaltung des Kakerlaken-Dienstes verantwortlich ist.

mkdir ~/certs sudo mkdir /var/lib/kakerlake sudo useradd kakerlake

Schritt 2: Laden Sie die CockroachDB-Binärdatei herunter und installieren Sie sie

Lassen Sie uns den Quellcode von CockroachDB holen und auf unseren 3 Servern installieren. Laden Sie das CockroachDB-Archiv für Linux herunter und extrahieren Sie die Binärdatei:

wget -qO- https://binaries.Kakerlakedb.com/kakerlake-v20.1.7.linux-amd64.tgz | Teer xvz

Nachdem es erfolgreich extrahiert wurde, kopieren Sie die Binärdatei in Ihren PATH, damit es einfach ist, Kakerlakenbefehle von jeder Shell aus auszuführen:

$ sudo cp -i Kakerlake-v20.1.7.linux-amd64/cockroach /usr/local/bin/ $ Kakerlakenversion Build Tag: v20.1.7 Build Time: 2020/10/12 16:04:22 Distribution: CCL Plattform: linux amd64 (x86_64-unknown-linux-gnu) Go Version: go1.13.9 C-Compiler: gcc 6.3.0 Build SHA-1: 406792b58d32dc053008cc129b409252798f509c Buildtyp: Release

Wiederholen Sie dasselbe für die anderen beiden verbleibenden Knoten.

Schritt 3: Zertifikate für sichere Verbindungen generieren

Auf einem Knoten Ihrer Wahl oder sogar auf einem anderen Server werden wir Zertifikate generieren, die von unserem Cluster verwendet werden. Erstellen Sie zwei Verzeichnisse “Zertifikate" und "mein-safe-Verzeichnis“. Certs behält Ihr CA-Zertifikat und alle Knoten- und Client-Zertifikate und Schlüssel. mein-safe-Verzeichnis behält Ihren CA-Schlüssel und verweist dann beim Generieren von Knoten- und Client-Zertifikaten auf den Schlüssel. Dies wird sicher und geheim gehalten; Es wird empfohlen, es nicht auf Ihre Knoten hochzuladen. Erstellen Sie die beiden Verzeichnisse wie folgt:

mkdir certs,my-safe-directory

Erstellen Sie als Nächstes das CA-Zertifikat und den Schlüssel:

Kakerlakenzertifikat create-ca \ --certs-dir=certs \ --ca-key=my-safe-directory/ca.Schlüssel

Erstellen Sie das Zertifikat und den Schlüssel für den ersten Knoten, ausgestellt auf alle gängigen Namen, die Sie möglicherweise verwenden, um auf den Knoten sowie auf die Load-Balancer-Instanzen zu verweisen. Geben Sie Hostnamen und IP-Adressen von Knoten 1 ein (Kakerlake-db01 in meinem Fall) und auch des Loadbalancers:

Kakerlaken-Zertifikat erstellen-Knoten \ 172.28.182.170 \ kakerlake-db01 \ localhost \ 127.0.0.1 \ 172.28.190.34 \ loadbalancer \ --certs-dir=certs \ --ca-key=my-safe-directory/ca.Schlüssel

Sobald die Zertifikate fertig sind, laden Sie das CA-Zertifikat, das Knotenzertifikat und den Schlüssel auf den ersten Knoten hoch:

scp certs/ca.crt-Zertifikate/Knoten.crt-Zertifikate/Knoten.Schlüssel @cockroach-db01:~/certs ca.crt 100% 1111 873.8 KB/s 00:00 Knoten.crt 100% 1208 1.4 MB/s 00:00 Knoten.Schlüssel 100% 1679 1.9MB/s 00:00 

Unsere Schlüssel werden auf den ersten Knoten kopiert und wir haben jetzt noch drei weitere Server übrig. Wir werden auf diesem Server die gleichen Befehle ausgeben, die Sie für die Erstellung der Zertifikate reserviert haben. habe ich persönlich benutzt Kakerlake-db03 um diese Befehle auszuführen, aber darauf achten, seine eigenen Zertifikate an die richtige Stelle zu kopieren. Löschen Sie vor der Wiederholung der Befehle die lokale Kopie des Knotenzertifikats und des Schlüssels, die jetzt zu gehören Kakerlake-db01.

rm certs/node.crt-Zertifikate/Knoten.Schlüssel

Als nächstes erstellen Sie wie oben das Zertifikat und den Schlüssel für den zweiten Knoten (Kakerlake-db02), die an alle Hostnamen ausgegeben wird, die Sie möglicherweise verwenden, um auf den Knoten sowie auf die Load-Balancer-Instanzen zu verweisen, und kopieren Sie dann die Zertifikatsdateien in die kakerlake-db02 Knoten.

Kakerlaken-Zertifikat erstellen-Knoten \ 172.28.182.246 \ kakerlake-db02 \ localhost \ 127.0.0.1 \ 172.28.190.34 \ loadbalancer \ --certs-dir=certs \ --ca-key=my-safe-directory/ca.Schlüssel

Kopieren Sie das CA-Zertifikat und das Knotenzertifikat und den Schlüssel auf den zweiten Knoten (kakerlake-db02) und löschen Sie die lokale Kopie des Knotenzertifikats und des Schlüssels, die jetzt zu gehören kakerlake-db02.

scp certs/ca.crt-Zertifikate/Knoten.crt-Zertifikate/Knoten.Schlüssel @cockroach-db02:~/certs rm certs/node.crt-Zertifikate/Knoten.Schlüssel

Als nächstes erstellen Sie das Zertifikat und den Schlüssel für den dritten Knoten (cockroach-db03).

Kakerlaken-Zertifikat erstellen-Knoten \ 172.28.187.217 \ kakerlake-db03 \ localhost \ 127.0.0.1 \ 172.28.190.34 \ loadbalancer \ --certs-dir=certs \ --ca-key=my-safe-directory/ca.Schlüssel

Da ich benutze Kakerlake-db03 Als Generator der Zertifikate belasse ich die generierten Zertifikate so, wie sie im certs-Verzeichnis erstellt werden.

Nachdem alle Zertifikate generiert und auf ihre jeweiligen Knoten kopiert wurden, melden Sie sich bei jedem der von Ihnen verwendeten CockroachDB-Server an und verschieben Sie das „Zertifikate”-Verzeichnis zum “/var/lib/kakerlake” Verzeichnis, in dem wir erstellt haben Schritt 1. Hier liest Kakerlake Zertifikate von.

Verschieben Sie das certs-Verzeichnis wie folgt auf jedem CockroachDB-Knoten in das cockroach-Verzeichnis, d.h Kakerlake-db01, Kakerlake-db02, und Kakerlake-db03.

sudo cp -rv certs /var/lib/cockroach/

Nach dem Kopieren “Zertifikate” Verzeichnis zu “/var/lib/kakerlake” ändern Sie den Besitz des Kakerlakenverzeichnisses in den Benutzer Kakerlake:

sudo chown -R Kakerlake.Kakerlake /var/lib/kakerlake/

Schritt 4: CockroachDB Systemd-Dienst konfigurieren

Eine der erstaunlichsten Möglichkeiten, Ihre Dienste in Ihrem Systemd-fähig Server nutzt seine saubere Methode zum Starten, Stoppen und Anzeigen ihres Status. Aus diesem Grund werden wir Systemd wie folgt eine CockroachDB hinzufügen:

sudo vim /etc/systemd/system/cockroachdb.service [Einheit] Description=Cockroach Database Cluster-Knoten Requires=network.target [Service] Type=benachrichtigen WorkingDirectory=/var/lib/cockroach ExecStart=/usr/local/bin/cockroach start --certs-dir=certs --advertise-addr=cockroach-db03 --join=cockroach-db01, kakerlake-db02,kakerlake-db03 --cache=.25 --max-sql-memory=.25 TimeoutStopSec=60 Restart=always RestartSec=10 StandardOutput=syslog StandardError=syslog SyslogIdentifier=Kakerlake User=Kakerlake [Install] WantedBy=default.Ziel

Wiederholen Sie das Erstellen der systemd-Datei auf jedem Knoten und stellen Sie sicher, dass Sie das „-Werbe-Adresse” um den Namen oder die IP jedes Knotens entsprechend anzupassen, dann starten Sie den cockroachdb-Dienst.

sudo systemctl start cockroachdb

Überprüfen Sie dann den Status auf jedem Knoten.

sudo systemctl status cockroachdb ● cockroachdb.service - Cockroach-Datenbank-Cluster-Knoten Geladen: geladen (/etc/systemd/system/cockroachdb.Bedienung; deaktiviert; Herstellervoreinstellung: deaktiviert) Aktiv: aktiv (läuft) seit Do 15.10.2020 22:06:51 UTC; vor 31s Haupt-PID: 1699 (Kakerlake) Aufgaben: 17 (Limit: 11068) Speicher: 57.9M CGroup: /system.Scheibe/Kakerlakedb.service └─1699 /usr/local/bin/cockroach start --certs-dir=certs --advertise-addr=cockroach-db03 

Bevor Sie mit dem nächsten Schritt fortfahren, ist es ratsam, die empfohlenen Ports auf der Firewall auf jedem Knoten zuzulassen. Sie können dies mit den folgenden Befehlen tun.

sudo Firewall-cmd --permanent --add-port=8080,26257/tcp sudo Firewall-cmd --reload

Schritt 5: Initialisieren Sie den CockroachDB-Cluster auf CentOS 8

Führen Sie auf einem der Knoten den Befehl cockroach init aus, um den Startvorgang des Knotens abzuschließen und sie als Cluster zusammenzuführen:

Kakerlake init --certs-dir=certs --host=
##Zum Beispiel cockroach init --certs-dir=certs --host=cockroach-db03 Cluster erfolgreich initialisiert

Schritt 6: HAProxy-Konfigurationsdatei generieren

Schließlich werden wir die Konfigurationsdatei des Load Balancers generieren. Wir werden HAProxy als Load Balancer verwenden und CockroachDB hat eine eingebaute Einrichtung, die automatisch eine Haproxy-Konfigurationsdatei mit Zertifikaten generiert. Führen Sie den folgenden Befehl auf demselben Computer aus, den wir zum Generieren der Zertifikate verwendet haben, um zuerst ein . zu erstellen Client-Zertifikat und Schlüssel (Klient.Wurzel.crt, Kunde.Wurzel.Schlüssel) für den Root-Benutzer in Ihrer CockroachDB-Datenbank.

Kakerlakenzertifikat create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.Schlüssel 

Wenn Sie auf jedem Knoten eine Verbindung zur Standarddatenbank herstellen möchten, kopieren Sie die beiden Clientdateien (Klient.Wurzel.crt und client.Wurzel.Schlüssel) in das certs-Verzeichnis in ihren Home-Verzeichnissen, die wir in Schritt 1 erstellt haben. Ohne diese Dateien können Sie sich ohne das Passwort der CockroachDB-Root-Rolle nicht anmelden.

Führen Sie den Befehl Kakerlaken-Gen-Haproxy mit dem aus -Gastgeber Flag, das auf die Adresse eines beliebigen Knotens gesetzt ist, und Sicherheits-Flags, die auf das CA-Zertifikat und das Client-Zertifikat und den Schlüssel verweisen:

Kakerlaken Gen Haproxy --certs-dir=certs --host=cockroach-db03

Der obige Befehl erstellt „glücklich.cfg”-Datei mit allen minimalen Konfigurationsdetails, die wir benötigen, da sie unten geteilt wurde. Sie können sehen, dass alle unsere Knoten in der Datei gut angezeigt werden.

global maxconn 4096 defaults mode tcp # Timeout-Werte sollten für Ihre spezielle Verwendung konfiguriert werden. # Siehe: https://cbonte.github.io/haproxy-dconv/1.8/Konfiguration.html#4-timeout%20connect timeout Connect 10s Timeout Client 1m Timeout Server 1m # TCP Keep-Alive auf Client-Seite. Server aktiviert sie bereits. Option clitcpka hören psql bind :26257 Modus TCP Balance Roundrobin Option httpchk GET /health?ready=1 Server Kakerlake1 Kakerlake-db03:26257 Port 8080 prüfen Server Kakerlake2 Kakerlake-db02:26257 Port 8080 prüfen Server Kakerlake3 Kakerlake-db01:26257 Port 8080 prüfen

Sobald Sie die Datei überprüft haben und mit der Datei zufrieden sind, laden Sie die glücklich.cfg Datei auf den Load-Balancer-Server, um den HAProxy-Load-Balancer auszuführen.

scp haproxy.cfg @loadbalancer:~

Schritt 7: Installieren Sie HAProxy auf CentOS 8 (optional)

Melden Sie sich bei Ihrem Loadbalancer-Server (CentOS 8) an und fahren Sie mit den Installationsschritten wie folgt fort.

Aktivieren Sie den Permissive-Modus in SELinux

Machen Sie SELinux vorübergehend (vorerst) und dauerhaft permissiv, wenn es neu gestartet wird, indem Sie die folgenden Befehle ausführen:

sudo setenforce 0 sudo sed -i 's/enforcing/permissive/g' /etc/selinux/config

Installieren Sie HAProxy auf CentOS 8

Installieren Sie das haproxy-Paket wie folgt:

sudo dnf -y installiere haproxy

Nach der Installation von HAProxy befindet sich die Standardkonfigurationsdatei unter „/etc/haproxy/haproxy.cfg“. Sichern Sie einfach diese Datei und kopieren Sie die, die wir auf den Server hochgeladen haben.

cd /etc/haproxy/ sudo mv haproxy.cfg haproxy.cfg.sudo cp sichern ~/haproxy.cfg /etc/haproxy/

Nachdem Sie mit der Konfiguration von HAProxy fertig sind, starten und aktivieren Sie den Haproxy-Dienst.

sudo systemctl enable --now haproxy

Bestätigen Sie, dass der Haproxy-Dienst ausgeführt wird

$ systemctl-status haproxy ● haproxy.service - HAProxy Load Balancer Geladen: geladen (/usr/lib/systemd/system/haproxy.Bedienung; aktiviert; Herstellervoreinstellung: deaktiviert) Aktiv: aktiv (läuft) seit Do 15.10.2020 22:30:40 UTC; vor 9min Prozess: 2838 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 2840 (haproxy) Tasks: 2 (limit: 11070)

Clients können jetzt über den Load Balancer, der auf Port 26257 lauscht, auf Datenbankinstanzen zugreifen.

Lassen Sie uns an dieser Stelle die Details des einzelnen Knotens anzeigen, indem Sie auf das Admin-UI-Dashboard zugreifen. Richten Sie Ihren Browser auf https://[Domänenname/IP]:8080 eines beliebigen Knotens. Sie sollten ein Dashboard wie unten geteilt sehen:

Sie werden feststellen, dass Sie nach einem gefragt werden Benutzername und Passwort. Um die Anmeldeinformationen zu generieren, melden Sie sich bei dem Knoten an, den wir zum Generieren von Zertifikaten verwendet haben, und geben Sie den folgenden Befehl aus, der Sie zum defaultdb. Wir werden direkt eingeloggt, weil wir den Client-Schlüssel und das Zertifikat des Root-Benutzers haben, die wir generiert haben Schritt 6.

cockroach sql --certs-dir certs # # Willkommen bei der CockroachDB SQL-ShellDB. # Alle Anweisungen müssen mit einem Semikolon abgeschlossen werden. # Geben Sie zum Beenden Folgendes ein: \q. # # Serverversion: CockroachDB CCL v20.1.7 (x86_64-unknown-linux-gnu, erstellt 2020/10/12 16:04:22, go1.13.9) (gleiche Version wie Client) # Cluster-ID: 2b9244a4-e3b6-48d7-ba44-f0a21e0f778c Kein Eintrag für Terminaltyp "xterm-256color"; mit dummen Terminaleinstellungen. # # Eingeben \? für eine kurze Einführung. # [email protected]:26257/defaultdb>

Fahren Sie bei der Eingabeaufforderung mit der Ausgabe der folgenden Abfrage fort. Sie können Ihre Benutzername und Passwort Hier.

[email protected]:26257/defaultdb> BENUTZER ERSTELLEN geeksadmin MIT PASSWORT 'SafePassword'; ROLLE ERSTELLEN [email protected]:26257/defaultdb>GRANT admin TO geeksadmin;

Hinweis: Die Administratorrolle wird standardmäßig erstellt und kann nicht gelöscht werden. Benutzer der Admin-Rolle haben alle Berechtigungen für alle Datenbankobjekte im gesamten Cluster.

Wenn Sie fertig sind, kehren Sie zur Admin-Benutzeroberfläche zurück, aktualisieren Sie und geben Sie die soeben erstellten Anmeldeinformationen ein.

Sie sollten hereingeführt werden.

Schritt 8: Verwenden von CockroachDB

Sobald der Cluster gut eingerichtet ist, können wir testen, ob das Erstellen von Daten auf einem Knoten auch auf andere Knoten verteilt wird. In diesem Fall sollten alle Knoten nach der Erstellung Zugriff auf denselben Datensatz haben. Damit wir Zeit sparen können, können wir die Beispieldaten von CockroachDB nutzen, um dies zu verstehen. Einloggen in Kakerlake-db03, den Knoten, den wir verwendet haben, um Zertifikate zusammen mit Client-Zertifikat und Schlüssel für den Root-Benutzer zu generieren und die Beispieldaten wie folgt zu generieren:

Kakerlaken Gen Beispiel-Daten Startrek | Kakerlake sql --certs-dir certs

Der obige Befehl erstellt eine Beispieldatenbank namens Star Trek und wir können jetzt den SQL-Client starten und sehen, welche Datenbanken sich in Ihrem Cluster befinden. Stellen Sie sicher, dass die restlichen Knoten das von uns erstellte Zertifikatsverzeichnis haben Schritt 1 mit ihren jeweiligen Zertifikaten zusammen mit den beiden Client-Dateien (Klient.Wurzel.crt und client.Wurzel.Schlüssel) haben wir in . erstellt Schritt 6. Einloggen in Kakerlake-db02, und bestätigen Sie den Inhalt des certs-Ordners:

ls certs ca.crt-Client.Wurzel.crt-Client.Wurzel.Schlüsselknoten.crt-Knoten.Schlüssel

Es sieht gut aus! Melden Sie sich bei der defaultdb an und prüfen Sie, ob auch von dort auf die Beispieldatenbank zugegriffen werden kann

##On cockroach-db02 $ cockroach sql --certs-dir certs [email protected]:26257/defaultdb> DATENBANKEN ANZEIGEN; database_name ----------------- defaultdb postgres startrek system (4 Zeilen) Zeit: 5.638902ms

Nur um sicherzustellen, dass vom dritten auf dieselbe Datenbank zugegriffen werden kann Kakerlake-db01 Knoten, lassen Sie uns uns einloggen und die Datenbanken wie oben auflisten. Stellen Sie sicher, dass Sie kopiert haben (Klient.Wurzel.crt und client.Wurzel.Schlüssel) in sein certs-Verzeichnis.

##On cockroach-db01 $ cockroach sql --certs-dir certs > DATENBANKEN ANZEIGEN; database_name ----------------- defaultdb postgres startrek system (4 Zeilen) Zeit: 5.638902ms

Sie sollten in der Lage sein, die oben aufgeführte startrek-Datenbank anzuzeigen, die unsere Beispieldaten enthält. Ein Screenshot davon wird unten geteilt.

Wenn Sie die Anzahl der Knoten erhöhen möchten, müssen Sie einfach die gleichen Schritte ausführen wie in diesem Beispiel für Knoten zwei und drei. Das heißt, installieren Sie CockroachDB-Binärdateien und verbinden Sie sie dann mit dem ersten Knoten mithilfe der Systemd-Datei. Auf diese Weise skaliert Ihr Cluster horizontal. Erfahren Sie noch mehr über diese einzigartige Datenbank, indem Sie die offizielle Website von CockroachDB besuchen.

Schlussfolgern

Es ist jetzt offensichtlich, dass wir die Daten über die gewünschte Anzahl von Knoten verteilen können. Der Cluster unserer Drei-Knoten-CockroachDB ist im Moment verteilt und überlebensfähig. Es steht Ihnen frei, Datenbanken zu erstellen und Ihre Anwendung damit zu verbinden. Wenn Sie in einer Postgres-Umgebung waren, müssen Sie sich keine großen Sorgen machen, da CockroachDB mit PostgreSQL-Treibern arbeitet works.

Abschließend hoffen wir, dass die Anleitung hilfreich war und Sie etwas davon mitgenommen haben. Ansonsten vielen Dank, dass Sie bis zum Ende geblieben sind und wir danken Ihnen für Ihre anhaltende Unterstützung. Nachfolgend finden Sie weitere Anleitungen, die Ihr Interesse wecken könnten.

Installieren Sie Single Node TiDB-Datenbankcluster auf CentOS 8

Installieren Sie die RavenDB NoSQL-Datenbank auf Ubuntu 20.04

Installieren Sie den PostgreSQL-Datenbankserver auf Ubuntu 20.04 (Fokus-Fossa)

Verwalten Sie MySQL / MariaDB & PostgreSQL-Datenbankserver mit Adminer

Harvards neuer Akustikdrucker kann Bilder mit jeder Flüssigkeit erstellen
Wir haben seit den Tagen des Daisy-Wheel-Drucks einen langen Weg zurückgelegt. Es gab die Anfänge des Laserdrucks, des Tintenstrahldrucks und neuerdin...
Adware Doctor, als Anti-Malware-Tool getarnte Spyware, im Mac App Store erlaubt
Bei den Dingen, die über Apple und seine App Stores, sowohl macOS als auch iOS, gesagt werden, könnte man leicht glauben, dass sie alles im Griff habe...
Vizio Smart TV So intelligent, dass Sie das Unternehmen verklagen müssen
Wir leben in einer Zeit, in der alle unsere Geräte „smart“ werden, sogar unsere Fernseher. Ein Smart-TV von Vizio, der vor drei Jahren entdeckt wurde,...