So verbessern Sie die Ausfallsicherheit von Kubernetes durch erweitertes Verkehrsmanagement

Ursprünglicher Autor: Jenn Gile – F5 NGINX Product Marketing Manager

Ursprünglicher Link: So verbessern Sie die Ausfallsicherheit von Kubernetes durch erweitertes Verkehrsmanagement

Nachdruckquelle: Offizielle chinesische Website von NGINX


Die einzige offizielle chinesische Community von NGINX, alle unter  nginx.org.cn

Anmerkung des Herausgebers  – Dieser Artikel ist einer der folgenden Blog-Beitragsserien (insgesamt zehn Beiträge):

  1. Kubernetes in Produktionsqualität hilft Ihnen, die Komplexität zu reduzieren

  2. So verbessern Sie die Ausfallsicherheit von Kubernetes durch erweitertes Verkehrsmanagement (dieser Artikel)

  3. So verbessern Sie die Sichtbarkeit Ihrer Kubernetes-Umgebung

  4. Sechs Möglichkeiten, Kubernetes mit Traffic-Management-Tools zu sichern

  5. Leitfaden zur Auswahl von Ingress-Controllern, Teil 1: Ermitteln Ihrer Anforderungen

  6. Leitfaden zur Auswahl von Ingress-Controllern , Teil 2: Bewertung von Risiken und Technologieaussichten

  7. Leitfaden zur Auswahl von Ingress-Controllern, Teil 3: Leistungsvergleich von Open-Source-, Standard- und kommerziellen Versionen

  8. Leitfaden zur Auswahl des Ingress-Controllers, Teil 4: NGINX-Ingress-Controller-Optionen

  9. So wählen Sie Service Mesh aus

  10. Leistungstests des NGINX Ingress Controllers in einer dynamischen Kubernetes-Cloud-Umgebung

Sie können die gesamten Blogbeiträge auch kostenlos als E-Book herunterladen: Kubernetes : From Test to Production .

Wie können Sie feststellen, ob ein Unternehmen moderne App-Entwicklungstechniken erfolgreich einsetzt? Es ist so einfach wie zu sehen, ob sich Ihre Kunden in den sozialen Medien beschweren. Kunden beschweren sich möglicherweise darüber, dass sie keine neuen Filme ansehen können, sich nicht beim Online-Banking anmelden können oder aufgrund einer Zeitüberschreitung in ihrem Warenkorb keine Bestellungen aufgeben können.

1.png(Ich wollte gerade einen Film ansehen, den ich ausgeliehen hatte, aber die Meldung „Fehler bei der Videowiedergabe“ wurde immer wieder angezeigt und die URL der Hilfeseite der Website konnte nicht geöffnet werden. Meine App ist die neueste Version. Ich habe versucht, mich abzumelden und wieder anzumelden wieder, aber es hat nicht funktioniert. Ich habe mein Internet-TV neu gestartet. Suchen Sie nach einer Lösung?)

Auch wenn sie sich nicht öffentlich beschweren, heißt das nicht, dass es kein Problem gibt. Einer unserer Kunden, eine große Versicherungsgesellschaft, sagte uns einmal, dass sie Kunden verlieren würden, wenn ihre Homepage nicht in nur  3 Sekunden geladen würde .

Alle Benutzerbeschwerden über schlechte Leistung oder Ausfallzeiten weisen auf einen gemeinsamen Schuldigen hin: mangelnde Ausfallsicherheit. Das Tolle an der Microservices-Technologie (einschließlich Containern und Kubernetes) ist, dass sie die Ausfallsicherheit von Anwendungen erhöhen und das Kundenerlebnis deutlich verbessern kann. Warum? Alles beginnt mit der Architektur.

Es gibt grundlegende Unterschiede zwischen Microservice-Architektur und monolithischer Architektur. Wenn beispielsweise bei einer altmodischen Weihnachtslichterkette ein Licht kaputt geht, wird die gesamte Lichterkette dunkel. Wenn Sie die Glühbirnen nicht austauschen, müssen Sie den gesamten Haufen wegwerfen. Monolithische Anwendungen sind wie diese altmodische Lichterkette, bei der die Komponenten so eng miteinander verbunden sind, dass alle kaputt gehen, wenn eine davon kaputt geht.

