应用系统五层物理架构及服务器部署简介

做了多年的系统运维,也总结了不少技术,向来都是遇到什么问题就写什么样的文档,虽是系统方面的,如今看来却是一点都不够系统,本人也自觉得有点惭愧。因此,今天要写的第一篇综合性文档,就是很“综合”的——关于应用系统的物理架构。

本人自认为应用系统物理架构可分为五层,文章将简单介绍每层架构中往往会部署的服务器。

将应用系统进行物理分层,并不是为了好看,而是为了安全——每一层必须制定合适的访问规则。

第五层:网络服务层

网络代理和负载均衡往往被绑定在一起,他们一般都处于最外层,直接面向访问终端。

前端代理

前端代理最常用的是NGINX,与APACHE比较,它具有高并发、高性能、省资源等优点,但动态请求是其缺陷,因此常常把这活儿交给APACHE去做。

负载均衡

常用的软件负载均衡有LVS(TCP四层)、Nginx(HTTP七层)、HAproxy(四层或七层)。

以上这些软件常常与KEEPALIVED、HEARTBEAT搭配,实现高可用。

CDN服务器

CDN服务器的全称是内容分发网络服务器,用于解决网络层的堵塞问题,以提高网站响应的时间和速度。

各IDC服务商都有提供专业的CDN服务器,而且市面上也有很多免费产品,至于各产品的优劣,本文不做比较。

当然,也可以自己部署CDN服务器,喜欢折腾的朋友可以尝试用用Fikker、Squid。

部署CDN后,有可能被搜索引擎认为是抄袭站点,因此必须添加Robots.txt做合理的规则。

第四层:应用展示层

应用展示层是各种数据的承载点,应用类型大体分如下几类,因此服务器搭建方式及应用运行平台也有区别:

APP服务器

CS架构应用,分PC端和移动端两种平台,客户端不可互用。

并不是所有APP都必须开发服务器端版的APP,它们也可以连接WEB版,甚至没有服务器端。

WEB服务器

BS架构应用,有PC端和移动端两种展示形式,由终端设备自动或手动选择显示模式。

常见的Web平台应用有Jdk、Apache、Tomcat,它们都是跨操作系统的,不过Windows还有一个专用的Web平台IIS。

FTP服务器

文件服务类应用,比如上传、下载。

常用来搭建FTP服务器的软件有Serv-U、vsftp、FileZilla Server等。

网关服务器

网关起到聚合、分发的作用,我们所要说的是服务网关服务器,比如接口网关,游戏网关等,它们的服务对象应用,而不是“用户”。

第三层:应用服务层

应用服务层主要工作于应用与消息、应用与应用、应用与数据之间,本身无法独自完成一套完整的任务。

消息服务器

用于接受、传递、转发消息,最常用的是Apache的分布式消息集群kafka,自带集群(Zookeeper),很容易搭建。

接口服务器

总而言之,接口用于应用与应用、应用与操作系统之间相互传递数据……

接口大体可分四大类:RPC、SQL、文件传输和信息交付,不过这是开发层面的东西,运维只需要根据接口类型部署相应的环境即可。

第二层:应用数据层

数据库服务器

默认的数据库都是指关系型数据库,即事务型数据库。

常见的数据库有MySQL、Oracle、SQL Server等,微软最近出了Linux版SQL Server,不过我没尝这鲜。

NoSQL数据库服务器

NoSQL一般指除关系型数据库以外的数据,按存储形式分:一种是内存型,一种是文件型。

早期的NoSQL只用于缓存、概念验证或者轻小型应用,现在已然应用到关键任务应用程序,甚至成为所有应用开发的基础。

常见的NoSQL数据库软件有Redis、MangoDB、HBase等,请根据实际需求选择。

重要的事情放在最后说:NoSQL不是“No SQL”,而是“Not Only SQL”,举例:有一种强大的查询语言叫做N1QL,它在SQL的基础上扩展了JSON的特性……

缓存服务器

用完就删无需长期保留,需要速度快,满足这两个指标的话,都要考虑搭建缓存服务器,比如MQ、SESSION等。

缓存服务器常常用Redis或Memcached搭建,也有存数据库的(不讲)。

附件服务器

用于存储由应用上传的各种文件,按类型可分为图片服务器、文件服务器等 。

尤其当多个项目都要用到相同的附件时,搭建统一的附件服务器就会非常省资源。

多媒体服务器

用于处理图片、音频、视频等多媒体数据。

事实上,我也没有搭建过多媒体服务器,所以不敢多说。

第一层:基础服务层

DNS服务器

全称是域名解析服务器,负责网内网外的域名解析,分主DNS服务器、辅助DNS服务器和缓存DNS服务器。

Linux下一般通过BIND(/etc/named.conf)搭建DNS服务器,Windows下安装角色“DNS 服务器”即可。

时钟服务器

目的是同步具有统一任务的服务器的时间,尤其是ELK、MQ等,对时间的标准要求很严格。

服务器(Linux)安装ntp并配置好(/etc/ntp.conf),客户端定时同步该服务器即可。

说个小笑话“服务器A发送消息的时间是今天、服务器B接收消息的时间是昨天”

备份服务器

视应用系统规模搭建相应的备份服务器群,比如数据库备份服务器、代码备份服务器、文件备份服务器……

市面上不乏各种备份软件,但我觉得最实用的还是自己写脚本,安全又经济(备份专用账号及最小权限)。

如果觉得数据不重要,可以免谈。

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

感谢您的支持与帮助

支付宝扫一扫打赏

微信扫一扫打赏