
1. Partition
1.1. Can be replicated to several Brokers
1.2. Can be hosted on different servers
1.3. Append-only commit log
1.4. Consumed by one Consumer
1.5. Number of partitions never decreased
2. Topic
2.1. Contain several Partitions
2.2. Retention
2.2.1. Period of time
2.2.2. Size in bytes
3. Producer
3.1. Create new messages
3.2. Assign partition to a message
3.2.1. Evenly by default
3.2.2. Using Partitioner
3.2.2.1. Message key hash
3.2.2.2. Custom logic
3.3. Send mode
3.3.1. Fire-and-forget
3.3.2. Synchronous send
3.3.3. Asynchronous send
3.4. acks
3.4.1. acks=0
3.4.2. acks=1
3.4.3. acks=all
3.5. properties
3.5.1. bootstrap.servers
3.5.2. key.serializer
3.5.3. value.serializer
3.5.4. client.id
3.5.5. buffer.memory
3.5.6. block.on.buffer.full
3.5.7. compression.type
3.5.8. retries
3.5.9. retry.backoff.ms
3.5.10. batch.size
3.5.11. linger.ms
3.5.12. max.in.flight.requests.per.connection
3.5.13. timeout.ms, request.timeout.ms, and metadata.fetch.timeout.ms
3.5.14. max.block.ms
3.5.15. max.request.size
3.5.16. receive.buffer.bytes and send.buffer.bytes
3.6. multi-threaded
4. Consumer Group
4.1. Consumes a Topic
4.2. Contains one or more Consumers
5. Cluster
5.1. Set of Brokers
5.2. Cluster Controller
5.2.1. Assign Partitions to Brokers
5.2.2. Monitoring
6. Schema
6.1. Avro
6.2. JSON
6.3. XML
7. Message
7.1. Messages are categorized into Topics
7.2. Message batches (performance)
7.3. Ordered within Partition
7.4. No ordering guarantee within Topic
7.5. Offset
7.5.1. Continually increasing integer value
7.5.2. Unique per Partition
8. Consumer
8.1. Read messages
8.2. Read from one or more Topics
8.3. Read messages in order within Partition
8.4. Consume messages from one or more Partitions
8.5. Partition ownership
8.6. Single consume per thread
8.7. auto commit
8.7.1. commit interval
8.7.2. auto.commit.interval.ms
8.8. Partition assignment
8.8.1. Range (default)
8.8.2. RoundRobin
8.8.3. Sticky
8.8.4. Cooperative Sticky
8.8.5. PartitionAssignor class
8.9. Consumer without a group
9. Broker
9.1. Single Kafka server
9.2. Assigns Offsets to Messages
9.3. Replication
9.3.1. Partition Leader
9.3.2. Partition Follower