Allerdings haben sowohl die Beleuchtungsindustrie als auch die Softwareindustrie diesen Schwachpunkt entdeckt. Wenn bei einer modernen Lichterkette eine Glühbirne ausfällt, leuchten die anderen weiterhin. Ebenso wird bei einer gut konzipierten Microservices-Anwendung die gesamte Anwendung weiterhin ausgeführt, selbst wenn einzelne Dienstinstanzen ausfallen.

Kubernetes-Verkehrsmanagement

Container sind eine beliebte Wahl in der Microservice-Architektur, da sie leichtgewichtig, portabel und einfach zu erweitern sind. Sie eignen sich sehr gut für Szenarien, die die Verwendung kleiner unabhängiger Komponenten zum Erstellen von Anwendungen erfordern. Kubernetes  hat sich zum De-facto-Standard für die Container-Orchestrierung entwickelt, steht jedoch bei der Einführung in Produktionsumgebungen immer noch vor vielen Herausforderungen . Um die Steuerbarkeit und Ausfallsicherheit von Kubernetes-Anwendungen zu verbessern, ist eine ausgereifte Traffic-Management-Strategie ein wichtiger Faktor, die es Ihnen ermöglicht, Dienste anstelle von Paketen zu steuern und Traffic-Management-Regeln dynamisch oder mithilfe der Kubernetes-API anzupassen. Verkehrsmanagement ist in jeder Architektur wichtig, aber für Hochleistungsanwendungen sind zwei Verkehrsmanagement-Tools unerlässlich: Verkehrskontrolle und Verkehrssegmentierung .

Ablaufsteuerung

Unter Verkehrskontrolle (manchmal auch „Verkehrsführung“ oder „Verkehrsgestaltung“ genannt ) versteht man die Kontrolle darüber, wohin der Verkehr fließt und wie er sich fortbewegt. Der Einsatz von Kubernetes in der Produktion ist ein Muss, da es Ihre Infrastruktur und Anwendungen vor Angriffen und Datenverkehrsspitzen schützt. Während der Anwendungsentwicklung müssen Sie zwei Techniken anwenden : Ratenbegrenzung und Stromkreisunterbrechung .

  • Anwendungsfall: Ich möchte nicht, dass der Dienst zu viele Anfragen erhält.
    Lösung: Ratenbegrenzung

    Unabhängig davon, ob es sich bei den HTTP-Anfragen um böswillige (z. B. Brute-Force-Passwortknacken und DDoS-Angriffe) oder normale (z. B. eilige Kunden zum Kauf von Produkten) handelt, kann eine große Anzahl von HTTP-Anfragen zu Dienstlähmungen und Anwendungsabstürzen führen. Die Rate-Limiting-Technologie begrenzt die Anzahl der Anfragen, die ein Benutzer in einem bestimmten Zeitraum stellen kann. Diese Anfragen können so einfach sein wie  GET eine Anfrage zum Besuch der Homepage einer Website oder eine Anfrage auf einer Anmeldeseite  POST . Wenn Sie beispielsweise einem DDoS-Angriff ausgesetzt sind, können Sie mithilfe der Ratenbegrenzung die Rate eingehender Anfragen auf einen für echte Benutzer angemessenen Wert begrenzen.

  • Anwendungsfall: Ich möchte kaskadierende Ausfälle vermeiden.
    Lösung: Offener Stromkreis

    Wenn ein Dienst nicht verfügbar ist oder eine hohe Latenz aufweist, kann das Zeitlimit für eingehende Anforderungen und die Zeit, die der Client benötigt, um eine Fehlerantwort zu erhalten, erheblich sein. Lange Zeitüberschreitungen können zu kaskadierenden Fehlern führen, bei denen ein Ausfall in einem Dienst zu einer Zeitüberschreitung bei anderen Diensten führt, was schließlich zum Ausfall der gesamten Anwendung führt.

    Leistungsschalter überwachen Betriebsausfälle und verhindern kaskadierende Ausfälle. Wenn die Anzahl der fehlgeschlagenen Serviceanfragen den voreingestellten Schwellenwert überschreitet, wird der Leistungsschalter ausgelöst. Sobald der Leistungsschalter die Anforderung erhält, sendet er eine Fehlerantwort an den Client zurück und begrenzt dadurch den Servicefluss.

    Der Leistungsschalter blockiert und verweigert weiterhin Anfragen für einen bestimmten Zeitraum, bevor er eine begrenzte Anzahl von Anfragen zum Testen freigibt. Wenn diese Anforderungen erfolgreich sind, stoppt der Leistungsschalter die Drosselung. Bei erfolglosem Erfolg wird ein Neustart gestartet, bei dem der Leistungsschalter weiterhin Anfragen ablehnt.

