背景
在交易所工作的这段日子,学习交易系统的时候,总是强调主备服务器,什么是主备服务器?为什么要做主备服务器?
单点故障
单点故障是指系统中每个组件或者某一个节点出现问题无法正常提供服务了,可能会导致整个系统瘫痪。系统设计需要时刻考虑单点故障问题,实现系统的可靠性和可用性。系统设计过程中避免单点故障的核心思想就是【冗余】。
构建冗余的系统架构
构建冗余的系统架构,需要从硬件和软件两个方面考虑
硬件冗余
服务器冗余:部署多台服务器,形成主备服务器。
在交易所中:实现一个业务的服务器会设置2~3台服务器,每台服务器都正常运行自己的业务逻辑,且每台服务器的运行结果都一样,保证了只要有一个服务器还在工作都不会影响整个系统。
在大型的互联网公司中,部署的服务器集群可能更复杂,因为这些服务器在应用层需要处理客户端的请求,需要应对高并发的情况,那么这些服务器的处理和交易的不同是,交易所每台服务器上的数据是一致的,不论运行哪一台服务器都能得到相同的结果,而大型互联网公司的服务器数据是水平切片的,需要将请求分发到不同的服务器,这还涉及负载均衡。
存储冗余
建立多个数据库副本
网络冗余
创建双网或多网,在每个网络中都发送数据,防止一条网络通路断开,可以立刻换另一个网络。在交易系统中,也通过双网设计的方法保证数据不丢失。
软件冗余
应用冗余
在服务器集群中,每个单体服务器上运行多个应用实例,防止单个进程崩溃导致这个服务器崩溃。
数据冗余
复制数据,数据库主从复制,防止单个数据宕机导致整个数据的丢失。
灾备策略
构建多地多中心的系统架构,防止自然灾害等意外情况发生导致整个系统瘫痪。
包括异地多活、异地数据备份等