Is Structured Streaming real-time stream processing engine?
TL;DR No. Or yes. Depends on definition of "real-time stream processing engine".
Up to the 2.3.0-SNAPSHOT (current master), Structured Streaming uses micro-batches and nothing seems to suggest it's going to be different in the versions to come.
Deep Dive Into Structured Streaming's Streaming Query Engine
StreamExecution (the execution environment for a streaming query) starts a separate thread of execution that checks whether new records are available.
Once started, the microBatchThread (which is a regular Java's java.lang.Thread object) executes runBatches that starts execution every trigger interval.
Going through the code reveals the internal execution engine for streaming queries that does batches every trigger.
My understanding is that nothing has really changed as far as micro-batching is concerned. It was like this in Spark Streaming and is used in Structured Streaming too.
Shameless plug: You may want to explore the subject in more details reading my gitbook about Structured Streaming which I'm writing exactly for the purpose to understand the very low-level details. Comments welcome.