Klassifizierung von Verkehrsstrafen

Verkehrssegmentierung (manchmal auch „Verkehrstest“ genannt ) ist eine Unterkategorie der Verkehrskontrolle, die darauf abzielt, den Anteil des eingehenden Datenverkehrs zu steuern, der an verschiedene Versionen einer Backend-Anwendung geleitet wird (normalerweise für die aktuelle Produktionsversion und neue Versionen). Die Verkehrssegmentierung ist ein wichtiger Teil des Anwendungsentwicklungszyklus und ermöglicht es Teams, die Funktionalität und Stabilität neuer Funktionen und Versionen zu testen, ohne die Kunden zu beeinträchtigen. Zu den praktischen Bereitstellungsszenarien gehören Debugging-Routing , Graustufenbereitstellung , A/B-Tests  und  Blau-Grün- Bereitstellung. (Es gibt große Unterschiede in der Verwendung dieser vier Begriffe in der Branche, daher werden wir sie gemäß den uns bekannten Definitionen verwenden.)

  • Anwendungsfall: Ich bin bereit, eine neue Version in der Produktion zu testen.
    Lösung: Debug-Routing

    Nehmen wir an, Sie haben eine Banking-App und möchten dieser eine Kreditbewertungsfunktion hinzufügen. Bevor Sie Kundentests durchführen, möchten Sie möglicherweise sehen, wie es in einer Produktionsumgebung funktioniert. Mit dem Debug-Routing können Sie neue Funktionen öffentlich bereitstellen und sie gleichzeitig vor echten Benutzern „verstecken“, sodass nur bestimmte Benutzer basierend auf Layer-7-Attributen wie Sitzungscookie, Sitzungs-ID oder Gruppen-ID darauf zugreifen können. Beispielsweise können Sie den Zugriff nur Benutzern mit administrativen Sitzungscookies erlauben – ihre Anfragen werden an die neue Version mit Bonitätsbewertungsfunktion weitergeleitet, während andere Benutzer weiterhin auf die stabile Version zugreifen.

  • Anwendungsfall: Ich muss sicherstellen, dass die neue Version stabil funktioniert

    Lösung: Grayscale-Bereitstellung (auch bekannt als „Canary-Bereitstellung“)

    Das Konzept des Kanarienvogeleinsatzes geht auf eine langjährige Bergbaupraxis zurück. Damals setzten Bergleute Kanarienvögel in Käfigen in die Minen und evakuierten sie, sobald sie feststellten, dass die Kanarienvögel vergiftet waren. Daher sind Kanarienvögel „Gasalarmvögel“. In der Welt der Apps gibt es keine Opfer mehr. Die Grayscale-Bereitstellung bietet eine sichere und agile Möglichkeit, die Stabilität neuer Funktionen oder Versionen zu testen. Eine typische Graustufenbereitstellung besteht darin, zunächst die überwiegende Mehrheit (z. B. 99 %) der Benutzer mit der stabilen Version verwenden zu lassen und dann eine kleine Anzahl von Benutzern (die restlichen 1 %) auf die neue Version zu übertragen. Wenn mit der neuen Version etwas schief geht (z. B. ein Absturz oder die Rückgabe eines Fehlers an den Client), können Sie Testbenutzer sofort wieder auf die stabile Version übertragen. Wenn die neue Version reibungslos läuft, können Sie Benutzer auf einmal oder schrittweise (häufiger) auf kontrollierte Weise von der stabilen Version auf die neue Version migrieren.

4.png

  • Anwendungsfall: Ich muss wissen, ob die neue Version bei Kunden beliebter ist als die aktuelle Version.
    Lösung: A/B-Tests

    Sobald Sie bestätigt haben, dass Ihre neue Funktion in der Produktion ordnungsgemäß funktioniert, möchten Sie möglicherweise auch Kundenfeedback zu der Funktion einholen, einschließlich wichtiger Leistungsindikatoren (KPIs) wie Klicks, Wiederholungskundenquote oder explizite Bewertungen. Viele Branchen nutzen A/B-Testverfahren, um das Nutzerverhalten zu messen und zu vergleichen mit dem Ziel, die Beliebtheit verschiedener Produkt- oder App-Versionen bei Kundengruppen zu ermitteln. Bei einem typischen A/B-Test besuchen 50 % der Nutzer Version A (die aktuelle Version der App) und die restlichen 50 % besuchen Version B (die Version mit stabilen neuen Funktionen). Die Version mit der höchsten KPI-Gesamtpunktzahl gewinnt.

