Whakataki
I te XNUMX o Poutū-te-rangi, RedHat (kua tata nei a IBM)
Ko te whainga kia waiho a Java hei turanga matua mo te tukunga Kubernetes me te whanaketanga tono kore-tumau, ma te whakarato ki nga kaiwhakawhanake he huarahi whakakotahi ki te whakawhanaketanga i roto i nga momo tauhohenga me nga momo mahi.
Ki te titiro koe ki
Ko te tere tere o te whakarewatanga o te tono me te iti o te kohi mahara kua oatihia. Anei nga raraunga mai i te paetukutuku a te kaiwhakawhanake:
Te wa mai i te timatanga ki te whakautu tuatahi:
Hōutuutu
te okiokinga
OTA+JPA
Quarkus+GraalVM
0.014
0.055
Quarkus+OpenJDK
0.75
2.5
Tāpae Kapua Māori tuku iho*
4.3
9.5
Te paunga mahara (Mb):
Hōutuutu
te okiokinga
OTA+JPA
Quarkus+GraalVM
13
35
Quarkus+OpenJDK
74
130
Tāpae Kapua Māori tuku iho*
140
218
He mea whakamiharo, ehara?
*Kaore au i kite i nga korero mo tenei puranga hangarau, ka taea e tatou te whakaaro he momo Spring Boot tenei me te kete tinana taapiri..
Kia Ora!
Ko te tono ngawari kua tuhia ki Quarkus ka penei te ahua:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
Ko te tikanga kotahi te karaehe, kaati! Ka taea e koe te whakahaere i te tono ma te Maven i roto i te aratau whanaketanga:
mvn compile quarkus:dev
…
$ curl http://localhost:8080/hello
hello
Ko te rereke mai i te tono auau kaore he karaehe Tono! Ka tautokohia e Quarkus te uta wera, na reira ka taea e koe te whakarereke i to tono me te kore e timata ano, kia tere ake te whanaketanga.
He aha to muri mai? Ka taea e koe te taapiri i tetahi ratonga ki tetahi kaiwhakahaere ma te whakamahi i te tuhipoka
@ApplicationScoped
public class GreetingService {
public String greeting(String name) {
return "Hello " + name + "!";
}
}
Kaiwhakahaere:
@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!
Kia mahara kei te whakamahi a Quarkus i nga korero paerewa mai i nga anga mohio - CDI me JAX-RS. Kaore he take ki te ako i tetahi mea hou mena kua mahi koe me CDI me JAX-RS i mua, o te akoranga.
Te mahi me te patengi raraunga
Ka whakamahia nga korero mokohanga me te JPA paerewa mo nga hinonga. Pērā i ngā pūmana REST, me tuhi koe i te iti o te waehere. He nui ki te tohu i nga whakawhirinakitanga i roto i te konae huihuinga, taapirihia nga korero @Entity
me te whirihora i te puna raraunga i roto i te application.properties.
Katoa. Kaore he sessionFactory, persistence.xml me etahi atu konae ratonga. Ka tuhia e matou anake te waehere e hiahiatia ana. Heoi, ki te tika, ka taea e koe te hanga i tetahi konae persistence.xml me te whirihora i te paparanga ORM kia pai ake.
Ka tautokohia e Quarkus te keteroki o nga hinonga, nga kohinga mo nga hononga kotahi-ki-maha, me nga patai. I te titiro tuatahi he ahua pai, engari he pai rohe keteroki, mo te node Kubernetes kotahi. Ko era. Ko nga keteroki o nga pona rereke kaore i te tukutahi ki a raatau. Ko taku tumanako he wa poto tenei.
Te mahi waehere tukutahi
Ka rite ki te korero i runga ake nei, kei te tautoko ano a Quarkus i te momo hotaka reactive. Ko te waehere o te tono o mua ka taea te tuhi ki tetahi ahua rereke.
@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 + "!";
});
}
}
Ka taea hoki te whakawhiti i te waehere Asynchronous ki te ratonga, ka rite te hua.
Te whakamātautau
Ko nga whakamatautau mo nga tono Quarkus ka taea te tuhi ki JUnit4, JUnit5 ranei. Kei raro nei he tauira whakamatautau mo tetahi pito, ka tuhia ma te whakamahi RestAssured, engari ka taea te whakamahi i tetahi atu anga:
@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 + "!"));
}
}
Ko te tuhipoka @QuarkusTest e tohutohu ana kia whakahaere koe i te tono i mua i te whakahaere i nga whakamatautau. Ko te toenga he waehere mohio ki nga kaihanga katoa.
Taupānga-motuhake
Mai i te mea kua honoa a Quarkus ki a GraalVM, ka taea pea te whakaputa i nga waehere motuhake mo te turanga. Hei mahi i tenei, me whakauru koe i te GraalVM me te tautuhi i te taurangi taiao GRAALVM_HOME. I tua atu
mvn package -Pnative
He mea whakamiharo, ka taea te whakamatautau i te tono hanga. A he mea nui tenei na te mea ka rereke pea te mahinga o te waehere taketake mai i te mahi i runga i te JVM. Ko te tuhipoka @SubstrateTest e whakahaere ana i te waehere tono mo te turanga-motuhake. Ko te whakamahi ano i te waehere whakamatautau o naianei ka taea ma te whakamahi tuku iho; na reira, ka penei te ahua o te waehere mo te whakamatautau i tetahi tono e whakawhirinaki ana ki te turanga:
@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {
}
Ko te ahua i hangaia ka taea te kii ki Docker ka rere ki Kubernetes, OpenShift ranei, e whakaahuahia ana i roto
Taponga mahi
Ka taea te whakamahi i te anga Quarkus me Maven me Gradle. Kei te tino tautokohia a Maven, kaore i rite ki a Gradle. Engari, i tenei wa kaore a Gradle e tautoko i te hanga kaupapa koretake; he korero taipitopito kei runga i te paetukutuku
Ngā toronga
Ko Quarkus he anga whakawhanui. I tenei wa he ota
mutunga
Ki taku nei whakaaro, he rite tonu a Quarkus ki nga ahuatanga o te waa. Kei te ngawari ake te whakawhanaketanga o te waehere backend, a ko tenei anga kei te whakamaarama me te tere ake te whanaketanga ratonga ma te taapiri i te tautoko taketake mo Docker me Kubernetes. Ko te taapiri nui ko te tautoko i hangaia mo GraalVM me te whakatipuranga o nga whakaahua e whakawhirinaki ana ki te turanga, e taea ai e nga ratonga te tiimata tere me te tango i te waahi mahara. A he mea tino nui tenei i roto i to tatou wa o te hiahia nui mo nga ratonga miihini me te hoahoanga kore.
Pae whaimana -
Source: will.com