Use observer to smoothly introduce a new member to the cluster.
Use witness to reduce election time and improve availability.
All writes are priority-based since we usually want the latency of front-end request as low as possible at the cost of a slow back-end snapshotting/compaction.
When the system is under heavy load, the front-end operation will be given higher priority via a feedback-based controller.