李浩
摘要:分布式系统也称为分布式计算,截止2018年,计算机网络技术高速发展,互联网使用人群呈现井喷式的增长,互联网成为广大群体浏览,沟通,业务往来,消费等行为的途径,在这种背景下,分布,异构,集群为基准构成的分布式系统由于在资源共享,高并发,高可用等方面具有巨大的优势以及高扩展性成为了当前互联网应用的主流模式。基于分布式系统架构的软件系统伴随着计算机的发展需求愈加强烈,本文将针对当前分布式系统的架构体系设计解决高并发,高可用,高扩展性的分布式系统通用体系设计方案。
关键词:分布式系统;高可用;性能调优;高并发;高扩展性
一、当前互联网环境的分布式系统需求
通过软件体系架构方面的改进与设计提升分布式系统的高扩展性,高性能,高可用,高并发,是分布式系统设计的核心思想,也是本文所阐述的核心思想。一个可行的思路是采用SOA架构模式,拆分系统的不同模塊,并将不同的模块拆分为表现层系统和服务层系统,使用相应的Java中间件进行不同系统之间的依赖关系和调用,必要时不同的系统部署集群架构,基于负载均衡实现系统的高可用,高并发的体系模式。最后通过有效的手段保证不同系统之间的安全耦合。
基于以上思路,在分析当前互联网电子商务系统面对高并发访问的应用场景的基础上,本文针对系统架构的演变,分布式系统的作用以及客观必要性,同时如何实现高可用,高并发的应用体系架构进行相应的深入研究,从而提升互联网系统针对高用户群体对象,实现高可用,支撑高并发,运营后实现高扩展性,低成本开发与维护的设计目的。
(一):提出了一个分布式系统的实现方案——SOA架构模式。给出了形式化,可具化的架构体系模型。基于面向服务的体系架构,粗粒度基于具体的业务模块拆分为独立的应用系统,细粒度模块拆分为表现层应用系统和表现层应用系统。基于Dubbo以及Zookeeper实现应用系统之间的注册中心和安全调用。
(二):结合具体的业务逻辑设计相应的性能调优方案,采用Redis数据库作为整个系统架构当中的应用缓存设计实现。以电子商务系统为案例,对访问频繁的资源以缓存实现,加快整个应用体系的响应速度。扩展性方面亦可搭建Redis高可用集群来实现。
(三):对分布式应用系统的搜索引擎优化实现,使用Solr索引库对系统的搜索资源构建索引,打造敏捷,快速的响应式搜索引擎。
(四):系统依赖关系的解耦,性能调优,使用ActiveMQ作为消息中间件,在系统当中存在直接的调用关系时,不同系统之间直接调用的方式会造成应用体系依赖关系紧密,耦合性变强,进而会使得整个应用体系臃肿不堪。使用ActiveMQ消息队列解耦应用系统之间的依赖关系,进行应用解耦,流量削锋,异步调用,是一个常见的也是相当有效的分布式系统体系架构的解决方案。
本文将以上述思路为基础,以真实的电子商务系统为案例,以构建以高可用,高并发,高扩展性为目标,研究分布式架构体系设计过程,适应当下互联网电子商务系统高流量的网络环境,提供相应的,可行的解决方案。
二、基于分布式系统实现过程的探讨
(一):分布式系统的核心定义
Andrew S. Tanenbaum即分布式操作系统是在独立的、联网的、通信的和物理上分开的计算节点的集合上的软件。它们处理由多个CPU服务的作业。这个思想可以理解为同时使用多台计算机的处理能力来完成实际的业务需求,从而提升整个系统的计算处理能力。同时这个思想也被应用与数据库,文件系统等各个方面。
(二):分布式系统的设计思路
从架构方面实现分布式系统化的核心目的在于提升软件的高可用性,在巨量的用户群体的高并发访问下,传统的单一应用服务器不能够满足此需求,因此,需要从架构方面改善系统的整体性能。分布式系统的设计思路,可以从具化的业务体系出发,通过拆分不同得业务模块,将具体的业务模块拆分为表现层系统和服务层系统,即SOA架构模式。单一的系统运行在单一的应用的服务器当中,当单一化的应用服务器不能够满足并发需求的时候,可以使用搭建单一模块系统的分布式集群实现。集群的实现过程需要时用反向代理和负载均衡服务器,这里拟采用Nginx反向代理服务器,同时可以给不同的系统配备不同的权重,给予优良的服务器更多的访问资源。对于不同子系统的关系依赖以及系统调用,拟采用阿里巴巴的Dubbo组件配合Zookeeper中间件,设计不同系统的注册中心以及依赖关系管理与服务调用。对于持久化资源的存储,采用MySQL持久化数据库,当数据庞大和读写操作频繁发生时,可以使用垂直拆分和水平切割两种方案,一种是使用分布式数据库部署相关数据库,降低数据库的访问压力,另一种则是基于成本低的方案实现,即将数据库进行读写分离,拆分为读数据库和写数据库,同时设置主从复制关系,缓解数据库压力。
三、总结
基于此方案设计的分布式系统具有高度的扩展性,在性能1可以进行高度优化与扩展,各个系统之间具有独立自治性,在项目扩展的过程当中,只需要增加新的子系统即可,已部署的系统将不会受到干扰。同时,亦可添加缓存数据库,freemaker页面静态化,静态文件资源服务器,消息队列来进行流量削峰,解耦合。具有良好的容错性,从而能够应对高流量场景当中的系统需求。
参考文献:
[1]曾宪杰. 大型网站系统与Java中间件. 北京:电子工业出版社, 2014.
[2]李智慧.大型网站技术架构核心原理与案例分析.北京:电子工业出版社,2013.
[3]Baron Schwartz, PeterZaitsev, Vadim Tkacbenko著:Optimization, Backups and Replication High Performance MySQL.北京:电子工业出版社 2013.