Dia duit gach duine, seo chugat an tríú postáil sa tsraith Quarkus!
Nuair a bhíonn microservices Java á bhforbairt, is minic a chreidtear go bhfuil
Le beagán níos mine, féachfaimid ar dtús ar an raon feidhme agus ar na sonraí maidir le conas a thacaíonn Quarkus le APIanna an Earraigh chun a thaispeáint d'fhorbróirí an Earraigh conas an API MicroProfile a úsáid ina gcuid oibre ó lá go lá. Ansin clúdóimid na APIanna MicroProfile, atá úsáideach d'fhorbróirí an Earraigh agus iad ag cruthú micreasheirbhísí.
Cén fáth Quarkus? Ar an gcéad dul síos, is códú beo é seo, is é sin, athlódáil uathoibríoch aon athruithe ar an MicroProfile API, Spring API agus Java APIs eile, a dhéantar le hordú amháin: mvn quarkus:dev. Dara dul síos, a mheas i
Ní thabharfaimid mionsonraí faoi MicroProfile, ach amháin chun cabhrú le forbróirí an Earraigh a thuiscint conas is féidir leo Spring APIs a úsáid le MicroProfile APIs in Quarkus.
Gabhdáin agus Kubernetes
Chun an t-alt seo a choinneáil simplí, ní chlúdóimid ach na gnéithe ardleibhéil tacaíochta anseo.
Quarkus freisin
Ar deireadh, trí dhíriú ar Kubernetes mar an timpeallacht sprioc-imscaradh, ní úsáideann Quarkus creataí Java i gcásanna ina gcuirtear feidhmiúlacht den chineál céanna i bhfeidhm ar leibhéal ardán Kubernetes féin. Soláthraíonn Tábla 1 léarscáil den chomhfhreagras feidhmiúil idir Kubernetes agus creataí tipiciúla Java a úsáideann forbróirí an Earraigh.
Tábla 1. Léarscáil den chomhfhreagras feidhmiúil idir creataí Java agus Kubernetes.
Feidhme
Tosaithe Earraigh Traidisiúnta
Kubernetes
Fionnachtain seirbhíse
Eureka
DNS
cumraíocht
Cumraíocht Scamall an Earraigh
Léarscáileanna Cumraíochta/Rúin
Luach cothromaíocht
Ribín (taobh an chliaint)
Seirbhís, Rialaitheoir Macasamhlú (taobh an fhreastalaí)
An cód a thiomsú agus a rith ón sampla
San Airteagal seo táimid ag tagairt do
APIs Creat an Earraigh
Instealladh Spleáchais
Tacaíonn Quarkus le raon de
В
Tábla 2. Samplaí de na APIs Spring DI a fhaigheann tacaíocht a úsáid.
Gnéithe Earraigh DI Tacaithe
Примеры
Instealladh Tógálaí
public PersonSpringController(
PersonSpringRepository personRepository, // injected
PersonSpringMPService personService) { // injected
this.personRepository = personRepository;
this.personService = personService;
}
Instealladh Réimse
@Autowired
@RestClient
SalutationRestClient salutationRestClient;
@Value("${fallbackSalutation}")
String fallbackSalutation;
@ Cumraíocht
@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;
}
}
Creat gréasáin
Is breá le húsáideoirí MicroProfile go dtacaíonn Quarkus le JAX-RS, Cliant Rest MicroProfile, JSON-P, agus JSON-B mar an tsamhail ríomhchláraithe gréasáin príomhúil. Beidh forbróirí an earraigh sásta le tacaíocht Quarkus le déanaí don Spring Web API, go háirithe comhéadain REST. Cosúil le Spring DI, is é príomhsprioc thacaíocht Spring Web API a chur ar chumas forbróirí Spring APIs Spring Web a úsáid i gcomhar le MicroProfile APIs. Soláthraítear samplaí de conas na APIanna Spring Web tacaithe a úsáid i dTábla 3, agus tá tuilleadh faisnéise agus samplaí ar an ábhar seo le fáil sa rang teagaisc Quarkus ar a dtugtar
Tábla 3. Samplaí de na APIanna Spring Web a dtacaítear leo a úsáid.
Gnéithe Gréasáin Earraigh Tacaithe
Примеры
@RestController
@RequestMapping
@RestController
@RequestMapping("/person")
public class PersonSpringController {
...
...
...
}
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixAthraithe
@Cosán Athraitheach
@CookieValue
@RequestBody
@ResponseStatus
@EisceachtHandler
@RestControllerAdvice (páirteach)
@GetMapping(path = "/greet/{id}",
produces = "text/plain")
public String greetPerson(
@PathVariable(name = "id") long id) {
...
...
...
}
Sonraí Earraigh JPA
Tuigfidh úsáideoirí MicroProfile freisin go dtacaíonn Quarkus le JPA ag baint úsáide as an Hibernate ORM. Tá dea-scéal ann freisin d’fhorbróirí an Earraigh: tacaíonn Quarkus le nótaí agus cineálacha coitianta Spring Data JPA. Tugtar samplaí i dTábla 4 de na APInna Spring Data JPA a dtacaítear leo a úsáid.
В
Tábla 4. Samplaí d’úsáid a bhaint as APIanna Spring Data JPA tacaithe.
Sonraí Earraigh Tacaithe Gnéithe JPA
Примеры
CrudRepository
public interface PersonRepository
extends JpaRepository,
PersonFragment {
...
}
Stór
JpaRepository
PagingAndSortingRepository
public class PersonRepository extends
Repository {
Person save(Person entity);
Optional findById(Person entity);
}
Blúirí Taiscthe
public interface PersonRepository
extends JpaRepository,
PersonFragment {
...
}
Modhanna fiosrúcháin díorthaithe
public interface PersonRepository extends CrudRepository {
List findByName(String name);
Person findByNameBySsn(String ssn);
Optional
findByNameBySsnIgnoreCase(String ssn);
Boolean existsBookByYearOfBirthBetween(
Integer start, Integer end);
}
Ceisteanna úsáideora-shainithe
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);
}
APIanna MicroProfile
Caoinfhulaingt locht
Tá tógálacha lamháltais lochtanna an-tábhachtach chun teipeanna cascáideacha a chosc agus chun ailtireachtaí microservice iontaofa a chruthú. Tá forbróirí an earraigh ag baint úsáide as scoradáin chiorcaid le haghaidh lamháltais lochtanna le blianta fada.
Tábla 5. Samplaí de úsáid a bhaint as APIanna Lamháltais Lochtanna MicroProfile tacaithe.
Gnéithe Caoinfhulaingt Lochtanna MicroProfile
Cur síos
Примеры
@asincrónach
Loighic a fhorghníomhú i snáithe ar leith
@Asynchronous
@Retry
public Future<String> getSalutation() {
...
return future;
}
@Bulkhead
Teorainn a chur le líon na n-iarratas comhuaineach
@Bulkhead(5)
public void fiveConcurrent() {
makeRemoteCall(); //...
}
@CircuitBreaker
Láimhseáil cliste teip agus aisghabháil ó theipeanna
@CircuitBreaker(delay=500 // milliseconds
failureRatio = .75,
requestVolumeThreshold = 20,
successThreshold = 5)
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
@Titim ar ais
Ag glaoch ar loighic mhalartach i gcás teipe
@Timeout(500) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
public String fallback() {
return "hello";
}
Déan iarracht eile ar theip ar iarratas
@Retry(maxRetries=3)
public String getSalutation() {
makeRemoteCall(); //...
}
Teorainn ama rialaithe
@Timeout(value = 500 ) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
Seirbhísí seiceála (Seirbhís Sláinte)
Déanann ardáin Kubernetes monatóireacht ar shláinte coimeádán ag baint úsáide as seirbhísí speisialta. Chun gur féidir leis an ardán bunúsach monatóireacht a dhéanamh ar sheirbhísí, is gnách go n-úsáideann forbróirí an Earraigh Táscaire Sláinte saincheaptha agus Actuator Tosaithe Earraigh. In Quarkus, is féidir é seo a dhéanamh ag baint úsáide as MicroProfile Health, a dhéanann seiceáil beocht de réir réamhshocraithe, ach is féidir a chumrú chun beocht agus ullmhacht a sheiceáil ag an am céanna. Soláthraítear samplaí de conas na APIanna Sláinte MicroProfile tacaithe a úsáid i dTábla 6, agus soláthraítear faisnéis bhreise i lámhleabhar Quarkus
Tábla 6: Samplaí úsáide de APIanna Sláinte MicroProfile tacaithe.
Gnéithe MicroProfile Health
Cur síos
Примеры
@Beo
Theip ar an ardán a atosú feidhmchláir coimeádta
Críochphointe:
óstach:8080/sláinte/beo
@Liveness
public class MyHC implements HealthCheck {
public HealthCheckResponse call() {
...
return HealthCheckResponse
.named("myHCProbe")
.status(ready ? true:false)
.withData("mydata", data)
.build();
}
@léiteacht
Ní sheolfaidh an t-ardán trácht chuig feidhmchláir coimeádta mura bhfuil sé réidh
Críochphointe:
óstach:8080/sláinte/réidh
@Readiness
public class MyHC implements HealthCheck {
public HealthCheckResponse call() {
...
return HealthCheckResponse
.named("myHCProbe")
.status(live ? true:false)
.withData("mydata", data)
.build();
}
Méadracht
Soláthraíonn iarratais méadracht chun críocha oibríochtúla (chun monatóireacht a dhéanamh ar fheidhmíocht SLAanna) nó chun críocha neamhoibríochta (CLSanna gnó). Soláthraíonn forbróirí an earraigh méadracht ag baint úsáide as Spring Boot Actuator agus Micrometer. Ina dhiaidh sin, úsáideann Quarkus MicroProfile Metrics chun méadracht bonnlíne (JVM agus córas oibriúcháin), méadracht díoltóirí (Quarkus), agus méadracht iarratais a sholáthar. Éilíonn MicroProfile Metrics go dtacaíonn an cur chun feidhme le formáidí aschuir JSON agus OpenMetrics (Prometheus). Tugtar samplaí d’úsáid an MicroProfile Metrics API i dTábla 7.
В
Tábla 7. Samplaí de úsáid a bhaint as MicroProfile Metrics APIs.
Gnéithe Méadracht MicroProfile
Cur síos
Примеры
@comhaireamh
Seasann cuntar a chomhaireamh an líon uaireanta a glaodh ar réad anótáilte
@Counted(name = "fallbackCounter",
displayName = "Fallback Counter",
description = "Fallback Counter")
public String salutationFallback() {
return fallbackSalutation;
}
@ConcurrentGauge
Ciallaíonn sé tomhsaire a chomhaireamh líon na nglaonna comhthráthacha chuig réad anótáilte
@ConcurrentGuage(
name = "fallbackConcurrentGauge",
displayName="Fallback Concurrent",
description="Fallback Concurrent")
public String salutationFallback() {
return fallbackSalutation;
}
@Gabhadh
Léiríonn sé braiteoir tomhsaire a thomhaiseann luach réad anótáilte
@Metered(name = "FallbackGauge",
displayName="Fallback Gauge",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
@Méadraithe
Sonraítear braiteoir méadair a dhéanann monatóireacht ar mhinicíocht glaonna réad anótáilte
@Metered(name = "MeteredFallback",
displayName="Metered Fallback",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
Nóta ina bhfuil faisnéis faoi mheiteashonraí nuair a fhaightear iarratas chun méadrach a chur isteach nó a tháirgeadh
@Metric
@Metered(name = "MeteredFallback",
displayName="Metered Fallback",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
Léiríonn sé lasc ama a rianaíonn fad réad anótáilte
@Timed(name = "TimedFallback",
displayName="Timed Fallback",
description="Fallback delay")
public String salutationFallback() {
return fallbackSalutation;
}
Méadracht Críochphointí
Méadracht iarratais
Bunmhéadracht
Méadracht díoltóra
Gach méadracht
Cliant Scíthe MicroProfile
Is minic a sholáthraíonn microservices críochphointí RESTful a éilíonn APIanna cliant comhfhreagracha oibriú leo. Chun críochphointí RESTful a úsáid, de ghnáth úsáideann forbróirí an earraigh RestTemplate. Tairgeann Quarkus MicroProfile Rest Client APIs chun an fhadhb seo a réiteach, agus tugtar samplaí úsáide i dTábla 8.
В
Tábla 8. Samplaí de úsáid a bhaint as MicroProfile Rest Client APIs.
Gnéithe Cliant Rest MicroProfile
Cur síos
Примеры
@RegisterRestClient
Cláraítear comhéadan clóscríofa Java mar chliant REST
@RegisterRestClient
@Path("/")
public interface MyRestClient {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getSalutation();
}
@RestClient
Marcanna ar chur i bhfeidhm shampla de chomhéadan clóscríofa cliant REST
@Autowired // or @Inject
@RestClient
MyRestClient restClient;
Ionradh
Glaonn críochphointe REST
System.out.println(
restClient.getSalutation());
mp- scíth/url
Sonraítear críochphointe REST
application.properties:
org.example.MyRestClient/mp-rest/url=
http://localhost:8081/myendpoint
Torthaí
Sa bhlag seo, atá dírithe go príomha ar fhorbróirí an Earraigh, rinneamar breathnú go tapa ar conas na APIs Earraigh a úsáid leis na APIanna MicroProfile i Quarkus chun microservices Java a fhorbairt agus ansin iad a thiomsú i gcód dénártha dúchais a shábhálann na céadta meigeavata RAM agus a sheoltar isteach. ábhar milleasoicindí.
Mar a thuig tú cheana, is féidir tuilleadh faisnéise a fháil faoi thacaíocht do na APInna Spring and MicroProfile, chomh maith le go leor faisnéise úsáideacha eile, in
Foinse: will.com