Module 7: Messaging Flashcards

1
Q

Wat is asynchroniteit?

A

Asynchroniteit of asynchroon wil zeggen dat berichten worden gestuurd zonder te wachten op reactie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Waarom asynchronous messaging gebruiken?

A
  • loose coupling
  • schaalbaarheid
  • responsiviteit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wat is het Fire & Forget model?

A

Met deze pattern stuurt de Sender berichten naar de queue van de message broker, die op hun beurt door de receiver worden opgehaald. Hiervan is geen terugkoppeling naar de Sender; deze weet alleen van de broker of er iets verstuurd is.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wat is het Request / Reply model?

A

Het Request / Reply pattern heeft twee queues; een voor het sturen van requests en een voor het sturen van replies. Op deze manier is er terugkoppeling naar de requester over het verzonden bericht.

Daarnaast is het ook mogelijk dat een bericht als invalide wordt beschouwd, wanneer er iets fout gaat, deze naar een eigen queue te sturen, zodat er foutafhandeling kan plaatsvinden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wat is het Publish / Subscribe model?

A

De Publisher zet een bericht op een Topic waar meerdere onderdelen belang bij kunnen hebben, zoals hieronder bij bijvoorbeeld een adreswijziging. Meerdere Subscribers kunnen luisteren naar een bepaald topic waarop het bericht binnenkomt, waardoor het zich als een soort event gedraagt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

In welke categorieën zijn message/bericht typen te verdelen?

A
  • Command: Een actie die uitgevoerd dient te worden (met eventueel enkele argumenten).
  • Document: Data die ontvangen dient te worden en hierop te acteren.
  • Event: Er gebeurde iets waarnaar geluisterd kan worden.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat zijn twee type bericht/message inhoud?

A
  • By Reference

- By Value

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat is data by reference?

A

Data by reference houd in dat het bericht die de ontvanger krijgt alleen een referentie (identifier) bevat, die de ontvanger dan zelf moet ophalen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wat is het voordeel van data by reference?

A

Het bericht is compacter en kleiner omdat het niet alle data bevat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat is het nadeel van data by reference?

A
  • Het ontvangende systeem moet de data zelf ophalen

- De data die opgehaald moet wordt kan inmiddels verouderd zijn

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wat is data by value?

A

Data by value zijn messages/berichten die de volledige data als inhoud hebben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wat is het voordeel van data by value?

A

Dit heeft als voordeel dat altijd de actuele data gebruikt wordt die hiervoor bedoeld is. Ook verhoogd dit de leesbaarheid en de navolgbaarheid.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wat is het nadeel van data by value?

A

Een groot nadeel is dat de upgradability minder is; wanneer er een nieuw veld bij komt, moeten er meer aanpassingen plaatsvinden, omdat er meer systemen de juiste berichten moeten kunnen verzenden of ontvangen.

Daarnaast is het bericht groter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wat is JMS?

A

Java Message Service (JMS) is een asynchrone messaging service specificatie die een API definieert gebaseerd op Loose Coupling en Guaranteed Delivery.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hoe werkt een JMS?

A

Er wordt een bericht gemaakt door de Producer die naar de JMS provider wordt gestuurd. Dit kan op een Queue of een Topic zijn, afhankelijk van het gebruikte pattern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Bij welk model hoort een Queue?

A

Fire & Forget en Request / Reply

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Bij welk model hoort een topic?

A

Publisher / Subscriber

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Kan de Producer zowel synchroon als asynchroon zijn?

A

Nee. De producer is altijd synchroon. Dit wil zeggen dat het bericht altijd verstuurd moet zijn, maar nog niet verwerkt hoeft te worden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Kan de Consumer zowel synchroon als asynchroon zijn?

A

Ja.

Vaak is het laatstgenoemde het meest verstandig, omdat je jouw applicatie meestal niet wil laten wachten tot er een bericht komt. Wanneer er nooit antwoord komt, blijft de thread die het bericht wil ontvangen bezet. Een oplossing hiervoor zou zijn om een tijdslimiet in te stellen op het wachten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Hoe ziet de JMS specificatie er uit?

A

De ConnectionFactory bestaat om een Connection op te zetten, die op zijn beurt Sessions kan maken. Binnen een Session wordt het beheer over de communicatie op zich genomen. Deze kan een Message, Producer en Consumer genereren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Wat is een JMS broker?

A

Tussen de producer en consumer bevindt zich een broker – een applicatieserver – die berichten van producenten ontvangt en berichten naar consumenten stuurt.

22
Q

Waar bestaat een JMS message uit en welke zijn optioneel?

