Git Product home page Git Product logo

microbenchmark's Introduction

Microbenchmark mit JMH

Das OpenJDK-Tool JMH = Java Microbenchmarking Harness ist ein Werkzeug zum testen von kleinen Algorithmen.

Im folgenden zeige ich das mal bei Vergleich von 2 Primzahl-Algorithmen. Die Algorithmen sind keine grundsätzlich unterschiedlichen Lösungsstrategien, sondern unterscheiden sich nur in Implementierungsdetails. Genau dazu ist JMH gedacht.

Projekt aufsetzen

Das Tool wird einfach mittels Maven gestartet. Um ein passenden Maven-Projekt zu erzeugen, kann der Archetype jmh-java-benchmark-archtype genutzt werden. Die entsprechende Zeile lautet:

mvn archetype:generate 
    -DinteractiveMode=false 
    -DarchetypeGroupId=org.openjdk.jmh 
    -DarchetypeArtifactId=jmh-java-benchmark-archetype 
    -DgroupId=de.jdufner.microbenchmark 
    -DartifactId=primes 
    -Dversion=1.0

Testcode implementieren

Projekt bauen

mvn clean install

Benchmarktest ausführen

java -jar target/benchmarks.jar

microbenchmark's People

Contributors

jdufner avatar

Watchers

James Cloos avatar  avatar B. Faßbender avatar

microbenchmark's Issues

Asynchrone Kommunikation zwischen Microservices

Als Zuschauer will ich asynchrone Kommunikation zwischen Services sehen, weil ich Microservices möglich gut voneinander entkoppeln möchte, um sie möglichst widerstandsfähig (resilient) zu machen.

Welche Möglichkeiten der asynchronen Kommunikation stehen zur Verfügung?

  • RabbitMQ
  • JMS Provider: ActiveMQ, HornetQ

Security

Als Zuschauer möchte ich sehen, wie der Zugriff auf einzelnen Microservices mittels Authentifizierung und Authorisierung beschränkt wird um unbefugte Zugriffe zu verhindern.

Thema zu groß, kleiner schneiden.

Echte fachliche Services einbauen

Als Zuschauer der Demo will ich echte Geschäftslogik sehen (anstatt Hello-World oder Primzahlen) um die Architektur / Infrastruktur auf meine echten Probleme abbilden zu können.

Vorschläge für Geschäftslogik

  • CRUD-Kundenservice
  • CRUD-Kontoservice
  • Tilgungsplanservice

Polyglotte Persistenz

Als Zuschauer der Demo möchte ich polyglotte Persistenz sehen, weil ich je nach Anwendungsfall / Produkt / Microservice unterschiedliche Datenbank nutzen möchte.

Kandidaten für polyglotte Persistenz

  1. Relationale Datenbank
  2. MongoDB / CouchDB
  3. Neo4J

Ersetze Eureka durch Consul

Als Betreiber einer Microserviceplattform will ich mich nicht auf eine Service-Registry festlegen müssen um Entscheidungen später noch anpassen zu können.

  1. Bewerte Aufwand und Nutzer die Service-Registry austauschbar zu machen.
  2. Ist das möglicherweise geschenkt oder durch ein weiteres Spring-Profil abdeckbar?

Service Strangulation

Als Zuschauer der Demo möchte ich sehen, wie eine Version eines fachlichen Service ohne Downtime durch eine neuere Version ausgetauscht wird um im laufenden Betrieb Fehlerbehebungen durchführen zu können.

Ablauf

  • Schreibe zwei Versionen eines fachlichen Service: eine richtige Version und eine offensichtlich falsche Version
  • Ersetze die falsche durch die richtige Version
  • Benötige ich eine Versionnummer?
  • Wie erkenne / unterscheide ich die richtige von der falschen Version?

Ersetze Zuul durch Nginx + Consul Templates

Als Betreiber einer Microserviceplattform möchte ich mich nicht auf ein Service-Gateway festlegen müssen um Entscheidungen später noch anpassen zu können.

  1. Welche Vor- / Nachteile bietet Zuul gegenüber Nginx + Consul-Templates.
  2. Kann ich mit Consul-Templates ein Default-Mapping im Reverse Proxy von <gateway:port>/<serviceId> auf <containerIp:port>/ einrichten?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.