Wie performt der Azure ARM Architecture Server?

API7.ai

August 8, 2022

Ecosystem

Hintergrund

Im April kündigte Microsoft eine Vorschau seiner Familie von Azure Virtual Machines an, die auf Ampere® Altra® Arm-Prozessoren basieren. Die neue VM-Serie umfasst die allgemeinen Dpsv5- und speicheroptimierten Epsv5-VMs. Einzelheiten finden Sie in der folgenden Abbildung:

Azure VM

Bemerkenswert ist, dass Ampere® Altra® Arm ein Cloud-nativer Prozessor ist, und Azure Virtual Machines, die auf Ampere® Altra® Arm-Prozessoren basieren, können daher skalierbare Cloud-native Anwendungen effizient ausführen.

Wie ist also die tatsächliche Erfahrung und Leistung? Nehmen wir ein Cloud-natives API-Gateway als Beispiel, um Ihnen die Leistung einer Azure Virtual Machine auf Basis der Arm-Architektur zu zeigen. Hier wählen wir Apache APISIX für die Installation und Tests in der allgemeinen Dpdsv5-Serien-VM-Umgebung.

Apache APISIX ist ein Cloud-natives, leistungsstarkes, skalierbares API-Gateway. Basierend auf NGNIX + LuaJIT und etcd bietet APISIX im Vergleich zu traditionellen API-Gateways dynamisches Routing und Plugin-Hot-Loading, was es besonders für das API-Management unter Cloud-nativen Architekturen geeignet macht.

Apache APISIX-Architektur

Vorbereitung

Zuerst müssen Sie eine Dpdsv5-Serien-Instanz auf Azure starten und Ubuntu 20.04 als Betriebssystem auswählen.

Azure Dpdsv5

Dann installieren Sie Docker, um die anschließende Verwendung von containerisierten Methoden zur Installation und Bereitstellung von Apache APISIX zu erleichtern.

sudo apt-get update && sudo apt-get install docker.io

Bereitstellung von Apache APISIX

Apache APISIX verwendet etcd als Konfigurationszentrum, daher müssen Sie zuerst eine etcd-Instanz starten.

sudo docker run -d --name etcd
    -p 2379:2379
    -e ETCD_UNSUPPORTED_ARCH=arm64
    -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
    rancher/coreos-etcd:v3.4.16-arm64

Dann starten Sie eine Instanz von Apache APISIX.

sudo docker run --net=host -d apache/apisix:2.14.1-alpine

Erstellen Sie Routen.

curl "http://127.0.0.1:9080/apisix/admin/routes/1"
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
    "uri": "/anything/*",
    "upstream": {
        "type": "roundrobin",
        "nodes": {
              "httpbin.org:80": 1
        }
    }
}'

Führen Sie einen Zugriffstest durch.

curl -i http://127.0.0.1:9080/anything/das

Die Installation ist erfolgreich, wenn die folgenden Ergebnisse zurückgegeben werden:

HTTP/1.1 200 OK
.....

Azure Ddsv5 vs Azure Dpdsv5

Aus den obigen Operationen kann die Installation und Kompatibilitätstests von Apache APISIX auf Azure Dpdsv5 erfolgreich abgeschlossen werden. Wie ist also die tatsächliche Leistung von Azure Dpdsv5? Als Nächstes werden wir Apache APISIX verwenden, um Leistungstests auf Azure Dpdsv5 und Azure Ddsv5 durchzuführen und ihre tatsächliche Leistung zu vergleichen.

Azure Ddsv5 ist ein weiteres Modell der Azure D-Serie, das auf der Intel® x86-Architektur basiert, daher sind die obigen etcd-Installationsschritte leicht unterschiedlich:

sudo docker run -d --name etcd
    -p 2379:2379
    -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    -e ALLOW_NONE_AUTHENTICATION=yes
    -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
    bitnami/etcd:3.4.16

Einzelnes Upstream + kein Plugin

Verwenden Sie ein einzelnes Upstream ohne Plugins. Es testet hauptsächlich die Leistung von APISIX im reinen Proxy-Modus.

# apisix: 1 worker + 1 upstream + no plugin
# create route
curl http://127.0.0.1:9080/apisix/admin/routes/1
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980":1
        }
    }
}'

Einzelnes Upstream + zwei Plugins

Verwenden Sie ein einzelnes Upstream mit zwei Plugins. Es testet hauptsächlich die Leistung von APISIX, wenn die beiden leistungsintensiven Plugins limit-count und prometheus aktiviert sind.

# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus)
# create route
curl http://127.0.0.1:9080/apisix/admin/routes/1
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/hello",
    "plugins": {
        "limit-count": {
            "count": 2000000000000,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr"
        },
        "prometheus": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "127.0.0.1:1980":1
        }
    }
}'

Datenvergleich

In den obigen beiden Szenarien wurden relevante Tests und Vergleiche auf den beiden Ebenen der Anforderungs-QPS (Queries pro Sekunde) und der Latenzzeit durchgeführt. Das Ergebnis ist wie folgt:

  1. QPS-Vergleich

    QPS

  2. Latenzvergleich

    Latenz

| | Einzelnes Upstream + kein Plugin | Einzelnes Upstream + zwei Plugins | | ------------------ | -------------------------------- | --------------------------------- | --------------- | ---------------- | | | Azure Ddsv5 | Azure Dpdsv5 | Azure Ddsv5 | Azure Dpdsv5 | | QPS(Anfragen/s)| 14900 | 13400 | 13100 | 11000 | | Latenz(ms) | 1.07 | 1.21 | 1.21 | 1.43 |

Aus den obigen Daten ist auch ersichtlich, dass in netzwerkintensiven Berechnungsszenarien wie API-Gateways Dpdsv5 im Vergleich zur gleichen Serie Ddsv5 noch eine Leistungslücke aufweist. Eine weitere gute Nachricht ist jedoch, dass der Preis von Dpdsv5 bei gleicher Konfiguration etwa 20 % günstiger ist als der von Ddsv5. Bei der tatsächlichen Maschinenauswahl können Benutzer je nach ihrem Geschäftsvolumen flexible Entscheidungen treffen.

Zusammenfassung

Dieser Artikel vergleicht hauptsächlich die Leistung von Azure Ddsv5 und Azure Dpdsv5 mit Apache APISIX. Es ist ersichtlich, dass in netzwerkintensiven Berechnungsszenarien wie API-Gateways Azure Dpdsv5 im Vergleich zu Ddsv5 nicht so glänzt, aber da diese Serie von Modellen noch in der Vorschau ist, arbeitet Microsoft kontinuierlich an Verbesserungen und Optimierungen. Wir freuen uns auf die Fortsetzung.

Referenz

Now in preview: Azure Virtual Machines with Ampere Altra Arm-based processors

Tags: