大型网站架构的演变探析
2019-09-09柴中宏
柴中宏
摘要:隨着以信息技术为代表的新技术的出现和电子商务的高速发展,本文阐述了传统单体架构、分布式架构、SOA架构及微服务架构的技术演变过程,对大型网站的建设有参考价值。
关键字:网站架构单体架构SOA微服务
引言
随着计算机技术和通信技术在实践中的深入应用,大数据已经深入各行各业。网站已经成为人们信息交流、交互和发布的重要方式。而大型网站的特点是高并发,大流量,高可用,海量数据等,如何设计合理的网站架构方便用户信息交互,满足数以亿计的用户需求,显得尤为重要。本文主要通过对现有传统网站架构、分布式网站架构和SOA架构的分析和比较,引出目前理念先进的微服务架构,对互联网不断发展的今天有参考价值。
1传统架构演变
传统网站架构是在单体架构的基础上演化而来,单体架构是将web应用服务和数据库服务集成在一台服务器上发布,随着业务量、访问量和并发性的需求不断增加,将web应用和数据服务分置在两台相对独立的服务器上。Web应用服务器负责网站信息的发布,数据库服务器负责数据库服务的发布。在web服务发布中通过缓存技术、服务器集群技术和负载均衡等技术满足高并发,大访问量的要求。在数据库服务器方面采用数据库缓存技术(CND、反向代理、本地缓存、分布式缓存),读写分离、分库等技术来满足高并发,大业务量和海量访问,这就演变为分布式架构。通过以上技术对网站架构改进能满足网站可用性、伸缩性、扩展性和安全性方面的要求。但随着业务复杂度增加、技术团队规模扩大,系统维护量陡增,开发效率大大降低,即使处理小需求,也需要全部重新部署,增加用运维的复杂度,降低了网站的伸缩性和扩展性。
2 SOA{面向服务架构)
SOA(S e r v i c e-O r i e n t e d Architecture)的思想是将紧耦合系统划分为面向业务,粗粒度,松耦合,无状态的服务。服务发布为其他服务所调用,一组相互依赖的服务就构成了SOA架构系统。SOA面向服务架构的核心是服务组件模型,优点是将多种应用服务以接口和契约相联系起来,并以通用的方式进行交互。减少了服务间的依赖达到了松耦合,也为实现企业IT闲置资产的重用、降低了企业的IT投资成本,实现企业动态的变革提供了便利。
SOA体系结构中的角色包括:服务请求者、服务提供者和服务注册中心。服务请求者是一个应用程序、一个软件模块、另一个服务。他发起对注册中心的服务的查询通过传输绑定服务并且执行服务功能,服务请求者根据接口契约来执行服务。服务提供者是一个可通过网络寻址的实体,他接受和执行来自请求者的请求,他将自己的服务和接口契约发布到服务注册中心。
SOA是一种架构风格,重点在原则、理念、方法论等高思维层次上,对于工具、框架、解决方案没有做强制限制,ESB(服务总线体系架构)是传统中间件技术、XML和Web服务等技术结合的产物,它旨在为内部系统与内部系统间,内部系统与外部系统之间构建有效的信息交互服务体系,通过ESB建立,实现IT能力的服务化。
SOA优点:第一为企业与其业务伙伴直接建立新渠道,并且成本得以降低。第二SOA与平台无关,减少了业务应用实现的限制。具有低耦合性特点,业务伙伴对整个业务系统的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费用会越来越多。 第三SOA具有可按模块分阶段进行实施的优势可以成功一步再做下一步,将实施对企业的冲击减少到最小,但SOA的实施可能并不具有成本显著性。
SOA的缺点:第一系统与服务的界限模糊,不利于开发及维护。第二虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。第三抽取的服务的粒度过大,系统与服务之间耦合性高。
3微服务架构
3.1微服务概念
微服务(MicroService)的概念出自马丁,福勒(MartinFlowler),他对为服务的定义是微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,对具体的服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。在SOA中主要是研究应用系统之间如何集成和互通,而在微服务架构中主要是进一步探讨一个应用系统该如何设计才能更好的开发,管理更加灵活高效。微服务架构的基本思想就是“围绕业务领域组件来创建应用,让应用可以独立的开发、管理和加速”。
3.2微服务架构的优点
微服务简单灵活,能够独立部署,相对传统架构需要牵一发而动全身,微服务架构由于是由多个相互独立的微服务组成,因此仅需要对独立单元进行部署,不需要重新构建,相应的就更高效更可靠。微服务之间是松耦合的,微服务内部是高内聚的,每个微服务很容易按需扩展。微服务架构技术选型灵活,设计者可以根据自身实际情况合理选择合理技术高效完成业务目标。
3.3微服务应用设计原则应遵行AKF拆分原则、前后端分离、无状态服务和无状态通信原则。微服务拆分时要低耦合、高内聚,一个服务完成一个独立的功能。按团队结构,应小规模团队维护,快速迭代。
3.4在微服务架构中的核心问题是服务注册和路由、安全认证、集中配置、分布式事务和同步调用等问题如何解决和实现。
3.5微服务架构带来的问题
依赖服务变更很难跟踪,服务接口如何管理,依赖服务调试比较麻烦。部分模块重复构建,跨团队、跨系统、跨语言会有很多的重复建设。微服务放大了分布式架构的系列问题运维复杂度陡增面对以上问题,一般用以下方式解决,提供文档管理、服务治理、服务模拟的工具和框架;统一认证、统一配置、统一日志、分布式汇总分析;全局事务、异步模式同步;搭建持续平台、统一监控平台等。
4结束语
大型网站系统采用什么样的架构,受业务复杂性、技术复杂性等多种因素,业务复杂性是企业发展不同阶段对应不同的业务。技术复杂性是IT技术发展阶段和内部技术人员水平。业务复杂性必然带来技术复杂性应用架构目标是解决业务复杂性的同时避免技术太复杂,确保业务架构落地。因此在选取网站架构时要基于实际业务,而不是选最新的技术。
参考文献
[1]易可可汪潮王威分布式大型钢铁电商网站架构模式的研究和实现
[2]周强谢靖赵华茗大型网站的架构研究及解决方案
[3]佟敏徐凤全SOA技术的发展及研究
[4]https://blog.csdn.net/fuhanghang/article/details/83961606
[5]https.//blog.csdn.net/oschina_41740LOO/article/details/8063090L
[6] https://www.ibm.com/developerworks/cn/webservices/wsgoodbad/
[7]https://kuaibao.qrl.com/s/20180623G1H02400?refer-cp_1026
[8]https:∥wenku.baidu.com/view/2ccdd64844361 0661ed9ad5l fO1 dc28le43a5604.html