5.png

  • Anwendungsfall: Ich möchte Benutzer ohne Ausfallzeiten auf eine neue Version umstellen.
    Lösung: Blau-Grün-Bereitstellung

    Nehmen wir an, Ihre Banking-App steht kurz vor einem großen Versionswechsel. Herzlichen Glückwunsch! In der Vergangenheit bedeuteten Versionsaktualisierungen häufig Ausfallzeiten für Benutzer, da die alte Version aus der Produktion entfernt werden musste, bevor eine neue Version übertragen werden konnte. Aber im heutigen Wettbewerbsumfeld sind Ausfallzeiten für Upgrades für die meisten Benutzer inakzeptabel. Durch die Blau-Grün-Bereitstellung werden Ausfallzeiten bei Upgrades erheblich reduziert oder sogar ganz eliminiert. Sie können die alte Version (blau) weiterhin in einer Produktionsumgebung ausführen und gleichzeitig die neue Version (grün) in dieser Produktionsumgebung bereitstellen.

    Die meisten Unternehmen zögern, alle Benutzer auf einmal von Blau auf Grün umzustellen. Was passiert schließlich, wenn die grüne Version ausfällt? ! Die Lösung besteht darin, die Graustufenbereitstellung zu nutzen, um Benutzer in einer inkrementellen Weise zu verschieben, die am besten zu Ihrer Risikovermeidungsstrategie passt. Wenn die neue Version eine Katastrophe ist, können Sie mit nur wenigen Tastendrücken alle Benutzer problemlos wieder auf Stable zurücksetzen.

Wie NGINX Ihnen helfen kann

Die meisten  Ingress-Controller  und  Service-Meshs können Ihnen dabei helfen, eine erweiterte Verkehrskontrolle und -segmentierung zu erreichen. Welche Technologie Sie verwenden sollten, hängt von Ihrer Anwendungsarchitektur und Ihren Anwendungsfällen ab. Der Ingress-Controller eignet sich beispielsweise für die folgenden drei Szenarien:

  • Ihre Anwendung verfügt nur über einen Endpunkt, genau wie die einfache oder monolithische Anwendung, die Sie auf Kubernetes migriert haben.

  • Es gibt keine Dienst-zu-Dienst-Kommunikation im Cluster.

  • Es gibt eine Dienst-zu-Dienst-Kommunikation im Cluster, Sie verwenden jedoch noch kein Service Mesh.

Wenn Ihre Bereitstellung komplex genug ist, um ein Service Mesh zu verwenden, besteht ein häufiger Anwendungsfall darin, einzelne Microservices durch Aufteilen des Service-Verkehrs zu testen oder zu aktualisieren. Beispielsweise möchten Sie möglicherweise eine Graustufenbereitstellung zwischen zwei verschiedenen Versionen der Geolocation-Microservice-API auf dem mobilen Frontend durchführen.

Allerdings ist die Einrichtung der Traffic-Klassifizierung für einige Ingress-Controller und Service Meshes nicht nur zeitaufwändig, sondern aus vielen Gründen auch fehleranfällig:

  • Ingress-Controller und Service Meshes verschiedener Anbieter verfügen über unterschiedliche Implementierungen von Kubernetes-Funktionen.

  • Kubernetes ist nicht darauf ausgelegt, Layer-7-Verkehr zu verwalten und zu verstehen.

  • Einige Ingress-Controller und Service Meshes unterstützen kein komplexes Verkehrsmanagement.

Mit  NGINX Ingress Controller  und  NGINX Service Mesh  können Sie in Sekundenschnelle robuste Routing- und Segmentierungsrichtlinien für den Datenverkehr konfigurieren .

NGINX Ingress-Ressourcen und SMI-Spezifikationen helfen Ihnen, die Konfiguration zu vereinfachen

