SpringCloudAlibaba全部组件说明

SpringCloudAlibaba全部组件说明
⽂章⽬录
⼀、微服务
1、系统架构的演变
随着互联⽹的发展,⽹站应⽤的规模也在不断的扩⼤,进⽽导致系统架构也在不断的进⾏变化。从互联⽹早起到现在,系统架构⼤体经历了下⾯⼏个过程:单体应⽤架构 ⼀> 垂直应⽤架构⼀> 分布式架构 ⼀> SOA架构 ⼀> 微服务架构,当然还有悄然兴起的Service Mesh(服务⽹格化)。
1)单体应⽤架构
互联⽹早期,⼀般的⽹站应⽤流量较⼩,只需⼀个应⽤,将所有功能代码都部署在⼀起就可以,这样可以减少开发、部署和维护的成本。⽐如说⼀个电商系统,⾥⾯会包含很多⽤户管理,商品管理,订单管理,物流管理等等很多模块,我们会把它们做成⼀个web项⽬,然后部署到⼀台tomcat服务器上。
优点:
项⽬架构简单,⼩型项⽬的话,开发成本低
项⽬部署在⼀个节点上,维护⽅便
缺点:
背胶橡皮布
全部功能集成在⼀个⼯程中,对于⼤型项⽬来讲不易开发和维护
项⽬模块之间紧密耦合,单点容错率低
⽆法针对不同模块进⾏针对性优化和⽔平扩展
2)垂直应⽤架构
随着访问量的逐渐增⼤,单应⽤只能依靠增加节点来应对,但是这时候会发现并不是所有的模块都会有⽐较⼤的访问景还是以上⾯的电商为例⼦,⽤户访问最的增加可能影响的只是⽤户和订单模块,但是对消息模块的形响就⽐较⼩,那么此时我们希望只多增加⼏个订单模块。⽽不增加消息模块。此时单体应⽤就做不到了,垂⽩应⽤就应运⽽⽣了。
所谓的垂⾃应⽤架构,就是将原来的⼀⼀个应⽤拆成互不相⼲的⼏个应⽤,以提升效率。⽐如我们可以将上⾯电商的单体应⽤拆分成:
电商系统(⽤户管理 / 商品管理 / 订单管理)
后台系统(⽤户管理 / 订单管理 / 客户管理)
CMS系统(⼴告管理 / 营销管理)
这样拆分完毕之后,⼀旦⽤户访问量变⼤,只需要增加电商系统的节点就可以了,⽽⽆需增加后台和CMS的节点。
优点:
系统拆分实现了流量分担,解决了并发问题,⽽且可以针对不同模块进⾏优化和⽔扩展
⼀个系统的问题不会影响到其他系统,提⾼容错率
缺点:
夹抱机系统之间相互独⽴,⽆法进⾏相互调⽤
系统之间相互独⽴,会有重 复的开发任务
3)分布式架构
当垂直应⽤越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码抽取出来,做成统⼀的业务层作为独⽴的服务,然后由前端控制层调⽤不同的业务层服务呢?
这就产⽣了新的分布式系统架构。它将把⼯程拆分成表现层和服务层两个部分,服务层中包含业务逻辑。表现层只需要处理和页⾯的交互,业务逻辑都是调⽤服务层的服务来实现。
优点:
抽取公共的功能为服务层,提⾼代码复⽤性
缺点:
系统间耦合度变⾼,调⽤关系错综复杂,难以维护
4)SOA架构分子筛柱
在分布式架构下,当服务越来越多,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需增加⼀个调度中⼼对集进⾏实时管理。此时,⽤于资源调度和治理中⼼(SOA Service Oriented Architecture)是关键。
优点:
使⽤治理中⼼(ESB / Dubbo)解决了服务间调⽤关系的⾃动调节
缺点:
服务间会有依赖关系,⼀旦某个环节出错会影响较⼤(服务雪崩)
服务关系复杂,运维、测试部署困难
5)微服务架构
微服务机构在某种程度上是⾯向服务的架构SOA继续发展的下⼀步,他更加强调服务的“彻底拆分”。
优点:
服务原⼦化拆分,独⽴打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
鱼算法
微服务之间采⽤Restful等轻量级 http 协议相互调⽤
缺点:松梢斑螟
分布式系统开发的技术成本⾼(容错、分布式事务等)
复杂性更⾼。各个微服务进⾏分布式独⽴部署,当进⾏模块调⽤的时候,分布式将会变得更加⿇烦。
2、微服务架构常见的问题
⼀旦采⽤微服务系统架构,就势必会遇到这样⼏个问题:
这么多⼩服务,如何管理他们? (服务治理 注册中⼼ [服务注册 发现 剔除]) nacos
这么多⼩服务,他们之间如何通讯? (restful rpc dubbo feign)
httpclint(“url”,参数),springboot restTemplate(“ur”,参数) ,feign
这么多⼩服务,客户端怎么访问他们? (⽹关)gateway
这么多⼩服务,⼀旦出现问题了,应该如何⾃处理? (容错)sentinel
这么多⼩服务,⼀旦出现问题了,应该如何排错? (链路追踪)skywalking
对于上⾯的问题,是任何⼀个微服务设计者都不能绕过去的,因此⼤部分的微服务产品都针对每⼀个问题提供了相对应的组件来解决他们。
3、常见微服务架构
1.dubbo:zookeeper + dubbo + SpringMvc / SpringBoot
配套通信⽅式:rpc
注册中⼼:zookeeper / redis
配置中⼼:diamond
2.SpringCloud:全家桶 + 嵌⼊第三⽅组件(Netflix)
配套通信⽅式:http restful
注册中⼼:eruka / consul
配置中⼼:config
熔断器:hystrix
⽹关:zuul
分布式链路系统:sleuth + zipkin
⼆、SpringCloud Alibaba
1、SpringCloud Alibaba简介
1)简介
Spring Cloud Alibaba致⼒于提供微服务开发的⼀站式解决⽅案。 此项⽬包含开发分布式应⽤微服务的必需组件,⽅便开发者通过Spring Cloud编程模型轻松便⽤这些组件来开发分布式应⽤服务。
依托Spring Cloud Alibaba,您只需要添加⼀些注解和少量配置,就可以将SpringCloud 应⽤接⼊阿⾥微服务解决⽅案,通过阿⾥中间件来迅速搭建分布式应⽤系统。
主要功能:
服务限流降级:默认⽀持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo 和RocketMQ 限流降级功能的接⼊,可以在运⾏时通过控制台实时修改限流降级规则,还⽀持查看限流降级 Metrics 监控。
服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的⽀持。
分布式配置管理:⽀持分布式系统中的外部化配置,配置更改时⾃动刷新。
消息驱动能⼒:基于 Spring Cloud Stream 为微服务应⽤构建消息驱动能⼒。
分布式事务:使⽤ @GlobalTransactional 注解, ⾼效并且对业务零侵⼊地解决分布式事务问题。。
阿⾥云对象存储:阿⾥云提供的海量、安全、低成本、⾼可靠的云存储服务。⽀持在任何应⽤、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、⾼可靠、⾼可⽤的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执⾏模型,如⽹格任务。⽹格任务⽀持海量⼦任务均匀分配到所有 Worker(schedulerx-client)上执⾏。
阿⾥云短信服务:覆盖全球的短信服务,友好、⾼效、智能的互联化通讯能⼒,帮助企业迅速搭建客户触达通道。
组件:
Sentinel:把流量作为切⼊点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:⼀个更易于构建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。
RocketMQ:⼀款开源的分布式消息系统,基于⾼可⽤分布式集技术,提供低延时的、⾼可靠的消息发布与订阅服务。
Dubbo:Apache Dubbo™ 是⼀款⾼性能 Java RPC 框架。
Seata:阿⾥巴巴开源产品,⼀个易于使⽤的⾼性能微服务分布式事务解决⽅案。
Alibaba Cloud OSS:阿⾥云对象存储服务(Object Storage Service,简称 OSS),是阿⾥云提供的海量、安全、低成本、⾼可靠的云存储服务。您可以在任何应⽤、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX:阿⾥中间件团队开发的⼀款分布式任务调度产品,提供秒级、精准、⾼可靠、⾼可⽤的定时(基于Cron 表达式)任务调度服务。
Alibaba Cloud SMS:覆盖全球的短信服务,友好、⾼效、智能的互联化通讯能⼒,帮助企业迅速搭建客户触达通道。
2)为什么使⽤
SpringCloud的⼏⼤痛点:
SpringCloud部分组件停⽌维护和更新,给开发带来不便;
SpringCloud部分环境搭建复杂,没有完善的可视化界⾯,我们需要⼤量的⼆次开发和定制;
SpringCloud配置复杂,难以上⼿,部分配置差别难以区分和合理应⽤。
SpringCloud Alibaba的优势:
阿⾥使⽤过的组件经历了考验,性能强悍,设计合理,现在开源出来⼤家⽤;
成套的产品搭配完善的可视化界⾯给开发运维带来极⼤的便利;
搭建简单,学习曲线低。
结合SpringCloud Alibaba我们最终的技术搭配⽅案:
SpringCloud Alibaba - Nacos:注册中⼼(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中⼼(动态配置管理)
SpringCloud - Ribbon:负载均衡
锌铝镁
SpringCloud - Feign:声明式HTTP客户端(调⽤远程服务)
SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
SpringCloud - Gateway:API⽹关(webflux 编程模式)
SpringCloud - Sleuth:调⽤链监控
SpringCloud Alibaba - Seata:原Fescar,即分布式事务解诀⽅案
3)Spring Cloud 和 SpringCloud Alibaba 的关系

本文发布于:2024-09-21 18:43:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/155501.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务   分布式   系统   管理   架构
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议