  There exists a plethora of consensus protocols in literature. The reason is
that there is no one-size-fits-all solution, since every protocol is unique and
its performance is directly tied to the deployment settings and workload
configurations. Some protocols are well suited for geographical scale
environments, e.g., leaderless, while others provide high performance under
workloads with high contention, e.g., single leader-based. Thus, existing
protocols seldom adapt to changing workload conditions. To overcome this
limitation, we propose Spectrum, a consensus framework that is able to switch
consensus protocols at run-time, to enable a dynamic reaction to changes in the
workload characteristics and deployment scenarios. With this framework, we
provide transparent instantiation of various consensus protocols, and a
completely asynchronous switching mechanism with zero downtime. We assess the
effectiveness of Spectrum via an extensive experimental evaluation, which shows
that Spectrum is able to limit the increase of the user perceived latency when
switching among consensus protocols.
