Versuchen Sie, Ruby und Java in Dapr zu integrieren

Einführung

Es folgt Dapr Ich habe versucht, Dapr zu verwenden, das die Entwicklung von Mikroservices in Java erleichtert.

Entspricht Schritt 6 von Tutorial. Code siehe unten https://github.com/koduki/example-dapr/tree/v01

Konfigurationsübersicht

Obwohl es im Tutorial Python ist, verwende ich Ruby für mein Hobby. Der Punkt dieser Konfiguration ist, dass Ruby und Java nicht direkt kommunizieren, sondern Ruby nur mit seinem Sidecar Dapr und nicht direkt mit Dapr, auf dem Java ausgeführt wird, kommuniziert.

dapr_sample01.png

Da der Test lokal ist, können Sie tatsächlich direkt sprechen. Aus Gründen der Übersichtlichkeit setzen wir den Java Dapr-Port auf 3500 und den Ruby Dapr-Port auf 3600.

Code

Diesmal handelt es sich um einen supereinfachen Code, der nur einmal pro Sekunde eine Anforderung an die Ziel-API sendet. javaapp ist die App der Java-App. Verwenden Sie diese Option, um automatisch die richtige App für Dpar zu finden. Es ist nicht erforderlich, die IP- oder Portnummer anzugeben, auf der die API ausgeführt wird. Der im Ruby-Code angegebene http: // localhost: # {MY_DAPR_PORT} ist nicht der Dapr auf der Java-Seite, sondern der Dapr auf der Ruby-Seite. Es ist also immer localhost, und die Portnummer ist in diesem Fall 3600 statt 3500.

require 'net/https'
require "json"

MY_DAPR_PORT=ARGV[0]

n = 0
while true do
    n += 1
    params = {data: {orderId: n}}

    url = "http://localhost:#{MY_DAPR_PORT}/v1.0/invoke/javaapp/method/neworder"
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)

    headers = { "Content-Type" => "application/json" }
    response = http.post(uri.path, params.to_json, headers)

    sleep 1
end

Ausführen und bestätigen

Lass es uns laufen. Dapr scheint in der Lage zu sein, nicht nur Web-Apps, sondern auch Befehle problemlos zu verpacken. Starten Sie zunächst die API-Seite.

$ dapr run --app-id javaapp --app-port 8080 --port 3500 ./mvnw quarkus:dev

Starten Sie dann die Client-Seite in einem anderen Terminal.

$ dapr run --app-id rubyapp --port 3600 ruby app.rb 3600

Das Ausführungsergebnis auf der Java-Seite sieht wie folgt aus.

== APP == orderId: 1
== APP == orderId: 2
== APP == orderId: 3

Sie können sehen, dass es regelmäßig jede Sekunde läuft.

Sie können auch die Liste von Dapr überprüfen, die gerade ausgeführt wird, indem Sie dapr list ausführen.

$dapr list
  APP ID   HTTP PORT  GRPC PORT  APP PORT  COMMAND             AGE  CREATED              PID    
  rubyapp  3600       55932      0         ruby app.rb 3600    28m  2020-05-24 21:08.13  44897  
  javaapp  3500       56777      8080      ./mvnw quarkus:dev  3d   2020-05-21 21:21.30  27471  

Zusammenfassung

Ich konnte erfolgreich über Dapr mit Ruby und Java kommunizieren.

Das Interessante an dieser Architektur ist, dass sowohl Ruby- als auch Java-Code nur mit Dapr kommunizieren, sodass Sie sich während dieser Zeit mit HTTP oder gRPC nicht zu viele Sorgen um die Sicherheit machen müssen. Es ist kein Problem, wenn Daprs Kommunikationsverschlüsselung und -authentifizierung durchführen. Daher ist es großartig, den sicherheitsrelevanten Teil entfernen zu können.

Es sollte andere Konnektoren wie Distributed Tracing, Twitter API und Kafka geben, daher möchte ich auch diese Bereiche ausprobieren. Zuerst dachte ich, dass es eine Schicht ähnlich wie KNative ist, weil es denselben Mikrodienst unterstützt, aber während dies aus Sicht der Infrastruktur wie Build-Umgebung, FaaS, Serveless ist, ist dies wesentlich mehr Mechanismus als Anwendung, daher wurde es von CNCF übernommen. Es besteht kein Zweifel, dass es sich um ein Werkzeug handelt, das in Zukunft besorgniserregend ist.

Recommended Posts

Versuchen Sie, Ruby und Java in Dapr zu integrieren
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Probieren wir WebSocket mit Java und Javascript aus!
Konvertieren Sie mit Ruby von JSON nach TSV und von TSV nach JSON
Von Java zu Ruby !!
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
Versuchen Sie, TCP / IP + NIO mit JAVA zu implementieren
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
[Java] Verweisen Sie auf und setzen Sie private Variablen mit Reflektion
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
Versuchen Sie eine DB-Verbindung mit Java
Versuchen Sie gRPC mit Java, Maven
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Einstellungsmethode zum Verknüpfen von Java von Eclipse und Github / September 2017
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Umgang mit verschiedenen Versionen von rbenv und Ruby
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
Java mit Ramen lernen [Teil 1]
Verwenden Sie Java mit MSYS und Cygwin
Verteilte Ablaufverfolgung mit OpenCensus und Java
Installieren Sie Java und Tomcat mit Ansible
Versuchen Sie, Yuma in Ruby zu implementieren
[Java] Mit Arrays.asList () zu beachtende Punkte
Wagen Sie es, Kaggle mit Java herauszufordern (1)
Verwenden Sie JDBC mit Java und Scala.
Versuchen Sie es mit Redis mit Java (jar)
Ich habe versucht, mit Java zu interagieren
Folgen Sie dem Link mit Selen (Java)
PDF und TIFF mit Java 8 ausgeben
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie, die öffentliche Java-Methode zu extrahieren
Versuchen Sie die bidirektionale Kommunikation mit gRPC Java
Versuchen Sie, Yuma in Java zu implementieren
Java, Arrays für Anfänger
Mit Java verschlüsseln und mit C # entschlüsseln
Entwerfen Sie ein Muster, um es mit dem Swift-Iterator-Muster zu versuchen, das Array und Dictionary unterstützt
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Versuchen Sie, den Start von Java-Konsolenprogrammen mit dem nativen Image von GraalVM zu beschleunigen
Führen Sie logstash mit Docker aus und versuchen Sie, Daten in Elastic Cloud hochzuladen
AtCoder ARC 081 C-Hash, der in Ruby, Perl und Java gelöst werden muss
Lesen Sie die Daten der Shizuoka Prefecture Point Cloud DB mit Java und versuchen Sie, die Baumhöhe zu ermitteln.
Mit Rubin ● × Game und Othello (Grundlegende Bewertung)
Schnittstelle Versuchen Sie, Java-Problem TypeScript 7-3 zu machen
[Ruby / Refactoring] Von der iterativen Ruby-Verarbeitung wie Java und C bis zur Ruby-ähnlichen iterativen Verarbeitung
Versuchen Sie, Project Euler in Java zu lösen
So kompilieren Sie Java mit VsCode & Ant
Überwachen Sie Java-Anwendungen mit Jolokia und Hawtio
Erste Schritte mit Ruby für Java-Ingenieure
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Versuchen Sie, n-ary Addition in Java zu implementieren