Quam Quarkus coniungit MicroProfile et Ver?

Salve omnes, hic tertius stipes in serie Quarkus!

Quam Quarkus coniungit MicroProfile et Ver?

Cum microservices enucleare Javam, saepe credendum est Et obscuratus MicroProfile ΠΈ vere tabernus separati et sui iuris APIs. Defalta programmatores APIs uti tendunt iam usi sunt, cum novas compages discendi et partium runtim multum temporis accipit. Hodie probabimus progressionem popularis alicuius simpliciorem reddere MicroProfile API ad Spring developers et ostende quomodo eodem tempore veris API et novis utilibus notis uti quarkus.

Paulo subtilius inspiciemus primum scopum et singula quomodo Quarkus ver APIs sustineat ut tincidunt veris ostenderet quomodo MicroProfile API uteretur in opere suo hodierno. Tunc APIs MicroProfile microform operiemus, quae tincidunt vernis utiles sunt cum microservices creando.

Cur Quarkus? Uno modo, hoc est vivere coding, id est, automatic reloading aliquarum mutationum in MicroProfile API, Ver API et aliis Java APIs, quod uno tantum mandato exhibetur: mvn quarkus:dev. Secundo, de hoc in exemplum nostrum Persona munus (quod e Ver, MicroProfile, et JPA APIs in binarium utens nativi GraalVM imagine) incipit in secundis 0.055 secundis, et circa 90 MB de RAM (RSS) in punctum applicationis restful sumit. Ipsa autem eius compilatio uno tantum praecepto peragitur: mvn sarcina -Pnative.

Nos in detail de MicroProfile non introimus, praeterquam ut vere tincidunt auxilium intelligat quomodo APIs veris cum MicroProfile APIs in Quarkus uti possint.

Vasa et Kubernetes

Ad hunc articulum simplicem servandum, hic solas rationes summus gradus operiemus. Kubernetesmagna enim est intelligere. Quarkus ut acervus Javae pro Kubernetes collocatur, ad memoriam consummationis et temporis applicationes et operas Javae initium minuendum destinatur, et consequenter densitatem suam in exercitum auget et altiore sumptuum minuit.

Quarkus quoque sustinet Auto generation Kubernetes facultates et offert ducibus ad instruere Kubernetes et Red Hat OpenShift platforms. Praeterea Quarkus automatice generat dockerfile.jvm (JVM packaging) et Dockerfile.nativa (binaria packaging) lima opus ad vasa creanda.

Denique, posito in Kubernetes ut scopum ambitus instruere, Quarkus non utitur Iava compagibus in casibus ubi similis functionis ratio in ipso suggestu Kubernetarum exercetur. Mensa 1 tabulam praebet correspondentiae functionis inter Kubernetes et compages typicas Javae a veris tincidunt adhibita.

Tabula 1. Tabula functionis correspondentiae inter compages Javae et Kubernetes.

operando
Traditional Spring Boot
Kubernetes

Servitium inventionis
Signa
DNS

configuration
Ver nubis Mando
Mando Maps / Secreta

onus libratio
Ribbon (partem clientis)
Service, Replicatio Controller (servo parte)

Congero et currendo in codice ex exemplo

In hoc articulo ad " exempli gratia projectubi Ver et MicroProfile APIs atque etiam idem genus Javae simul utuntur. Codex in hoc exemplo componi potest et ex linea praecipere, videre README.md lima pro details.

Ver Framework APIs

Dependentia Iniectio

Quarkus sustinet rhoncus Contextus et Dependentia Iniectio (CDI) APIs et Ver Dependency Iniectio (Ver DI) APIs. Si vos es opus cum MicroProfile, Java EE and Batavia EEes iam familiariter CDI. Contra, vere tincidunt uti potest Quarkus Extensio pro Ver DI API ad convenientiam cum Ver DI. Exempla usus Veris DI APIs in Tabula 2 a.

Π’ proiciamus ab exemplo nostro Utitur utroque CDI et vere Dependentia Iniectio. Plura et exempla de hoc argumento in Quarkus duce nomine reperiri possunt Ver DI Guide.

Mensa 2. Exempla subnixi ver DI APIs utendi.

Supported Spring DI Features
exempla

Constructor Iniectio

public PersonSpringController(
   PersonSpringRepository personRepository,  // injected      
   PersonSpringMPService personService) {    // injected
      this.personRepository = personRepository;
      this.personService = personService;
}

Ager Iniectio
Autowired
Value

@Autowired
@RestClient
SalutationRestClient salutationRestClient;

@Value("${fallbackSalutation}")
String fallbackSalutation;

Bean
@Configuration

@Configuration
public class AppConfiguration {
   @Bean(name = "capitalizeFunction")
   public StringFunction capitalizer() {
      return String::toUpperCase;
   }
}

pars

@Component("noopFunction")
public class NoOpSingleStringFunction implements StringFunction {
   @Override
   public String apply(String s) {
      return s;
   }
}

obsequium

