Salve omnes, hic tertius stipes in serie Quarkus!
Cum microservices enucleare Javam, saepe credendum est
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
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.
Quarkus quoque
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 "
Ver Framework APIs
Dependentia Iniectio
Quarkus sustinet rhoncus
Π
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;
}
@Autowired
@RestClient
SalutationRestClient salutationRestClient;
@Value("${fallbackSalutation}")
String fallbackSalutation;
@Configuration
@Configuration
public class AppConfiguration {
@Bean(name = "capitalizeFunction")
public StringFunction capitalizer() {
return String::toUpperCase;
}
}
@Component("noopFunction")
public class NoOpSingleStringFunction implements StringFunction {
@Override
public String apply(String s) {
return s;
}
}
@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.
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.
Π
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.
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 ad petitionem deficiendi
@Retry(maxRetries=3)
public String getSalutation() {
makeRemoteCall(); //...
}
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.
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.
Π
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;
}
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;
}
Indicat timer vestigia temporis annotatum objectum
@Timed(name = "TimedFallback",
displayName="Timed Fallback",
description="Fallback delay")
public String salutationFallback() {
return fallbackSalutation;
}
Metrica Endpoints
Application metrics
Basic metrics
Vendor metrics
Omnes metrics
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.
Π
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.
Source: www.habr.com