Die folgenden NGINX-Funktionen vereinfachen den Konfigurationsprozess:

  • NGINX-Ingress-Ressource für NGINX-Ingress-Controller  – Während die standardmäßige Kubernetes-Ingress-Ressource die Konfiguration von SSL/TLS-Terminierung, HTTP-Lastausgleich und Layer-7-Routing vereinfacht, verfügt sie nicht über die erforderlichen Funktionen für Circuit Breaking, A/B-Tests und Blue- Grüne Bereitstellungsanpassungsfunktion. Daher müssen Nicht-NGINX-Benutzer auf Annotationen, ConfigMap und benutzerdefinierte Vorlagen zurückgreifen, aber allen mangelt es an einer feinkörnigen Kontrolle und sie sind unsicher, fehleranfällig und schwierig zu verwenden.

    Der NGINX Ingress Controller wird mit  der NGINX Ingress-Ressource als Alternative zur Standard-Ingress-Ressource (die ebenfalls unterstützt wird) geliefert. Diese Ressource verwendet einen nativen, typsicheren eingerückten Konfigurationsstil, um die Implementierung des Ingress-Lastausgleichs zu vereinfachen. NGINX-Ingress-Ressourcen haben einen zusätzlichen Vorteil für bestehende NGINX-Benutzer: Sie vereinfachen die Wiederverwendung von Lastausgleichskonfigurationen in Nicht-Kubernetes-Umgebungen, sodass alle NGINX-Lastausgleichsmodule dieselbe Lastausgleichskonfiguration verwenden können.

  • NGINX Service Mesh kompatibel mit SMI  – NGINX Service Mesh implementiert das Service Mesh Interface (SMI) – SMI ist eine Spezifikation . Definiert die Standardschnittstelle für Service Mesh, das auf Kubernetes ausgeführt wird, mit  TrafficSplit, TrafficTarget und  HTTPRouteGroup. und andere typisierte Ressourcen. Durch die Nutzung standardmäßiger Kubernetes-Konfigurationsmethoden vereinfachen NGINX Service Mesh und  NGINX SMI-Erweiterungen die Bereitstellung von Verkehrssegmentierungsstrategien, wie z. B. Graustufenbereitstellung, und minimieren Unterbrechungen des Produktionsverkehrs. Im Folgenden finden Sie ein Beispiel für die Verwendung von NGINX Service Mesh zum Definieren einer Graustufenbereitstellung:

apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
name: target-ts
spec:
service: target-svc
backends:
- service: target-v1-0
    weight: 90
- service: target-v2-0
    weight: 10

In unserem Tutorial „Bereitstellung mit Verkehrsumleitung“ werden Beispiele für Bereitstellungsmodi vorgestellt, die die Verkehrsaufteilung nutzen, einschließlich der Graustufenbereitstellung und der Blau-Grün-Bereitstellung.

Erzielen Sie eine komplexere Flusskontrolle und Flussverfeinerung mit erweiterter Anpassung

Die folgenden Funktionen von NGINX vereinfachen die Verkehrssteuerung und Verkehrssegmentierung auf erweiterte Weise:

  • Schlüsselwertspeicher für Graustufen-Bereitstellungen  – Wenn Sie A/B-Tests oder Blau-Grün-Bereitstellungen durchführen, möchten Sie möglicherweise einen ) durchführen, um den Datenverkehr auf die neue Version umzustellen. Die meisten Tools erfordern einen hohen manuellen Aufwand, da Sie die Prozentsätze bearbeiten und die Konfigurationsdatei für jedes Inkrement neu laden müssen. Angesichts einer erheblichen Arbeitsbelastung riskieren Sie möglicherweise, direkt von 5 % auf 100 % zu steigen. Mit dem NGINX Ingress Controller auf Basis von NGINX Plus können Sie jedoch den Schlüsselwertspeicher nutzen, um den Prozentsatz zu ändern, ohne die Konfigurationsdatei neu laden zu müssen .

  • Schaltkreisunterbrechung mit NGINX Ingress Controller  – Fortschrittliche Schaltkreisunterbrecher können Ausfälle und Failover schneller erkennen und sogar benutzerdefinierte formatierte Fehlerseiten für fehlerhafte Upstream-Dienste aktivieren, was Ihnen hilft, Zeit zu sparen und die Ausfallsicherheit zu erhöhen. Beispielsweise könnte der Leistungsschalter eines Suchdienstes eine Reihe gut formatierter, aber leerer Suchergebnisse zurückgeben. Um diesen Effekt zu erzielen, verwendet der NGINX Ingress Controller auf Basis von NGINX Plus aktive Gesundheitsprüfungen , um den Gesundheitszustand von TCP- und UDP-Upstream-Servern proaktiv zu überwachen. Da die Überwachung in Echtzeit erfolgt, ist die Wahrscheinlichkeit geringer, dass Ihre Kunden auf Anwendungsfehler stoßen.

  • Stromkreisunterbrechung über NGINX Service Mesh  – Die NGINX Service Mesh-  Leistungsschalterspezifikation verfügt über drei benutzerdefinierte Felder:

  • errors ——Die Anzahl der Fehler, bevor der Leistungsschalter ausgelöst wird

  • timeoutSeconds ——Das Fehlerfenster, bevor der Leistungsschalter auslöst, und die Wartezeit, bevor der Leistungsschalter schließt

  • fallback ——oDer Name und Port des Kubernetes-Dienstes, an den der Datenverkehr umgeleitet wird, nachdem der Schutzschalter ausgelöst wurde.

