Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

32.4. 服务器部署

一旦数据中心网络部分完成,下一步就是部署各种服务器,同时服务器的部署必须满足灾备的要求,否则无法实现灾备切换与故障转移。

服务器与交换机连接,按照服务器重要程度或者是否具备故障转移,有两种方案,如具备分布式部署的服务器可能只连接一条网线,有些服务器无法分布式部署,我们是两个网卡分别连接两条网线到两台交换机,同时网卡绑定为一个适配器。

32.4.1. 网站

网站提供新闻,资讯,开户,转帐,活动,报表,在线客服等等功能

图 32.4. 动态页面方案

动态页面方案

上面是动态页面方案,分为SSL服务器,WEB服务器,API接口服务器,Admin服务器。全部具备水平扩展与动态伸缩。下面分别详细说明他们的功能,为什么这样部署。

动态页面服务器

  1. SSL:负责处理用户请求的加密与解密,我们将它与WEB分离,这样能够更好的伸缩扩展,同时提供故障转移功能,我们可以部署很多台这样的服务器。在不同城市,然后通过智能DNS将用户解析到距离用户最近的节点上。

  2. WEB:动态页面服务器

  3. API: Service 服务器,可以通过SOAP, JSON, MQ等等方式访问,WEB任何操作都要请求API服务器完成,WEB服务器不允许直接操作数据库,全交由API处理。API具有运用层防火墙的功能与ACL访问控制列表。

  4. Admin:网站后台

  5. HA:负载均衡软件或设备

与门户网站不同,我们的网站访问量并不大,性能瓶颈基本不存在,更多是考虑高可用。

静态页面以及CDN部门这里就不谈了,非常简单,有兴趣可能到 http://netkiller.github.io/ 找相关资料。

32.4.2. 数据源

在交易过程中出现报盘中断是大忌,我们必须尽一切努力,让交易系统能源源不断的接收价格数据。为此我需要重点考虑数据源的灾备。

图 32.5. 数据源灾备解决方案

数据源灾备解决方案

我们设计了一个DataFeed程序,能够多方接收数据,因为每个数据源提供的产品不同。我们在这里可以合并,筛选,过滤等等。这个应用可以实现水平扩展,我们可以放在2个以上的机房当中。

接下来在交易服务器中,设置多个数据源分别指向Data Feed 1,2~n。与Trader相同机房的DataFeed的优先级总是最高。

32.4.3. 数据库

数据的部署要考虑几个问题,我一直不建议主备方案,而是采用双活方案。所以我们要考虑两个机房或者三个机房他们数据复制问题,性能瓶颈问题,数据安全问题等等

图 32.6. 数据库灾备解决方案

数据库灾备解决方案

上图我的方案中采用了Master-Master双活方案,同时每个Master都会有一个Slave。Master 主要用于主要的业务,Slave主要用户数据分析,报表查询等等非实时,且长时间允许等等查询服务

数据库访问需要经过SLB服务器,为数据库提供负载均衡,故障转移,水平扩展等等功能。

所有的数据操作只能通过API完成,不能直接连接数据库并通过SQL存取,上面已经提到过,这里不再多讲。

[提示]提示
如果是三个以上机房,将采用环形复制,大致原理Master A向Master B复制,Master B向 Master C复制,Master C在向Master A 复制,形成一个环路。

如果数据库查询如果出现瓶颈,增加Slave即可。