Mar a chomhcheanglaíonn Quarkus MicroProfile agus Spring

Dia duit gach duine, seo chugat an tríú postáil sa tsraith Quarkus!

Mar a chomhcheanglaíonn Quarkus MicroProfile agus Spring

Nuair a bhíonn microservices Java á bhforbairt, is minic a chreidtear go bhfuil MicroProfile Eclipse и Tosaithe earraigh is APIanna neamhspleácha iad. De réir réamhshocraithe, is gnách go n-úsáideann ríomhchláraitheoirí na APIanna a bhfuil taithí acu orthu cheana féin, toisc go dtógann sé go leor ama creataí nua agus comhpháirteanna ama rite a fhoghlaim. Sa lá atá inniu déanfaimid iarracht forbairt roinnt tóir a shimpliú MicroProfile API d'fhorbróirí an Earraigh agus a thaispeáint duit conas an API Earraigh agus gnéithe úsáideacha nua a úsáid go comhuaineach Cuarcus.

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 inár sampla tosaíonn an tseirbhís Person (a thiomsaíonn ó Spring, MicroProfile, agus APIs JPA isteach i dénártha ag baint úsáide as an íomhá dúchasach GraalVM) i díreach 0.055 soicind agus tógann sé suas le thart ar 90 MB de RAM (RSS) ar chríochphointe iarratais RESTful. Ina theannta sin, déantar a thiomsú féin le hordú amháin: mvn package -Pnative.

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. Kubernetes, toisc go bhfuil sé tábhachtach a thuiscint. Tá Quarkus suite mar chairn Java do Kubernetes, tá sé deartha chun tomhaltas cuimhne agus am tosaithe feidhmchláir agus seirbhísí Java a íoslaghdú, agus, mar thoradh air sin, a ndlús ar an óstach a mhéadú agus costais iomlána a laghdú.

Quarkus freisin tacaíonn giniúint uathoibríoch Kubernetes acmhainní agus tairiscintí treoracha le himscaradh ar ardáin Kubernetes agus Red Hat OpenShift. Ina theannta sin, gineann Quarkus go huathoibríoch na comhaid Dockerfile.jvm (pacáistiú JVM) agus Dockerfile.native (pacáistiú dénártha dúchasach) a theastaíonn chun coimeádáin a chruthú.

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 tionscadal samplach, áit a n-úsáidtear APIs an Earraigh agus an MicroProfile agus fiú an rang Java céanna le chéile. Is féidir an cód sa sampla seo a thiomsú agus a rith ón líne ordaithe, féach an comhad README.md le haghaidh sonraí.

APIs Creat an Earraigh

Instealladh Spleáchais

Tacaíonn Quarkus le raon de APInna Comhthéacsanna agus Instealladh Spleáchais (CDI). agus APIanna Instealladh Spleáchais an Earraigh (Spring DI). Má tá tú ag obair le MicroProfile, Java EE agus Iacárta EE, ansin tá tú an-eolach ar CDI cheana féin. Ar an láimh eile, is féidir le forbróirí an Earraigh úsáid a bhaint as Quarkus Extension for Spring DI API chun comhoiriúnacht le Spring DI a bhaint amach. Tugtar samplaí i dTábla 2 de na APInna Spring DI a dtacaítear leo a úsáid.

В tionscadal ónár sampla Úsáideann sé CDI agus Instealladh Spleáchais an Earraigh araon. Le haghaidh tuilleadh faisnéise agus samplaí ar an ábhar seo, féach an treoir Quarkus ar a dtugtar Treoir Earraigh DI.

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
Uathsreangaithe
luach

@Autowired
@RestClient
SalutationRestClient salutationRestClient;

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

Bean
@ Cumraíocht

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

Comhpháirt

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

seirbhí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 Treoir Ghréasáin Earraigh.

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.
В tionscadal ónár sampla Úsáidtear APIanna Spring Data JPA agus tá tuilleadh faisnéise ar fáil sa rang teagaisc Quarkus ar a dtugtar Treoir JPA Sonraí Earraigh.

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. Hystrix. Mar sin féin, níor nuashonraíodh Hystrix le fada an lá, ach tá Lamháltas Locht MicroProfile ag forbairt go gníomhach anois agus tá roinnt blianta d'úsáid táirgeachta taobh thiar de. Dá bhrí sin, chun feabhas a chur ar iontaofacht na seirbhísí i Quarkus, moltar úsáid a bhaint as na APIanna MicroProfile Fault Tolerance, a úsáidtear samplaí díobh i dTábla 5. Le haghaidh tuilleadh eolais faoi seo, féach ar an lámhleabhar Quarkus Treoir maidir le Caoinfhulaingt Lochtanna.

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";
}

Atriail

Déan iarracht eile ar theip ar iarratas

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

Teorainn ama

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 Treoir Sláinte.

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.

В tionscadal ónár sampla Úsáidtear Méadracht MicroProfile chun méadracht feidhmchláir a sholáthar. Le haghaidh tuilleadh faisnéise, féach lámhleabhar Quarkus Treoir Méadrachta.

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;
}

méadrach

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;
}

Amach

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 localhost:8080/méadracht/iarratas
Bunmhéadracht localhost:8080/méadracht/bonn
Méadracht díoltóra localhost:8080/méadracht/díoltóir
Gach méadracht localhost:8080/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.

В tionscadal ónár sampla baintear úsáid as críochphointí RESTful ag baint úsáide as an gCliant Rest MicroProfile. Tá tuilleadh eolais agus samplaí ar an ábhar seo le fáil i lámhleabhar Quarkus Treoir Cliant Rest.

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 Quarkus lámhleabhar.

Foinse: will.com

Add a comment