errors und  timeoutSeconds sind standardmäßige Leistungsschalterfunktionen, während  fallback die Möglichkeit, Backup-Server zu definieren, die Ausfallsicherheit weiter erhöht. Wenn die Antworten Ihres Backup-Servers eindeutig sind, können sie als Frühindikatoren für einen Clusterausfall dienen, sodass Sie sofort mit der Fehlerbehebung beginnen können.

Interpretieren Sie die Ergebnisse der Traffic-Segmentierung mithilfe von Dashboards

Nachdem Sie nun die Traffic-Segmentierung erreicht haben, was kommt als nächstes? Als nächstes sollten wir die Ergebnisse der Verkehrssegmentierung analysieren. Dies kann der schwierigste Teil sein, da vielen Unternehmen wichtige Einblicke in den Kubernetes-Verkehr und den Anwendungsbetrieb fehlen. NGINX kann Ihnen helfen, leichter Erkenntnisse zu gewinnen, indem es die von Prometheus Exporter bereitgestellten Metriken in grafischer Form über  das NGINX Plus-Dashboard  und das vorgefertigte Grafana-Dashboard anzeigt. Um mehr darüber zu erfahren, wie Sie die Sichtbarkeit verbessern und Erkenntnisse gewinnen können, lesen Sie unseren Blogbeitrag „  So verbessern Sie die Sichtbarkeit in Ihrer Kubernetes-Umgebung“ .

NGINX hilft Ihnen, Microservices einfach zu steuern

NGINX Ingress Controller, powered by NGINX Plus, bietet  eine kostenlose 30-Tage-Testversion , einschließlich NGINX App Protect, das containerisierte Anwendungen schützt  .

Um die NGINX-Open-Source-Version des NGINX Ingress Controllers auszuprobieren, können Sie den Quellcode der Veröffentlichung erhalten oder  den vorgefertigten Container von DockerHub herunterladen.

Sie können auf  f5.com  gehen, um NGINX Service Mesh herunterzuladen , das immer kostenlos ist.


Die einzige offizielle chinesische Community von NGINX, alle unter nginx.org.cn 

Weitere technische Informationen zu NGINX, interaktive Fragen und Antworten, Kursreihen und Veranstaltungsressourcen:  Offizielle Website der Open Source Community  |  Offizielles WeChat-Konto

IntelliJ IDEA 2023.3 & JetBrains Family Bucket jährliches Hauptversions-Update neues Konzept „defensive Programmierung“: Machen Sie sich einen stabilen Job GitHub.com betreibt mehr als 1.200 MySQL-Hosts, wie kann man nahtlos auf 8.0 aktualisieren? Das Web3-Team von Stephen Chow wird nächsten Monat eine unabhängige App starten. Wird Firefox eliminiert? Visual Studio Code 1.85 veröffentlicht, schwebendes Fenster Die US-amerikanische CISA empfiehlt den Verzicht auf C/C++, um Schwachstellen in der Speichersicherheit zu beseitigen. Yu Chengdong: Huawei wird nächstes Jahr bahnbrechende Produkte auf den Markt bringen und die Branchengeschichte neu schreiben. TIOBE Dezember: C# wird voraussichtlich die Programmiersprache des Jahres. Ein Artikel geschrieben von Lei Jun vor 30 Jahren: „Prinzip und Design des Expertensystems zur Computervirenbestimmung“
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/5246775/blog/10116929
Recomendado
Clasificación