I'm not an expert on this Quorum world. But as i've read, the main difference between the three mechanisms you mentioned is the % of BFT (Byzantinism Fault Tolerance).
BFT is defined as:
Byzantine fault tolerance (BFT) is the dependability of a fault-tolerant computer system, particularly distributed computing systems, where components may fail and there is imperfect information on whether a component is failed. In a "Byzantine failure", a component such as a server can inconsistently appear both failed and functioning to failure-detection systems, presenting different symptoms to different observers.
It is difficult for the other components to declare it failed and shut
it out of the network, because they need to first reach a consensus
regarding which component is failed in the first place. The term is
derived from the Byzantine Generals' Problem,1 where actors must
agree on a concerted strategy to avoid catastrophic system failure,
but some of the actors are unreliable. Byzantine fault tolerance has
been also referred to with the phrases interactive consistency or
source congruency, error avalanche, Byzantine agreement problem,
Byzantine generals problem, and Byzantine failure.[2]
- Raft: No, Raft's initial description (by Diego Ongaro and John Ousterhout) is not byzantine fault-tolerant.
Imagine a node that votes twice in a given term, or votes for another node that has a log which is not up-to-date like its own and that node becomes leader. Such behaviour could cause split-brains (case where to two nodes believing themselves to be leader) or inconsistencies in the log.
Scenarios like permissionated blockchains where nodes are holded by
different companies, it's important to have some BFT properties in
order to be sure that everyone is beheaving correctly. And that's why
Istanbul was born.
- Istanbul
- Implements control over some types of byzantine behaviours on nodes.
Being F: # of Byzantine nodes on the network.
Istanbul is based on a commitment consensus where each node waits until 2F + 1 commits
from different validators with the same result before inserting the block into the blockchain.
You have a very good slides explaining how Istanbul works here: https://es.slideshare.net/YuTeLin1/istanbul-bft
Can't say anything about QuorumChain because i've not read almost anything of it.
Hope it helps!