Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka) · Oppitunti

Tuottajan asetusten mukauttaminen

Tutustukaa tuottajan erilaisiin asetuksiin, kuten acks-, batch size-, linger.ms- ja retries-asetuksiin, suorituskyvyn ja luotettavuuden optimointia varten.

Oppitunti 3/411 vaihetta

Tuottajan asetusten mukauttaminen 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.

Miksi tuottajan asetuksia mukautetaan?

Kun lähetätte viestejä Kafkaan, oletusasetukset eivät välttämättä aina ole ihanteelliset. Tuottajan määritysten mukauttaminen on tärkeää, jotta voitte optimoida sen tiettyjä tarpeita varten.

Voitte hienosäätää tuottajaa paremman suorituskyvyn, suuremman luotettavuuden tai paremman läpimenon saavuttamiseksi sovelluksen vaatimusten mukaan.

Määrittäminen Spring Bootissa

Spring Bootissa Kafkan tuottajan ominaisuudet määritetään yleensä application.yml- tai .properties-tiedostossa.

Kaikki tuottajaan liittyvät asetukset alkavat yleensä etuliitteellä spring.kafka.producer. Spring Boot käyttää niitä automaattisesti KafkaTemplate-olion määrittämiseen.

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      # Custom configurations go here

Kuittaukset (`acks`)

acks-ominaisuus (kuittaukset) määrittää tuottajan lähettämien viestien säilyvyyden tason. Se määrää, kuinka monen replikan on kuitattava kirjoitus, ennen kuin tuottaja katsoo viestin lähetetyksi onnistuneesti.

  • acks=0: Tuottaja ei odota kuittausta. Nopein vaihtoehto, mutta säilyvyys on heikoin (viestejä voi kadota).
  • acks=1: Tuottaja odottaa johtavan replikaan kuuluvan palvelimen kuittausta kirjoituksesta. Hyvä tasapaino säilyvyyden ja nopeuden välillä.
  • acks=all: Tuottaja odottaa kaikkien synkronoitujen replikoiden kuittausta. Paras säilyvyys, mutta hitain vaihtoehto.

Asetuksen `acks=all` määrittäminen

Kriittisille viesteille, joiden tietojen katoamista ei voida hyväksyä, acks-asetukseksi määritetään yleensä all. Tämä varmistaa, että viesti on replikoitu turvallisesti ennen kuin tuottaja jatkaa.

Muistakaa, että parempi säilyvyys merkitsee usein hieman suurempaa viivettä.

spring:
  kafka:
    producer:
      acks: all # Ensures high durability
      # Other producer configs

Eräkäsittely: `batch.size` ja `linger.ms`

Läpimenon parantamiseksi Kafka-tuottajat eivät lähetä jokaista viestiä erikseen. Sen sijaan ne kokoavat useita viestejä samaan erään.

  • batch.size: Lähetettävään erään kerättävän datan enimmäismäärä tavuina. Oletusarvo on 16 kt.
  • linger.ms: Enimmäisaika millisekunteina, jonka tuottaja odottaa lisäviestien kertymistä erään. Oletusarvo on 0 ms (lähetetään heti).

Nämä kaksi ominaisuutta toimivat yhdessä: erä lähetetään, kun joko batch.size saavutetaan TAI linger.ms umpeutuu.

Eräasetusten optimointi

Asetusten batch.size ja linger.ms muuttaminen voi vaikuttaa merkittävästi suorituskykyyn. Suuremmat erät ja pidemmät odotusajat voivat parantaa läpimenoa, mutta myös kasvattaa hieman yksittäisten viestien viivettä.

Voisitte määrittää ne paremman eräkäsittelyn saavuttamiseksi esimerkiksi seuraavasti:

spring:
  kafka:
    producer:
      batch-size: 32768 # 32 KB (larger batch)
      linger-ms: 50     # Wait up to 50ms (longer wait)
      # Other producer configs

Uudelleenyritykset (`retries`)

Mitä tapahtuu, jos viestin lähetys epäonnistuu tilapäisen verkkohäiriön tai väliaikaisesti käytöstä poissa olevan välittäjän vuoksi?

retries-ominaisuus määrittää, kuinka monta kertaa tuottajan tulee yrittää uudelleen sellaisen viestin lähettämistä, jonka lähetys epäonnistui mahdollisesti korjattavan virheen vuoksi. Tämä parantaa huomattavasti viestien toimituksen luotettavuutta.

Asetuksen `retries` määrittäminen

Kohtuullisen uudelleenyritysmäärän määrittäminen auttaa varmistamaan, että viestit päätyvät lopulta Kafkaan tilapäisistä häiriöistä huolimatta.

Se yhdistetään usein delivery.timeout.ms-asetukseen, joka määrittää kokonaisajan, jonka tuottaja odottaa viestin toimittamista uudelleenyritykset mukaan lukien.

spring:
  kafka:
    producer:
      retries: 5 # Try up to 5 times on failure
      delivery-timeout-ms: 120000 # 2 minutes total timeout
      # Other producer configs

Mukautettu tuottaja käytännössä

Vaikka Spring Boot käsittelee taustalla olevan Kafka-asiakasohjelman määritykset application.yml-tiedoston perusteella, katsotaan, miten nämä ominaisuudet määritetään suoraan Java Kafka -tuottajassa. Tämä auttaa ymmärtämään perusmekanismia.

Tässä esimerkissä Kafka-tuottaja määritetään ja otetaan käyttöön eksplisiittisesti:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;

public class CustomProducerDemo {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        // Custom configurations we discussed
        props.put("acks", "all");
        props.put("batch.size", 32768);
        props.put("linger.ms", 50);
        props.put("retries", 5);

        try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
            producer.send(new ProducerRecord<>("custom-topic", "key1", "Hello from CoddyKit!"));
            producer.send(new ProducerRecord<>("custom-topic", "key2", "Another custom message!"));
            producer.flush(); // Ensure all buffered records are sent
            System.out.println("Messages sent with custom configurations.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Testatkaa tietonne

Olette oppineet useista tärkeistä tuottajan määrityksistä. Testataanpa ymmärrystänne!

Kertaus: tuottajien mukauttaminen

Hienoa työtä! Olette tutustuneet Kafka-tuottajien mukauttamiseen erilaisia tarpeita varten:

  • acks: Hallitsee viestien säilyvyyttä.
  • batch.size ja linger.ms: Optimoivat läpimenoa kokoamalla viestejä eriksi.
  • retries: Parantaa luotettavuutta lähettämällä epäonnistuneet viestit uudelleen.

Ymmärtämällä ja säätämällä näitä ominaisuuksia voitte mukauttaa Spring Boot Kafka -sovelluksenne vastaamaan tiettyjä suorituskyky- ja luotettavuustavoitteita. Seuraavaksi perehdymme Kafka-kuluttajien toteuttamiseen!

Aloita maksutta

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 ”Tuottajan asetusten mukauttaminen” 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 “Tuottajan asetusten mukauttaminen”. 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 ”Tuottajan asetusten mukauttaminen”?

Tutustukaa tuottajan erilaisiin asetuksiin, kuten acks-, batch size-, linger.ms- ja retries-asetuksiin, suorituskyvyn ja luotettavuuden optimointia varten. 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 ”Tuottajan asetusten mukauttaminen”-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

  1. Spring Kafka Starterin integrointi
  2. Viestien lähettäminen KafkaTemplatella
  3. Tuottajan asetusten mukauttaminen
  4. Tuottajan lähetyskutsujen ja kuittausten käsittely
← Takaisin: Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)