A

headers, properties en een body, waarvan de laatste twee optioneel zijn.

23
Q

Welke JMS headers bestaan er?

A
JMSDestination
JMSDeliveryMode
JMSExpiration
JMSPriority
JMSMessageID
JMSTimestamp
JMSCorrelationID
JMSReplyTo
JMSType
JMSRedelivered
24
Q

Wat zijn properties in een JMS message/bericht?

A

Properties staan de gebruiker toe om extra name/value pairs aan het bericht mee te kunnen geven. Op deze manier kan er extra data meegegeven worden die relevant kan zijn voor het bericht.

25
Q

Welke JMS bodies zijn er?

A
TextMessage
MapMessage
BytesMessage 
StreamMessage
ObjectMessage
26
Q

Bij welk type message kan geen properties meegegeven worden?

A

BytesMessage

27
Q

Wat is de JMS feature (Non-)Durable Subscription?

A

Het wel of niet voortzetten van de subscription nadat de applicatie is beëindigd. Wanneer een subscriber durable is, maar de applicatie op dat moment is gesloten, zal er gecached worden totdat de applicatie weer is gestart.

28
Q

Wat is de JMS feature (Non-)Persistent Delivery?

A

Het wel of niet opslaan van de te verzenden berichten, zodat deze berichten bewaard blijven als de broker op dat moment niet beschikbaar is.

29
Q

Wat is de JMS feature Message Selectors?

A

Hiermee kunnen de te ontvangen berichten door de Consumer worden gefilterd.

30
Q

Wat is Message Correlation?

A

Message Correlation helpt je bij het vinden van een antwoord op een bericht dat je verstuurd hebt. Hiervoor wordt gebruik gemaakt van een Correlation ID die hiervoor wordt vastgehouden, zodat het systeem weet met welke Message ID het bericht verzonden was. Hiermee kan het antwoord teruggevonden worden. Het Correlation ID is dus niets meer dan de Identifier die bij de aanvraag is meegestuurd, in het antwoord bericht.

31
Q

Wat is een Dead Letter Queue?

A

Een Dead Letter Queue is een Queue waar berichten in terecht komen wanneer het afleveren fout is gegaan. Dit mechanisme maakt het mogelijk om niet-bezorgde berichten te beheren.

32
Q

Wat is een Redelivery Policy?

A

De Redelivery Policy van de opgezette verbinding geeft aan wat er moet gebeuren wanneer er iets fout gaat. Hierin staat bijvoorbeeld dat een bericht na vijf foutieve pogingen moet worden verplaatst naar de DLQ, zodat deze berichten niet verloren gaan.

33
Q

Wanneer weet de broker wanneer een bericht naar de DLQ moet?

A

Wanneer het maximale aantal Redeliver pogingen is bereikt, krijgt het bericht een zogeheten Poison Ack, zodat de broker weet dat dit bericht naar de DLQ gestuurd moet worden.

34
Q

Hoe ziet een Kafka record er uit?

A
Topic: String
Topic: Partition
Timestamp: Long
Key: K
Value: V
Headers (String -> byte[])
35
Q

Waarom is het niet handig om JSON of XML berichten te sturen naar Kafka? Wat is een betere optie?

A

Kafka systemen hebben vaak veel data om te verwerken. Om deze reden is het ook niet handig om de berichten als JSON of XML te versturen, aangezien dit nog relatief grote berichten geeft. Een betere aanpak is om de berichten binair te maken. Hiervoor wordt bij Kafka veelal Protocol Buffer (ook wel Protobuf) of Avro gebruikt.

36
Q

Voor welke toepassingen kan Kafka nuttig zijn?

A
  • Messaging: Vooral bij veel data performt Kafka vaak beter dan JMS implementaties.
  • Website activity tracking: Het bijhouden van veel gebruikersdata, zoals waar ze klikken en scrollen, omdat Kafka veel berichten tegelijk kan verwerken.
  • Metrics: Metrieken zijn vaak ook in veel data tegelijk die je op één plek wil hebben. Een keer een bericht verliezen is ook niet per se een ramp.
  • Log aggregation: De logging van bepaalde systemen naar één centrale plek sturen met Kafka.
  • Stream processing: Kafka kan een stream ontvangen en deze opschonen, om vervolgens weer te zenden.
  • Event sourcing: Het opslaan van alle wijzigingen van events, in plaats van records op slaan. Is ook vaak veel data tegelijk.
  • Commit log: Een logfile die replicaties tussen nodes kan regelen.
37
Q

Wat is het verschil tussen een message queue en een message topic?

A

