Spring Bootin ja Schema Registryn integrointi
Integroikaa Confluent Schema Registry Spring Boot Kafka -sovelluksiin, jotta Avro-serialisointi ja -deserialisointi voidaan käsitellä automaattisesti.
Spring Bootin ja Schema Registryn integrointi on ilmainen Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-kurssilla on yhteensä 4 oppituntia.
Tervetuloa Schema Registry -integraation pariin
Aiemmissa oppitunneissa opitte skeemojen hallinnan tärkeyden ja sen, miten skeemoja määritetään Apache Avron avulla. Nyt on aika yhdistää kaikki opittu!
Tässä oppitunnissa opitte integroimaan Confluent Schema Registryn Spring Boot -pohjaisiin Kafka-sovelluksiinne. Integraatio automatisoi Avro-serialisoinnin ja -deserialisoinnin, mikä tekee datan käsittelyketjuista luotettavia ja helposti hallittavia.
Mikä on Confluent Schema Registry?
Confluent Schema Registry on erillinen palvelu, joka tarjoaa keskitetyn säilön Avro-skeemoille. Se toimii portinvartijana ja varmistaa, että kaikissa Kafka-topiceissa kulkeva data noudattaa ennalta määritettyjä skeemoja.
- Se tallentaa kaikista skeemoista versioidun historian.
- Se tarjoaa REST-rajapinnan skeemojen rekisteröintiä ja hakemista varten.
- Se antaa jokaiselle rekisteröidylle skeemalle yksilöllisen tunnisteen.
Tämä keskitetty hallinta on avainasemassa, kun skeemoja kehitetään rikkomatta vanhempia sovelluksia.
Miten se toimii Kafkan kanssa
Kun Schema Registryä käytetään Kafkan kanssa:
- Tuottajat lähettävät viestejä ja rekisteröivät ensin Avro-skeemansa Registryyn, jos skeema on uusi. Tämän jälkeen ne sisällyttävät viestin hyötykuormaan (tai otsakkeeseen) pienen skeeman tunnisteen serialisoidun Avro-datan yhteyteen.
- Kuluttajat vastaanottavat viestejä, poimivat skeeman tunnisteen ja hakevat sitä vastaavan skeeman Registrystä. Sen jälkeen ne käyttävät tätä skeemaa Avro-datan oikeanlaiseen deserialisointiin.
Kun asetukset on määritetty oikein, tämä prosessi on sovelluksen koodille suurelta osin läpinäkyvä.
Avron riippuvuuksien lisääminen
Avro-serialisoinnin ja -deserialisoinnin ottamiseksi käyttöön Spring Kafkan ja Schema Registryn kanssa projektiin on lisättävä tietyt riippuvuudet. Mavenia käytettäessä tähän tarvitaan yleensä kafka-avro-serializer-kirjasto.
Tärkeimmät riippuvuudet ovat:
spring-kafka: Spring Kafkan ydintoiminnot.kafka-avro-serializer: Confluentin Avro-serialisoija ja -deserialisoija.avro: Apache Avron ydin kirjasto.
Lisäksi on määritettävä lisäosa, kuten avro-maven-plugin, joka luo Java-luokat .avsc-skeematiedostoista.
Schema Registry -asiakasohjelman määrittäminen
Spring Bootin on tiedettävä, missä Confluent Schema Registry on käynnissä. Tämä määritetään application.properties- tai application.yml-tiedostossa.
Ominaisuus spring.kafka.properties.schema.registry.url on ratkaisevan tärkeä. Katsotaanpa esimerkkiä:
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=io.confluent.kafka.serializers.KafkaAvroSerializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer
spring.kafka.properties.schema.registry.url=http://localhost:8081Avro-viestiluokan määrittäminen
Ennen Avro-viestien lähettämistä tai vastaanottamista tarvitsemme Avro-skeeman ja sitä vastaavan Java-luokan. Yleensä määritetään .avsc-tiedosto ja käytetään build-lisäosaa Java-luokan luomiseen.
Oletetaan esimerkiksi, että meillä on yksinkertainen User-Avro-skeema. Se loisi Java-luokan, kuten com.coddykit.User, jonka kenttiä ovat esimerkiksi name ja age. Käytämme tätä luotua luokkaa suoraan Spring Boot -koodissamme.
Avro-serialisointi tuottajan puolella
Kun Spring Boot -sovellus on määritetty käyttämään Avro-serialisoijaa ja Schema Registryn URL-osoitetta, Avro-viestien lähettäminen on suoraviivaista. KafkaTemplate huolehtii automaattisesti serialisoinnista ja yhteydenpidosta Schema Registryyn.
Tässä on yksinkertaistettu esimerkki Spring Boot -tuottajasta, joka lähettää User-olion:
package com.coddykit.producer;
import com.coddykit.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.core.KafkaTemplate;
@SpringBootApplication
public class AvroProducerApplication implements CommandLineRunner {
@Autowired
private KafkaTemplate<String, User> kafkaTemplate;
public static void main(String[] args) {
SpringApplication.run(AvroProducerApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
String topic = "users-avro-topic";
User user = new User("Alice", 30);
kafkaTemplate.send(topic, "user-key-1", user);
System.out.println("Sent Avro User: " + user);
}
}
// Simplified User class for demonstration (generated from Avro schema)
// public class User {
// private String name;
// private int age;
// public User(String name, int age) { this.name = name; this.age = age; }
// public String getName() { return name; }
// public int getAge() { return age; }
// @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; }
// }Avro-deserialisointi kuluttajan puolella
Vastaavasti kuluttajan puolella Springin @KafkaListener muuntaa saapuvien Avro-viestien tavut automaattisesti Java-Avro-olioksi, kun käytössä ovat Avro-deserialisoija ja Schema Registry -määritykset.
Kuuntelijametodin allekirjoituksessa tarvitsee vain määrittää kohteena olevan Avro-luokan tyyppi.
package com.coddykit.consumer;
import com.coddykit.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.KafkaListener;
@SpringBootApplication
public class AvroConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(AvroConsumerApplication.class, args);
}
@KafkaListener(topics = "users-avro-topic", groupId = "avro-group")
public void listen(User user) {
System.out.println("Received Avro User: " + user);
}
}Skeeman kehityksen hallinta
Yksi Schema Registryn ja Avron käytön tehokkaimmista hyödyistä on skeeman kehityksen tuki. Sovelluksen tarpeiden muuttuessa Avro-skeemoihin voi olla tarpeen lisätä, poistaa tai muokata kenttiä.
Schema Registry auttaa varmistamaan, että vaikka tuottaja lähettäisi dataa skeeman uudemmalla versiolla, vanhemmat kuluttajat ja päinvastoin voivat edelleen käsitellä viestit ilman virheitä, jos skeeman muutokset ovat yhteensopivia, esimerkiksi jos kentälle lisätään oletusarvo.
Integraation keskeiset hyödyt
Confluent Schema Registryn integrointi Spring Boot -Kafka-sovelluksiin tuo useita merkittäviä etuja:
- Datan yhteensopivuus: Varmistaa, että tuottajat ja kuluttajat käyttävät aina samaa dataformaattia ja estää deserialisointivirheet.
- Skeeman kehitys: Käsittelee skeeman muutokset hallitusti ajan mittaan.
- Vähemmän toisteista koodia: Automaattinen serialisointi ja deserialisointi vähentävät manuaalisen koodin määrää.
- Keskitetty hallinta: Kaikki tapahtumaskeemat löytyvät yhdestä luotettavasta lähteestä.
- Vahva tyypitys: Hyödyntää Avron vahvaa tyypitystä datan laadun ja kehittäjäkokemuksen parantamiseksi.
Pikatarkistus: Schema Registryn tarkoitus
Mikä on Confluent Schema Registryn ensisijainen tehtävä, kun se integroidaan Avroa käyttäviin Spring Boot -Kafka-sovelluksiin?
Kertaus: Saumaton Avro Springin kanssa
Hienoa työtä! Olette oppineet integroimaan Confluent Schema Registryn Spring Boot -Kafka-sovelluksiinne. Tämä tehokas yhdistelmä automatisoi Avro-serialisoinnin ja -deserialisoinnin, mikä tekee tapahtumapohjaisista mikropalveluista luotettavampia ja helpommin ylläpidettäviä.
- Käsittelimme Schema Registryn roolia ja toimintaa.
- Opitte määrittämään Spring Bootin Avroa ja Schema Registryä varten.
- Tutustuimme tuottaja- ja kuluttajaesimerkkeihin Avro-olioiden saumattomasta käsittelystä.
- Tarkastelimme lyhyesti skeeman kehityksen ja datan yhteensopivuuden hyötyjä.
Schema Registryä hyödyntämällä varmistatte, että datasopimuksia noudatetaan aina, vaikka sovellukset kehittyvät.
Opi Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka) tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Spring Bootin ja Schema Registryn integrointi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolun 3 oppituntia, myös oppitunnin “Spring Bootin ja Schema Registryn integrointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Spring Bootin ja Schema Registryn integrointi”?
Integroikaa Confluent Schema Registry Spring Boot Kafka -sovelluksiin, jotta Avro-serialisointi ja -deserialisointi voidaan käsitellä automaattisesti. Harjoittelet Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Spring Bootin ja Schema Registryn integrointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunnilla?
Kyllä. Jokainen Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Skeemojen hallinnan merkitys
- Avro skeemojen määrittelyyn
- Spring Bootin ja Schema Registryn integrointi
- Skeeman kehitys ja yhteensopivuustilat