The counter in another table used in the article also serializes all writers to the table. Probably better than the max() approach but still serial.

There needs to be serialization happening somewhere, either by writers or readers waiting for their turn.

What Kafka "is" in my view is simply the component that assigns sequential event numbers. So if you publish to Kafka, Kafka takes the same locks...

How to increase throughput is add more shards in a topic.