尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

系统架构演进与Spring Cloud Alibaba微服务架构体系

系统架构演进与Spring Cloud Alibaba微服务架构体系 项目架构演变史“不是我不明白这世界变化快”。随着互联网世界的快速发展网站应用的规模也在不断地扩大这种规模的扩大必然会影响这我们研发的项目的架构体系。早期的一个单体架构的模块已然不能满足不断复杂的业务逻辑和不断增长用户数量直到如今微服务架构体系的发展才有效、丝滑的解决了这一问题。从互联网早期的单体架构到如今的微服务架构项目系统架构大致经历了如下几个过程单体应用架构垂直应用架构分布式架构SOA架构微服务架构单体应用架构回想我们早期开发的项目系统的每个功能模块都放在一个应用中一个数据库甚至一个开发人员都能搞定。单体架构的开发、部署以及维护成本较低这也是其优点所在。当然任意模块的BUG都会影响整个应用系统的可靠性及性能明显不高。优点项目架构简单适合用户量少的项目开发成本低。项目部署在一个节点上维护方便。缺点功能集中在一个工程中项目模块紧耦合单点容错率低无法对不同的模块功能进行针对性的优化和水平拓展。垂直应用架构所谓垂直应用架构其实就是把之前的单体应用拆分成多个应用以提升效率比如原来单体应用中的后台、电商、CMS等功能模块可以拆分成后台系统、电商系统、CMS管理系统。优点项目拆分实现了流量分担解决了并发问题而且可以针对不同模块进行优化和水平拓展同时不同的系统之间不会互相影响提高容错率。缺点系统之间互相存在无法进行相互调用系统之间互相独立会造成一部分功能的冗余。比如每个单独的系统可能都要写一套用户登录的代码。分布式系统架构垂直架构带来的问题是会带来功能代码的冗余而随着业务的增加拆分的应用越多冗余的代码就越来越多。那咋整没错你猜对了我们可以把冗余部分的代码再次拆解出来做成统一的业务层供其他地方调用该业务层就变成了一个单独的服务。控制层调用不同的业务层服务从而完成不同的业务功能其具体表现就是一个项目拆分成表现层和服务层两个部分服务层中包含业务逻辑表现层只需要处理和页面的交互业务逻辑都是调用服务层的服务来实现这就是分布式架构。在分布式架构中我们把重复的代码抽取出来作为一个公共的服务提高了代码复用率。同时我们从图中也可以看到业务服务之间的调用变复杂了这就给维护增加了成本。小结一下分布式系统架构的优缺点优点抽取公共的功能作为服务层提高代码复用率。缺点系统之间的耦合性变高了调用关系错综复杂比较难以维护。SOA通过前文分析得知分布式架构中的缺点就是调用复杂而且当服务越来越多或者当某一个服务压力过大需要水平拓展和负载均衡时对于资源的调度和治理就需要用到治理中心 **SOAService Oriented Architecture**为核心来解决同时治理中心还可以帮助解决服务之间协议不同的问题。举个栗子比如电商系统去调用用户服务时用户服务的负载均衡中轮询到的那一台主机宕机了那么治理中心会自动忽略掉这个挂掉的节点找到健康的节点提供服务。但是由于服务间有依赖关系一旦某个环节出现问题对整个系统的影响较大也就是常说的服务雪崩这种服务关系的复杂也带来了运维、测试、部署的困难。服务雪崩当一个依赖的服务宕机导致整个应用系统都无法访问的现象就是服务雪崩。举个例子服务A和B分别依赖服务C和D而C和D均依赖服务E当这几个服务都正常的时候调用没有任何问题当服务E出现问题无法正常给服务C和服务D提供正常的服务时C和D执行超时重试机制但是当A和B不断新增请求的时候C和D对于E的调用请求会大量积压最终它也会耗尽资源扛不住而倒下的C和D倒下了A和B就会不断消耗资源最终也会宕机下线直至最后整个应用系统不可访问服务雪崩。微服务架构微服务架构是在SOA的基础上进一步拆分它强调服务应该彻底拆分从而提高效率。在微服务架构中每个服务必须独立部署并且互不影响这种架构更加轻巧。SOA和微服务的不同点在于微服务更细专业人做专业事微服务中每个服务独立部署互不影响。SOA架构中的数据库可能会发生数据共享而为服务中每个服务都有自己的数据库。微服务架构更是个敏捷开发和快速迭代版本。Spring Cloud发展史2020-12-22日Spring官方博客宣布Spring Cloud 2020.0.0正式发布。2020.0.0是第一个使用新的版本号命名方案的Spring Cloud发行版本。在此之前Spring Cloud使用英国伦敦地铁站的命名方式来命名一个大版本train version如果不按照新的版本号命名的话本次的版本号应该是Ilford。更新版本本来是产品的常规操作但是Spring Cloud的本次更新却正式开启了Spring Cloud Netflix体系的终结进程。Netflix公司是目前微服务落地中最成功的公司。它开源了诸如Eureka、Hystrix、Zuul、Feign、Ribbon等等广大开发者所知微服务套件统称为Netflix OSS。在当时Netflix OSS成为微服务组件上事实的标准。但是在2018年Netflix公司宣布其核心组件Hystrix、Ribbon、Zuul、Eureka等进入维护状态不再进行新特性开发只修BUG。这直接影响了Spring Cloud项目的发展路线Spring官方不得不采取了应对措施在2019年的在SpringOne 2019大会中Spring Cloud宣布Spring Cloud Netflix项目进入维护模式并在2020年移除相关的Netflix OSS组件。这给Spring Cloud Alibaba成为微服务开发的主流选择提供了机会。初识Spring Cloud AlibabaSpring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba只需要添加一些注解和少量配置就可以将 Spring Cloud 应用接入阿里微服务解决方案通过阿里中间件来迅速搭建分布式应用系统。Spring Cloud Alibaba 的主要功能及相应的组件介绍在其开源项目有详细的介绍参考Spring Cloud Alibaba小结系统应用架构从单体架构逐步演变成微服务架构期间经过单体应用架构、垂直应用架构分布式架构、SOA架构以及微服务架构。微服务落地方案之Spring Cloud拥有极强的生命力其生态非常强大。Spring Cloud Alibaba加入微服务主流生态圈Spring Cloud将是我们落地微服务方案的主流选择。后续我将从注册中心和配置中心 Nacos开始从实战到原理一步步掌握Spring Cloud Alibaba微服务技术栈敬请期待。本文创作于 2022-07-02 。
返回列表