[Veranstaltungsrückblick] Scala Meetup im Januar 2023

Das achte Scala-Meetup endete letzten Samstag erfolgreich. Drei erfahrene Scala-Benutzer teilten drei Hauptthemen mit über 2000 Online-Benutzern:

Gleichzeitig diskutierten alle als Antwort auf Fragen von Fans auch Themen, die viel Aufmerksamkeit erregt haben, wie zum Beispiel „Scala-Einstieg und erweiterte Pfade sowie die Anwendung von Akka in verteilten Szenarien“. Das Transkript der Rede kann hier heruntergeladen werden .

Schauen Sie sich gerne den öffentlichen Account von Bitu Technology an, um mehr über die neuesten Nachrichten und Aktivitäten von Scala zu erfahren. Gerne können Sie auch eine Nachricht im Hintergrund hinterlassen und sich für  die Scala-Entwicklungsaustauschgruppe bewerben!

Tubis gRPC Evolution Road

Tubi Scala Team & gRPC

Zhang Zhenglai, ein Back-End-Ingenieur aus Tubi, stellte zunächst den Hintergrund der Geburt von gRPC und die damit verbundenen wichtigsten Funktionen vor.

gRPC wird häufig zum Aufbau sprach- und plattformübergreifender Hochleistungs-Microservices verwendet. Seine hervorragenden Funktionen wie Schnittstellenpriorität, effiziente Übertragung und gute Kompatibilität machen es zum De-facto-Standard für die Servicekommunikation im Cloud-nativen Zeitalter. Das ist es wird auch von Google unterstützt und ist der Kern von CNCF. Einer der Artikel.

gRPC verfügt hauptsächlich über vier Kommunikationsmodi, die je nach tatsächlichem Geschäftsszenario flexibel ausgewählt werden können, nämlich:

· Einweg-RPC (unärer/einfacher RPC)

· Serverseitiger Streaming-RPC

· Clientseitiger Streaming-RPC

· Bidirektionales Streaming-RPC

Zhenglai demonstrierte auch eine einfache gRPC HelloWorld-Anwendung auf einer realen Maschine, verglich die Ähnlichkeiten und Unterschiede zwischen gRPC und anderen Kommunikations-Frameworks und listete die Vor- und Nachteile verschiedener Frameworks auf. Vergleichen wir gRPC mit anderen Frameworks wie REST und demselben RPC Framework Die Funktionen von Thrift sind gut verstanden.

 Später gab Zhenglai den Grund an, warum Tubi gRPC verwendet, was einer Zusammenfassung der hervorragenden Designpunkte von gRPC entspricht:

· Dienstdefinition statt Ressourcendefinition, geeignet für verschiedene Geschäftsanforderungen (praktischer für die Domänenmodellierung)

· Starke Typbeschränkungen, Reduzierung der Entwicklungs- und Wartungskosten und Verbesserung der Produktivität der Ingenieure (im Einklang mit den Type-Safe-Designanforderungen)

· Mehrsprachige Unterstützung, verschiedene Teams können entsprechend den Geschäftsanforderungen eine passendere Programmiersprache auswählen (mehr Tools können verwendet werden)

· Verschiedene Teams können Servicedefinitionen problemlos über die zentralisierte ProtoBuf-Codebasis austauschen (praktisch für Teams, um Services zu verwalten und einheitlich zu modellieren).

Die effiziente Serialisierungsleistung und das kleine Serialisierungsvolumen von ProtoBuf (in Akka wird Protobuf auch zum Serialisieren von Whisper-Informationen zwischen Clustern verwendet)

· Native Unterstützung für Stream-Vorgänge, wodurch die Übertragung großer Datenmengen effizienter wird (Stream-Verarbeitung ist in Geschäftsszenarien sehr wichtig)

· Gute Leistung, kann Dienste mit hohem Durchsatz und geringer Latenz unterstützen

· Die Gemeinschaft ist aktiv und die Ökologie entwickelt sich rasch weiter

· Kubernetes ist eng integriert und kann Funktionen wie HealthCheck und Service Discovery nutzen

Tubi Akka-gRPC-Migration

Die mit Scala erstellten internen Dienste von Tubi stützen sich stark auf das Akka-Framework. Nachdem Akka-gRPC aufgrund seiner hervorragenden Leistung und praktischen Funktionen ausgereift war, begann das Tubi-Team mit der Migration seiner gRPC-Dienste von der gRPC-Laufzeit auf Akka-gRPC.

