在企业实践中,开发或引进一个IT系统时,架构设计工作是后续系统开发、部署的前提,因此无论是作为企业甲方项目经理还是乙方实施经理,都需要对系统的架构进行合理设计并评估架构的合理性。没有合理的架构设计,可以说就是没有理清系统的逻辑层次,没有考虑清楚系统的核心要素,会为系统后续的开发、部署和运行带来极大隐患和不确定性。在很多企业中,缺少架构设计或者架构未经专家评审,后续的所有流程都无法推进,连最基础的开发资源有时都不予分配。#系统架构# #网络安全# #Hadoop# #前后端分离#
解读系统部署架构图
近期,因工作需要,接触了上图所示的一个系统架构,下面从架构层次、网络安全、系统可用性、性能加速等几个方面解读一下。
架构层次如何合理地划分系统架构层次和区域可以说是架构设计时要重点考虑的事项。从上图看,该架构中至少包括三个区域,前面客户区,中间是业务公共区域,后面生产区。其中:客户区域主要指客户的操作终端,公共区主要是前端服务器,生产区是后端服务器和数据存储设备。
这个层次看起来还是比较清晰的,那么这个层次是依据什么画出来的呢?
网络隔离从系统边界的设置来看,上面这个架构大概率是基于网络安全域设计出来的。
在规模企业中,出于内部网络安全管理需要,往往会根据业务敏感性的不同划分多个网络安全域,如办公网、生产网、数据网、DMZ区、公共区等,不同安全域之间通过防火墙进行策略控制,确保跨安全域的有限访问。
防火墙示意
这个应用系统是面向企业所有用户的,因此其将系统的Web前端服务器放在公共区,后端服务器和数据存储放在生产区,在前端服务器和后端服务器之间指定网络数据交互的IP和端口,并在边界防火墙上增加特定的安全策略。后端服务器和数据存储之间由于频繁的数据交互,共同放在生产区,保障数据处理的效率。
通过这种架构设计,既保障了应用系统的全员可访问,也在保障了企业网络安全,是目前企业中常用的一种前后端分离架构设计策略。
可用性对于一些业务等级较高的系统,需要保持较强的业务连续性,这就要求应用系统在架构设计时充分考虑业务可用性,即当服务器宕机或者某个节点服务不可用的时候,业务不中断,仍可正常对外提供服务。
通用的做法是,前端服务器和后端服务器都已多节点方式部署,避免单点故障,并在用户和前端服务器之间、前端服务器和后端服务器之间配置负载均衡设备,如F5、Nginx等。这样,即使是前端服务器或者后端服务器的部分节点不可用了,系统的整体可用性还是有保障的。
负载均衡示意
从图中看,并没有找到负载均衡设备,不知设计者是出于何种考虑,理论上是应该加上的。
有一种可能是其在前端服务器上部署了Nginx等软负载,从而没有显式地画出来,但用户到前端服务器的负载应该还是要的。
对于可用性,设计者的关注点主要是在数据存储上面,后端服务器连接的三种存储资源都是多节点,Oracle是RAC方式部署,Hadoop和ES都是集群方式,从而保障数据可用性。
性能加速从数据存储的角度来看,这个应用系统应该是面向大数据的,对于不同的业务场景采用不同的数据存储、计算资源。
- Oracle是企业常用的关系型数据库,主要用来存储应用系统的业务数据和系统数据,如日志、用户权限信息、业务表等,执行一些与业务逻辑强相关的存储过程。
- Hadoop是大数据集群,应用系统应该是用到了Hive或者Hbase,以存储明细事件、非结构化数据等。还有一种情况是,应用系统通过后端服务器向Hadoop提交分布式计算任务,从而利用Hadoop集群的计算能力。
- ES主要面向全文检索的场景,应用系统中应该是有文本检索、知识库等功能,通过ES来提高文本、知识的检索效率。
这种设计还是比较有想法的,根据业务的不同将数据、计算分拆到不同的资源上,充分发挥不同存储、计算资源的优势,从而实现应用系统整体的加速。
总结系统架构设计是关乎系统是否能够可用、好用的关键环节,不只是系统架构师的工作,项目经理、开发人员、运维人员都要对系统的架构有概念,能够识别出架构种有哪些优点和显著的缺点。
正如一句话所,系统架构是团队不同角色人员沟通的基础。
您对本文解读的架构有哪些看法,欢迎评论区留言交流。
我是会说科技,关注我,一起讨论数据、科技、IT、安全、金融那些琐事。



