Réamhrá
Ar XNUMX Márta, RedHat (IBM go luath)
Is é an sprioc ná Java a dhéanamh ar an ardán tosaigh d’imscaradh Kubernetes agus d’fhorbairt feidhmchláir gan fhreastalaí, ag soláthar cur chuige aontaithe d’fhorbróirí maidir le forbairt i stíleanna imoibríocha agus riachtanacha araon.
Má fhéachann tú ar
Tá luas an-ard seoladh iarratais agus tomhaltas cuimhne íseal geallta. Seo iad na sonraí ó shuíomh Gréasáin an fhorbróra:
Am ón tús go dtí an chéad fhreagra:
Cumraíocht
REST
REST+JPA
Quarkus+GraalVM
0.014
0.055
Quarkus+OpenJDK
0.75
2.5
Stac Dúchais Scamall Traidisiúnta*
4.3
9.5
Tomhaltas cuimhne (Mb):
Cumraíocht
REST
REST+JPA
Quarkus+GraalVM
13
35
Quarkus+OpenJDK
74
130
Stac Dúchais Scamall Traidisiúnta*
140
218
Go hiontach, nach bhfuil?
*Ní bhfuair mé aon eolas faoin gcruach teicneolaíochta seo, is féidir linn glacadh leis gur cineál éigin Tosaithe Earraigh é seo le trealamh coirp breise.
Dia duit Domhanda!
Is mar seo a bheadh an feidhmchlár is simplí scríofa in Quarkus:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
Tá sé literally rang a haon agus sin go leor! Is féidir leat an feidhmchlár a rith ag úsáid Maven i mód forbartha:
mvn compile quarkus:dev
…
$ curl http://localhost:8080/hello
hello
Is é an difríocht ó iarratas rialta ná nach bhfuil aon rang Feidhmchláir ann! Tacaíonn Quarkus le hathlódáil te, ionas gur féidir leat d'iarratas a athrú gan é a atosú, rud a fhágann go mbeidh an fhorbairt níos tapúla fós.
Cad atá romhainn? Is féidir leat seirbhís a chur le rialtóir trí anótáil a úsáid
@ApplicationScoped
public class GreetingService {
public String greeting(String name) {
return "Hello " + name + "!";
}
}
Rialaitheoir:
@Path("/hello")
public class GreetingResource {
@Inject
GreetingService service;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public String greeting(@PathParam("name") String name) {
return service.greeting(name);
}
}
$ curl http://localhost:8080/hello/developer
Hello developer!
Tabhair faoi deara go n-úsáideann Quarkus nótaí caighdeánacha ó chreataí coitianta - CDI agus JAX-RS. Ní gá aon rud nua a fhoghlaim má d'oibrigh tú le CDI agus JAX-RS roimhe seo, ar ndóigh.
Ag obair leis an mbunachar sonraí
Úsáidtear nótaí geimhridh agus gnáthnótaí JPA d’eintitis. Cosúil le rialtóirí REST, ní mór duit cód ar a laghad a scríobh. Is leor na spleáchais sa chomhad tionóil a chur in iúl, cuir nótaí leis @Entity
agus foinse sonraí a chumrú in application.properties.
Gach. Uimh sessionFactory, persistence.xml nó comhaid seirbhíse eile. Scríobhaimid ach an cód atá ag teastáil. Mar sin féin, más gá, is féidir leat comhad persistence.xml a chruthú agus an ciseal ORM a chumrú níos míne.
Tacaíonn Quarkus le taisceadh aonán, bailiúcháin le haghaidh caidreamh duine le go leor, agus ceisteanna. Ar an gcéad amharc tá sé iontach, ach tá sé áitiúil caching, le haghaidh nód amháin Kubernetes. Iad siúd. Ní dhéantar caches nóid éagsúla a shioncronú lena chéile. Tá súil agam go bhfuil sé seo sealadach.
Forghníomhú cód asincrónach
Mar a luadh thuas, tacaíonn Quarkus freisin leis an stíl ríomhchláraithe imoibríoch. Is féidir cód an iarratais roimhe seo a scríobh i bhfoirm eile.
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public CompletionStage<String> greeting(@PathParam("name") String name) {
return CompletableFuture.supplyAsync(() -> {
return "Hello " + name + "!";
});
}
}
Is féidir cód asincrónach a aistriú chuig an tseirbhís freisin, beidh an toradh mar an gcéanna.
Tástáil
Is féidir tástálacha le haghaidh iarratas Quarkus a scríobh i JUnit4 nó JUnit5. Seo thíos sampla de thástáil le haghaidh críochphointe, scríobhtar é ag baint úsáide as RestAssured, ach is féidir creat eile a úsáid:
@QuarkusTest
public class GreetingResourceTest {
@Test
public void testGreetingEndpoint() {
String uuid = UUID.randomUUID().toString();
given()
.pathParam("name", uuid)
.when().get("/hello/{name}")
.then()
.statusCode(200)
.body(is("Hello " + uuid + "!"));
}
}
Tugann an nóta @QuarkusTest treoir duit an feidhmchlár a rith sula ndéanann tú tástálacha. Tá an chuid eile cód eolach do gach forbróir.
Feidhmchlár a bhaineann go sonrach le hardán
Ós rud é go bhfuil Quarkus comhtháite go docht le GraalVM, is féidir ar ndóigh cód ardáin-shonrach a ghiniúint. Chun seo a dhéanamh, ní mór duit GraalVM a shuiteáil agus an athróg timpeallachta GRALVM_HOME a shonrú. Tuilleadh
mvn package -Pnative
Suimiúil go leor, is féidir an t-iarratas a ghintear a thástáil. Agus tá sé seo tábhachtach toisc go bhféadfadh feidhmiú an chóid dhúchais a bheith difriúil ó fhorghníomhú an JVM. Ritheann an nóta @SubstrateTest cód feidhmchláir a bhaineann go sonrach le hardáin. Is féidir cód tástála atá ann cheana a athúsáid trí úsáid a bhaint as oidhreacht; mar thoradh air sin, beidh cuma mar seo ar an gcód chun feidhmchlár atá ag brath ar ardán a thástáil:
@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {
}
Is féidir an íomhá a ghintear a phacáistiú i Docker agus a reáchtáil i Kubernetes nó OpenShift, a bhfuil cur síos mionsonraithe air i
Foireann Uirlisí
Is féidir creat Quarkus a úsáid le Maven agus Gradle. Tá tacaíocht iomlán ag Maven, murab ionann agus Gradle. Ar an drochuair, faoi láthair ní thacaíonn Gradle le tionscadal folamh a ghiniúint; tá mioneolas ar an suíomh Gréasáin
Eisínteachtaí
Is creat síneadh é Quarkus. Faoi láthair tá ordú
Conclúid
Is é mo thuairim go bhfuil Quarkus ag teacht go leor le treochtaí an ama. Tá forbairt an chóid backend ag éirí níos éasca agus níos éasca, agus déanann an creat seo forbairt seirbhíse a shimpliú agus a bhrostú tuilleadh trí thacaíocht dhúchasach a chur leis do Docker agus Kubernetes. Is buntáiste mór é an tacaíocht ionsuite do GraalVM agus giniúint na n-íomhánna atá ag brath ar ardáin, a ligeann do sheirbhísí tosú i ndáiríre go tapa agus gan mórán spáis chuimhne a ghlacadh. Agus tá sé seo an-tábhachtach i ár gcuid ama paisean mais le haghaidh microservices agus ailtireacht serverless.
suíomh oifigiúil -
Foinse: will.com