初识Spring Cloud
Spring Cloud
[Spring Cloud]是一个基于[Spring Boot]的微服务架构开发工具,旨在简化分布式系统的开发。它提供了一系列工具和库,帮助开发者快速构建分布式系统中的常见模式,如配置管理、服务发现、断路器、智能路由等
主要功能和特点
-
配置管理:Spring Cloud Config用于集中管理配置信息,支持动态修改配置文件。
-
服务发现:Spring Cloud Eureka和Spring Cloud Netflix提供了服务发现和注册功能,帮助微服务之间进行通信和协调。
-
断路器:Spring Cloud CircuitBreaker(如Hystrix)提供了断路器的实现,帮助系统在面对失败时自动恢复,防止系统崩溃。
-
智能路由:Spring Cloud Gateway提供了智能路由和过滤功能,支持动态路由决策和请求处理2。
-
消息队列:Spring Cloud Stream提供了对消息中间件的支持,如Kafka和ActiveMQ,帮助实现分布式消息队列功能
优点 | 缺点 |
---|---|
①快速开发:通过封装和抽象现有框架,简化开发过程。 ② 降低维护成本:集中管理和动态配置减少了系统的复杂性和维护成本。 ③高可用性:断路器和智能路由等功能提高了系统的稳定性和可用性。 | ①依赖性强:高度依赖Spring生态系统,对于非Spring项目可能不适用。 ③学习曲线:对于新手来说,理解和使用Spring Cloud需要一定的学习时间。 |
微服务
单体架构
单体架构是一种软件开发模型,它将所有的服务组件集成在一个独立的系统单位中进行开发、部署和维护。在这种架构中,前端用户界面、后端服务器逻辑、数据库操作等组件通常紧密耦合在一起,形成一个统一的程序。
简而言之:将业务的所有功能集中在一个项目中进行开发,打成一个包进行部署
优势:
-
开发、测试、部署简单:由于所有功能都集成在一个应用程序中,开发和测试时不需要跨服务调用,简化了开发和维护过程。
-
初期开发成本低:单体架构在项目初期可以快速开发和部署,适合小型项目或初期阶段。
-
资源利用高效:所有功能都在一个应用程序中,减少了跨服务调用和资源分配的复杂性。
缺点:
-
扩展性差:随着业务扩展,代码量增加,部署和维护变得复杂且耗时,扩展成本高。
-
可靠性差:单体应用中的任何一部分出现问题都会影响整个应用,存在单点故障的风险。
-
维护难度大耦合度高:随着代码量的增加,代码质量和可维护性下降,每次修改都可能引入新的错误。
-
技术栈受限:由于所有功能都在一个应用程序中,技术选择受限,难以引入新的技术或框架。
分布式架构
分布式架构(Distributed Architecture)是一种将系统拆分成多个子系统,在不同地理位置部署,相互协作完成任务的架构方式。这种架构方式通过拆分代码降低耦合度,提高开发效率和服务稳定性
简而言之:跟据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务
优点:
-
高可用性:通过冗余设计减少单点故障的影响。
-
可扩展性:可以根据需求增加或减少节点,灵活调整系统规模。
-
容错性:通过重试、服务降级、熔断和限流等机制,提高系统的稳定性。
缺点:
-
复杂性增加:系统拆分后,模块之间需要通过网络通信,增加了网络延迟和复杂性。
-
技术挑战:需要选择合适的分布式框架,处理会话、锁、事务等技术问题。
微服务技术
综上所述微服务是一种经过良好架构设计的分布式框架方案,其架构特征有:
-
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
-
面向服务:微服务对外暴露业务接口
-
自治:团队独立,技术独立,数据独立,部署独立
-
隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题
微服务这种方案需要有技术框架来落地进行实现,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是Spring Cloud和阿里巴巴的Dubbo
Dubbo | SpringCloud | SpringCloudAlibaba | |
---|---|---|---|
注册中心 | zookeeper,Redis | Eureka,Consul | Eureka,Nacos |
服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo,Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfig,Nacos |
服务网关 | 无 | SpringCloudGateway,Zuul | SpringCloudGateway,Zuul |
服务监控和保护 | dubbo-admin,功能弱 | Hystrix | Sentinel |
了解完了微服务的相关演变和概念,我们可以知道,SpringCloud集成了各种微服务功能组件,并基于Spring Boot实现了这些组件的自动装配,从而提供了良好的开箱即用的体验(如下图所示,可以将微服务理解为:将一个整体业务链路进行多块分割并将这些分割后的业务单元运行在相同/不同服务器的不同端口上,通过配置不同的组件信息,通过注解,配置类等简化服务调用,保证多并发服务器安全,数据库一致性等,实现和单体服务架构相同的或者更加优异的服务效果。)
全局总览: 相关技术说明,和功能信息了解
原文地址:https://blog.csdn.net/2402_88002981/article/details/145156359
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!