Zhenglai gab auch den entsprechenden Leistungsbenchmark an. Durch die Migration von Akka-gRPC kann das System unter hoher Last eine bessere Leistung und Stabilität erzielen. Der Hauptvorteil in dieser Phase ist die Verbesserung der Wartbarkeit.

Bezüglich der Auswirkungen der Ersetzung der LIZENZ durch Akka sagte Zhenglai, dass Tubi weiterhin mit Lightbend zusammenarbeiten und die damit verbundenen Dienste von Akka nutzen werde.

——Der obige Beitrag stammt von Ken

Durch Zhenglais Austausch habe ich gelernt, wie Tubis spezifische Scala-Anwendung aussieht. Es ist ein praktischerer Austausch, und ich finde, dass er viel besser ist, als sich nur die Theorie anzuschauen.

——Die obige Freigabe stammt von Alpha

Scala und funktionale Programmierung

@Yuan Yang

 Zunächst wurde das vom Beijing Zhiyuan Artificial Intelligence Research Institute ins Leben gerufene Tongxiang-Projekt vorgestellt – ein AI + Hilfsdiagnosesystem der traditionellen chinesischen Medizin, das Ärzten mithilfe klinischer Hilfsdiagnosen die Effizienz und Diagnosegenauigkeit optimiert. Meiner Meinung nach ist dies ein sehr interessanter Anwendungspunkt, der von Scala und Typescript entwickelt wurde (anscheinend achtet Herr Yuan auf Typsicherheit).

Das Beeindruckendste ist, dass bei der Erläuterung der Gesamtstruktur des Projekts der Titel „Theoretische Unterstützung der Kategorietheorie“ lautete. Ich weiß nicht, ob hier eine kleine Lücke gegraben wurde, um zum Austausch von Konzepten im Zusammenhang mit der Kategorientheorie zu führen anschließende Reden.

 Anschließend erläuterte Herr Yuan die zugehörigen Konzepte der funktionalen Programmierung. Lassen Sie uns verstehen, warum Nebenwirkungen bewältigt werden sollten und wie die funktionale Programmierung am besten praktiziert wird.

Die funktionale Programmierung ist streng und eher ein Rahmen für den Umgang mit Problemen, der uns dabei hilft, Unternehmen und Anwendungen wissenschaftlicher und effektiver aufzubauen. Wir müssen zuerst die Daten und ihr Format klären, dann die Konvertierungslogik zwischen verschiedenen Daten definieren, also die Funktion zur Realisierung des Konvertierungsvorgangs, und schließlich diese Funktionen entsprechend der Geschäftslogik miteinander verbinden.

Nach meiner persönlichen Erfahrung können bei der Implementierung von Konvertierungsoperationsfunktionen zunächst die Hauptfunktionen gemäß dem großen Rahmen der Geschäftslogik definiert und dann Schicht für Schicht entkoppelt werden. Schließlich wird festgestellt, dass die Kernfunktion möglich ist bestehend aus mehreren kleinen Funktionen.

Dies hat den Vorteil, dass die geschriebenen Komponenten besser zusammengesetzt und logisch wiederverwendbar sind. Um Nebenwirkungen zu vermeiden, müssen wir sie so weit wie möglich auf die äußere Logikschicht verschieben, zuerst die Kernlogikschicht maximieren und schließlich neu konzentrieren Nebenwirkungen.

Stellen Sie sich vor, wenn sich mehr als 70 % unseres Kerncodes um die Verarbeitungslogik von Funktionen mit Nebenwirkungen drehen, wird das Verständnis der Codelogik zu einem sehr schlechten Leseerlebnis führen und sehr ausführlich erscheinen, weil Fast nichts von dem, was wir haben Sehen ist das, was wir wollen. Ein möglicher Ansatz besteht darin, zunächst die Kernlogik durchzugehen und sich dann am Ende auf die Bewältigung der Nebenwirkungen zu konzentrieren.

