Sorry if this is too much text, but I feel like I have a decent sense about this, since I've been interviewing recently. Of course, we all live in bubbles, and there may be some tech bubbles extremely different from mine.
Your tech stack in a distributed system will often be diverse and wide-ranging. In my opinion, no specific combination of tools is very important for hireability, though commonly recurring characters will certainly help your resume.
I write or work on lots of small services, mostly in Java, some Scala, occasionally Go or Python. The JVM is probably the most popular programming platform for this domain but some companies do without it entirely (Go, Python, Node.js are all somewhat popular).
Most services run in Docker containers on AWS. I feel like almost everyone is in the cloud these days.
There are lots of REST APIs, so you'll want a good handle on HTTP. In my work, even more than HTTP, I've dealt with streaming/realtime data coming over Apache Kafka or AWS Kinesis or AWS SQS. Lots of people use RabbitMQ, but I never have.
And I interface with lots of different data stores - Postgres, S3, Dynamodb, Elasticsearch, Cassandra, Redis. And Zookeeper, more for coordination than storage. Zookeeper is fun, but very niche.
In terms of building a resume to get hired in this domain, these are some things you want:
- Be able to work in a few languages and with several data stores. Be able to talk about which kind of DB is appropriate for what use.
- Demonstrate proficiency in concurrent programming and asynchrony via multithreading/futures/promises/channels or whatever the relevant constructs on your platform of choice are.
- Have used some kind of streaming solution or message queue (kafka is neat and widely used, if don't already have one in mind)
- Have experience with provisioning and orchestration on a cloud platform (AWS, GCP, Azure,...)
- Be able to talk about tools and techniques for monitoring, alerting, and tracing in systems where a request or a stream element must traverse many services.
- Be able to talk about typical distributed-systems challenges at a conceptual level:
* Why and how to partition your data, both in a stream and at rest
* How to avoid or resolve consistency issues, when and how to trade consistency for availability, coordinations strategies, CRDTs
* At-least-once processing, at-most-once, exactly-once, idempotency, why you would want each - how and when you can achieve each.
As a side note, I feel like, once you've built a decent distributed system or application, it's easy to make it look good on a resume. Either it's a high-throughput system and you can say you processed X thousands of requests per second with no downtime for a year, or else it's low throughput and you can double down on the fault-tolerance bit "even when we deliberately crashed half of the servers, the service remained available and end-to-end latency was only reduced by X amount". Of course, you need measure some stuff in order to have numbers to brag about. But hopefully you're collecting those metrics anyway.