@Service
public class MessageProducer {
   @Value("${greeting.message}")
   String message;

   public String getPrefix() {
      return message;
   }
}

Web compage

MicroProfile users amabunt Quarkus quod sustinet JAX-RS, MicroProfile Requiem Client, JSON-P, et JSON-B ut exemplar interretialem programmandi. Vere tincidunt gaudebunt cum Quarkus' recenti auxilio pro Ver Web API, speciatim QUIETUM interfaces. Similia cum Ver DI, propositum principale ver Web API subsidium est ut vere tincidunt utatur veris interretialibus APIs in conjunctione cum MicroProfile APIs. Exempla quomodo utendi APIs vernis interretialibus sustentatis in Tabula 3, et plura indicia et exempla de hoc argumento in Quarkus dicta consequat inveniri possunt. Ver Web Guide.

Mensa 3. Exempla utendi APIs vernis interreti sustentatur.

Supported Spring Web Features
exempla

@RestController
@RequestMapping

@RestController
@RequestMapping("/person")
public class PersonSpringController {
   ...
   ...
   ...
}

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixVariable
@PathVariable
@CookieValue
@RequestBody
@ResponseStatus
@ExceptionHandler
@RestControllerAdvice (partialis)

@GetMapping(path = "/greet/{id}",
   produces = "text/plain")
   public String greetPerson(
   @PathVariable(name = "id") long id) {
   ...
   ...
   ...
}

Ver Data JPA

MicroProfile utentes etiam Agnoscunt Quarkus subsidia JPA hiberno ORM utentem. Est etiam bonum nuntium pro tincidunt veris: Quarkus fovet commune ver Data JPA annotationes et rationes. Exempla usus fontis datae JPA APIs fulcientis in Tabula 4 data sunt.
Π’ proiciamus ab exemplo nostro Ver Data JPA APIs adhibentur et magis notitiae in promptu sunt in Quarkus dictae consequat Ver Data JPA Guide.

Mensa 4. Exempla usus fontis Data JPA APIs fulta.

Supported Spring Data JPA Features
exempla

CrudRepository

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

Demo Repository
JpaRepository
PagingAndSortingRepository

public class PersonRepository extends 

    Repository {

    Person save(Person entity);

    Optional findById(Person entity);
}

Repositorium Fragmenta

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

Quaesitum modi ductum

public interface PersonRepository extends CrudRepository {

    List findByName(String name);
    
    Person findByNameBySsn(String ssn);
    
    Optional 
       findByNameBySsnIgnoreCase(String ssn);

    Boolean existsBookByYearOfBirthBetween(
            Integer start, Integer end);
}

User definitae queries

public interface MovieRepository
         extends CrudRepository {

    Movie findFirstByOrderByDurationDesc();

    @Query("select m from Movie m where m.rating = ?1")
    Iterator findByRating(String rating);

    @Query("from Movie where title = ?1")
    Movie findByTitle(String title);
}

MicroProfile APIs

Culpa tolerantia

Culpa constructio tolerantiae magni ponderis sunt ad impedimenta casus lapsus et certas architecturas microservices creandas. Vere tincidunt usus ambitus praevaricatores culpae tolerantiae multos annos fuerunt. Hystrix. Nihilominus, Hystrix non diu renovata est, sed culpae MicroProfile tolerantia nunc active enucleatur et aliquot annos productionis usum post eam habet. Ideo, ut certa officia in Quarkus meliorentur, commendatur ut MicroProfile Culpa APIs tolerantia, cuius exempla in Tabula 5. Plura de hac re vide in Quarkus manuali. Culpa TOLERATIO Libri.

Tabula 5. Exempla usus fautorum MicroProfile Culpa TOLERATIO APIs.

MicroProfile Grand Tolerantia Features
Description
exempla

@Asynchronous

Executio logicae in filo separato

@Asynchronous
@Retry
public Future<String> getSalutation() {
   ...
   return future;
}

@Bulkhead

Circumscribere numero petitiones simultaneae

@Bulkhead(5)
public void fiveConcurrent() {
   makeRemoteCall(); //...
}

@Interruptio potentiae

Dolor defectum pertractatio et convaluisset de defectis

@CircuitBreaker(delay=500   // milliseconds
   failureRatio = .75,
   requestVolumeThreshold = 20,
   successThreshold = 5)
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

@Fallback

Vel ratione vocantem in casu deficiendi

@Timeout(500) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

public String fallback() {
   return "hello";
}

Retry

Retry ad petitionem deficiendi

@Retry(maxRetries=3)
public String getSalutation() {
   makeRemoteCall(); //...
}

timeout

Defectum imperium timeout

@Timeout(value = 500 )   // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

Reprehendo officia (Service Health)

