Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

概念

高可用和高可靠常常分不清,高可用是指使用一些技术手段让整个系统能够在规定时间段内提供连续不间断的服务。

背景

​ 在互联网发展初期,企业规模不大,业务也不大,会使用单体架构。但是单体架构存在很多的问题,例如当某个模块需要升级的时候,需要将整个系统项目重新打包部署、一个局部问题可能会导致全局系统的不稳定,运维成本提高、系统之间的耦合性很大,不利于业务扩展等等。

​ 我在交易系统中已经工作了9个月,对于交易系统最大的感受是:高可用、高可靠、低时延的性能要求。交易系统已经平稳运行***天醒目的显示在大显示屏上。

交易系统是如何做到高可用的呢

​ 交易系统极度追求稳定性,一旦有一些意外发生就是重大生产事故,因为交易是以“时间优先、价格优先”原则去交易的,所以交易系统也高度重视低时延性能。

​ 对于稳定性的严苛要求在另一方面也意味着系统架构较为简单,这是为了避免服务器集群之间的数据同步操作让时延增加。交易系统的高可用主要是通过服务冗余来实现的。

服务冗余

服务冗余可以从多方面去实现,体现在整个大的系统架构中、服务器集群中、单个服务器中等

1. 两地三中心的系统架构

两地三中心的系统架构,将整个系统服务部署在不同的地理位置,一般情况下同城会部署两个,跨省会部署一个,主要是防止一个中心的服务瘫痪能够快速切换到另一个的地区的服务系统,确保服务能够不间断运行。大大降低了自然灾害和其他风险因素的影响。

2. 单功能的服务器集群

举一个交易系统中的局部例子,交易系统在交易时间段首先会收到大量的买卖报单,然后对报单进行成交判定,整个数据的流程是:收到委托单-》按照时间排序-》根据买卖交易规则去撮合委托订单。对于这三个数据流,分别设置三种服务器,分别是委托服务器、排队服务器、撮合服务器,每种服务器都设置2~3台,每种服务器都在同时运行相同的进程旨在提供相同的服务,且服务器集群中不存在主备分类,主要是避免主备数据同步操作增加了时延,那么即使当一个集群中某单个服务器宕机了,也不会影响系统的正常运行。

3.单个服务器多个运行实例

即使存在服务器集群共同完成某项功能,也要增加单个服务器的鲁棒性,尽可能将其宕机的概率降低。主要是通过在单个服务器中运行多个实例去实现的,当一个实例挂了另一个实例还能工作,那么这台服务器依然还能工作。

评论