Lehrer Yuan erwähnte, dass ein solches Entwicklungsparadigma eine gute Korrelation mit der automatischen KI-Programmierung haben wird. Tatsächlich ist es nicht schwer zu finden, dass es klar ist, die Probleme, die er lösen muss, der KI durch funktionale Programmiermethoden zu beschreiben, damit wir es können In Zukunft werden weitere KI-Anwendungen dabei helfen, die Effizienz von Entwicklern zu steigern (CodePilot und chatGPT sind gute Beispiele, sehr leistungsstark!); Programmierer können ihre Arbeit sinnvoller gestalten und gleichzeitig mehr Wert realisieren, und es handelt sich nicht um mechanische Verdoppelung der Arbeit.

 Als nächstes erläuterte Herr Yuan das Konzept von Monad und IO Monad anhand eines „Box-Modells“.

Die Erklärungen von Lehrer Yuan sind sehr leicht zu verstehen. Eines der interessantesten Beispiele ist der Vergleich von Monad mit einem bestimmten Plan, etwas zu tun. Es ist auch eine Box, die etwas enthält, das getan werden soll, und seine Ergebnisse; aber die geplante Ausführung ist variabel (hat Nebenwirkungen, unterschiedliche Ergebnisse bei Ausführung zu unterschiedlichen Zeiten oder an unterschiedlichen Orten); jeder Schritt im Plan generiert eine neue Box, öffnet diese aber nicht sofort, es kann Nebenwirkungen in dieser Box geben, aber wir wissen auch, dass da etwas sein kann was wir wollen, was es uns ermöglicht, unseren Entwurf und unsere Implementierung in einem „Was-wäre-wenn“-Zustand abzuschließen und schließlich mit Nebenwirkungen umzugehen.

Die Generierung des Plans ist eine reine Funktion, die Ausführung des Plans jedoch nicht. Wir verwenden Monad, um die Implementierung in einer reinen Funktion zur Entwurfszeit zu ermöglichen und gleichzeitig die Fähigkeit zur Verwaltung und Kontrolle von Nebenwirkungen beizubehalten.

 Schließlich ging Herr Yuan schnell die Typklassen in der Cats-Bibliothek durch und stellte die Open-Source-Flag Boot-Microservice-Entwicklungsbibliothek des Zhiyuan-Teams und den Benchmark zum Vergleich des Spring Boot-Frameworks vor. Ich freue mich darauf, dass Flag Boot immer besser wird !

——Der obige Beitrag stammt von Ken

Der Vortrag von Lehrer Yuan Yang war für mich sehr inspirierend. Er verwendete eine neue Metapher, um Monad zu erklären. Es fühlt sich sehr lebendig an und man versteht Monad besser.

——Die obige Freigabe stammt von Alpha

Scala in interaktiven Notizbüchern

Durch den Vortrag von Lehrer Li Feng wurde mir klar, dass Scala auf so viele Bereiche angewendet werden kann, und ich lernte viele interessante und praktische Scala-Bibliotheken kennen, die ich noch nie in meiner Arbeit verwendet habe. Die Begeisterung des Lehrers für das Programmieren und sein Engagement für den Beruf haben mich auch angesteckt!

——Die obige Weitergabe stammt von Z

Lehrer Li Feng hat viele Inhalte geteilt, und ich habe das Gefühl, dass die Recherche tiefergehender ist. Für mich ist es schwierig zu verstehen, weil ich noch nie zuvor damit in Berührung gekommen bin, aber es ist sehr gut, dass Lehrer Li Feng Ich habe auch geteilt, was ich im Laufe der Jahre angesammelt habe. Das Dokument kann später langsam verstanden werden.

Was das Erlernen von Scala angeht, war ich von Herrn Li Fengs Ausführungen sehr beeindruckt. Insbesondere die Notwendigkeit, die Motivation zum Lernen zu erzeugen. Diese Anforderung kann geschäftlicher, beruflicher Entwicklungsbedarf oder persönlicher Interessen sein, die die Grenzen erweitern möchten.

——Die obige Aufteilung stammt aus dem Bau nebenan

Anwendungsfall von Scala in Tubi

Erstellen Sie mit Scala und Akka-Stream ein vollständig responsives Adserving-System

Abwicklung von Anzeigenauktionen mit Scala und akka-stream

Frühere Scala Meetup-Empfehlungen

【Veranstaltungsrückblick】Juni 2022

【Veranstaltungsrückblick】Januar 2021

【Veranstaltungsrückblick】September 2020

【Veranstaltungsrückblick】April 2020

Schließen Sie sich Tubi an  , um mit Scala bessere Dienste zu schaffen!

Supongo que te gusta

Origin blog.csdn.net/weixin_49193714/article/details/128729285
Recomendado
Clasificación