Kubernetes platforms Monitor salutem vasorum specialibus officiis utens. Ut suggesta subiecta monitoria officia permittat, Ver tincidunt typice utuntur consuetudine HealthIndicator et Ver Boot Actuator. In Quarkus, hoc fieri potest utens MicroProfile Health, qui per defaltam vitam reprimendam exercet, sed configurari potest ad simul configurari vitam et alacritatem. Exempla quomodo utendi APIs fautorum MicroProfile Health in Tabula 6 praebeantur, ac informationis informationis in Quarkus manuali. Health Guide.

Tabula VI: Syntaxis exempla salutis APIs sustentatur MicroProfile.

MicroProfile features Health
Description
exempla

@Liveness

Defecit reboots platformised applicationes continens
endpoint:
host: 8080/salute/live

@Liveness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(ready ? true:false)
     .withData("mydata", data)
     .build();  
}

@Readiness

In suggestu negotiatio non mittet ad applicationes continens continens si non parata est
endpoint:
exercitum: (VIII)LXXX / salutem

@Readiness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(live ? true:false)
     .withData("mydata", data)
     .build();  
}

Metrics

Applicationes metricas praebent vel ad proposita perficienda (ad monitorem faciendum SLAs) vel ad proposita non operational (negotio SLAs). Ver tincidunt praebent metrics utentes Spring Boot Actuator et Micrometer. Rursus, Quarkus utitur MicroProfile Metrics ut metros baselines (JVM et systema operandi), venditorem metricam (Quarkus), et applicationem metricam. MicroProfile Metrics postulat ut exsecutionem sustineat JSON et OpenMetrics (Prometheus) output formats. Exempla utendi MicroProfile Metrica API in Tabula VII.

Π’ proiciamus ab exemplo nostro MicroProfile Metrica adhibentur ad applicationem metrics. Pro maiori vide Quarkus manuale Metrics Guide.

Tabula 7. Exempla utendi MicroProfile Metrica APIs.

MicroProfile Metrics Features
Description
exempla

@counted

Contrarium significat quod pluries numerat obiectum annotatum, vocatum est

@Counted(name = "fallbackCounter", 
  displayName = "Fallback Counter", 
  description = "Fallback Counter")
public String salutationFallback() {
   return fallbackSalutation;
}

@ConcurrentGauge

Significat METIOR quod vocat numerum concurrentium ad annotatum objectum

@ConcurrentGuage(
  name = "fallbackConcurrentGauge", 
  displayName="Fallback Concurrent", 
  description="Fallback Concurrent")
public String salutationFallback() {
   return fallbackSalutation;
}

@Gauge

Significat METIOR sensorem, qui mensurat valorem rei annotatae

@Metered(name = "FallbackGauge",
   displayName="Fallback Gauge",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

@Metered

Metrum sensorem denotat quod monitores vocationum frequentiam rei annotatae

@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

De re metrica

Annotationum notitiarum de metadata continens, cum petitio recipitur ad ingrediendum vel metricum producendum

@Metric
@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

intempestivo

Indicat timer vestigia temporis annotatum objectum

@Timed(name = "TimedFallback",
   displayName="Timed Fallback",
   description="Fallback delay")
public String salutationFallback() {
   return fallbackSalutation;
}

Metrica Endpoints

Application metrics localhost:8080/metris/application
Basic metrics localhost:8080/metris/base
Vendor metrics localhost:8080/metris/vendor
Omnes metrics localhost:8080/metris

MicroProfile Requiem Client

Microservices saepe loca quieta praebere quae clientem APIs correspondentem requirunt ad operandum. Utendi REQUIES terminos, vere tincidunt typice utuntur RestTemplate. Quarkus praebet MicroProfile Requiem Client APIs ad hanc problema solvendam, quorum usus exempla in Tabula 8 traduntur.

Π’ proiciamus ab exemplo nostro usus restful finium fit utens MicroProfile Requiem Client. Plura de hoc argumento reperiri possunt et exempla in Quarkus manuale Requiem Client Guide.

Tabula 8. Exempla utendi MicroProfile Requiem Client APIs.

MicroProfile Requiem Tabernam Client Features
Description
exempla

@RegisterRestClient

Java typed in interface ut reliquum clientem registrat

@RegisterRestClient
@Path("/")
public interface MyRestClient {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getSalutation();
}

@RestClient

Notat exsequendam instantiam typod QUIETUS clientis interface

@Autowired // or @Inject
@RestClient
MyRestClient restClient;

invocatio

Requiem vocat terminus

System.out.println(
   restClient.getSalutation());

mp-requiem / url

Reliqua specificat terminus

application.properties:
org.example.MyRestClient/mp-rest/url=
   http://localhost:8081/myendpoint

results

In hoc blog, imprimis ad tincidunt vernum destinatum, celeriter inspiciendum cepimus quomodo Ver APIs cum MicroProfile APIs in Quarkus utatur ut Java microservias enucleet et deinde eas in codicem binarium vernativum componat, qui centena megabytarum RAM servat et immittit in res milliseconds.

Ut iam intellexistis, plura de subsidiis Veris et MicroProfile APIs, ac multa alia informationes utilia reperiri possunt. Quarkus manual.

Source: www.habr.com