Een queue kan slechts één consumer hebben, terwijl een topic meerdere consumers kan hebben.

38
Q

Wat is XA?

A

XA (Extended Architecture) is een standaard voor toegang tot meerdere back-end datastores binnen dezelfde globale transactie.

De specificatie regelt hoe een XA-transactiemanager een database kan vertellen welk werk er aan de hand is als onderdeel van welke transactie, en hoe het tweefasige commit (2PC)-protocol aan het einde van elke transactie moet worden uitgevoerd.

39
Q

Wat is het two-phased commit?

A

De vastlegging in twee fasen is een protocol dat ervoor zorgt dat een vastlegging van een database wordt geïmplementeerd in de situatie waarin een vastleggingsbewerking in twee afzonderlijke delen moet worden opgesplitst.

40
Q

Wat is een Kafka Partitie?

A

Partities zijn het belangrijkste concurrency mechanisme in Kafka. Een topic wordt opgedeeld in 1 of meerdere partities, waardoor producenten- en consumentenbelastingen kunnen worden geschaald.

41
Q

Wat is Protobuf?

A

Protocol Buffers (Protobuf) is een gratis en open source platformonafhankelijke bibliotheek die wordt gebruikt om gestructureerde gegevens te serialiseren. Het is nuttig bij het ontwikkelen van programma’s om via een netwerk met elkaar te communiceren of om gegevens op te slaan.

42
Q

Wat is het verschil tussen required en optional velden in Protobuf?

A
  • required: een goed opgemaakt bericht moet precies één van deze velden bevatten.
  • optional: een goed gevormd bericht kan nul of één van dit veld hebben (maar niet meer dan één).
43
Q

Waarom is Kafka veel sneller/efficienter?

A
  • Kafka maakt gebruikt van een binary message formaat zodat er geen gegevensverwerking of wijziging nodig is
  • De consumers zijn verantwoordelijk voor het bijhouden van de offset
  • De partities zijn immutable, waardoor het niet nodig is om records te verwijderen.
44
Q

Welke JMS session acknowledgments modes zijn er? en wat betekenen ze?

A

AUTO_ACKNOWLEDGE
The session automatically acknowledges a client’s receipt of a message either when the session has successfully returned from a call to receive or when the message listener the session has called to process the message successfully returns.

CLIENT_ACKNOWLEDGE
The client acknowledges a consumed message by calling the message’s acknowledge method.

DUPS_OK_ACKNOWLEDGE
Instructs the session to lazily acknowledge the delivery of messages.

SESSION_TRANSACTED
This value may be passed as the argument to the method createSession(int sessionMode) on the Connection object to specify that the session should use a local transaction.

45
Q

Wat is Topic Replication (Kafka)

A

Kafka enables a feature of replication to secure data loss even when a broker fails down. To do so, a replication factor is created for the topics contained in any particular broker. A replication factor is the number of copies of data over multiple brokers. The replication factor value should be greater than 1 always (between 2 or 3). This helps to store a replica of the data in another broker from where the user can access it.

46
Q

Met Kafka Topic Replication, welke broker bedient het verzoek van de client?

A

De leader.

Deze wordt gekozen door Zookeeper.

47
Q

Hoe behaald Kafka load balancing?

A

In Kafka, load balancing is done when the producer writes data to the Kafka topic without specifying any message key, Kafka distributes little-little bit data to each partition using round-robin.

48
Q

Wat gebeurt er als het aantal consumers groter is dan het aantal partities? (Kafka)

A

Sommige consumers zullen zich verkeren in een inactieve staat.

49
Q

Wat gebeurt er als het aantal partities groter is dan het aantal consumers? (Kafka)

A

De partitie wordt toegewezen aan een al-actieve consumer.

50
Q

Wat is een consumer group?

A

Een consumer group is een groep van meerdere consumers. Elke in een groep aanwezige consumer leest data rechtstreeks uit de exclusieve partities.

51
Q

Waar is Kafka handig voor?

A

Vanwege de hoge doorvoer wordt het vaak gebruikt voor realtime gegevensstreaming.

  • Metriek
  • Website Activity Tracking
  • Event Sourcing
52
Q

Wat betekent ‘transacted’ bij het maken van een Session van een Connection-object? (JMS)

A

Transacted betekent dat berichten die tijdens de levensduur van de Sessie naar queues worden verzonden, niet worden afgeleverd bij de ontvangers totdat de commit-methode wordt aangeroepen tijdens de Sessie. Evenzo zal het aanroepen van de rollback-methode op de Sessie alle berichten verwijderen die tijdens de afgehandelde sessie zijn verzonden