【SpringCloud入门】-- 认识微服务

目录

1. 什么是微服务?

2. 微服务的优势?

3. 单体架构,分布式架构,微服务架构的区别以及优缺点?

4. SpringCloud和Spring Cloud Alibaba是什么?

5. SpringCloud和SpringCloudAlibaba的区别?

6. SpringBoot与SpringCloud兼容版本说明

7. 服务拆分示例

8. SpringCloudAlibaba功能介绍

9. SpringCloudAlibaba的idea配置

 10. SpringCloudAlibaba官方文档


1. 什么是微服务?

微服务是一种软件设计和架构的风格,它将应用程序分为一组较小的,相互独立的服务,并通过轻量级的通信机制进行协作。每个微服务都专注于完成一个特定的业务功能,可以独立开发,测试,部署和维护。在微服务架构中,服务之间是松耦合的,每个服务都是独立的运行单元,可以根据业务需求进行快速迭代和演进。

与传统单体应用程序不同,微服务的架构将应用程序拆分为多个小的服务,每个小的服务都遵循单一的职责,负责执行某个具体的功能,不必关注其他服务的实现细节。此外,由于每个服务都是独立的,可以使用不同的编程语言,框架和技术来开发和部署不同的服务,这大大降低了技术选型的限制。

2. 微服务的优势?

  1. 高度可伸缩性和弹性:由于每个服务都是独立的,可以根据实际业务需求进行快速的扩展和缩减,提高系统的弹性和可伸缩性。
  2. 更快的应用程序迭代和部署:微服务可以被独立开发,测试,部署,升级,维护,实现更快的应用程序迭代和部署。
  3. 更好的故障隔离和容错能力:由于微服务之间是松耦合的,一个服务故障不会对其他部分产生影响,且可以使用各种容错机制提高容错能力。
  4. 更好的团队组织和管理:微服务架构可以便于团队更加专注于各个模块以及业务功能,更好地进行分工协作,降低团队的沟通成本。

3. 单体架构,分布式架构,微服务架构的区别以及优缺点?

  • 单体架构
    • 单体架构是一种传统的软件设计和架构风格,应用程序作为一个整体运行在单个进程中,所有的功能模块和数据访问都被打包在一起。
    • 优点:单体架构部署简单,易于管理,对于小型应用程序来说开发速度快,可以提高代码复用性。
    • 缺点:难以维护和扩展,一旦应用程序规模变大,就会导致代码复杂度增加;部署和升级需要停机维护,影响用户的体验;耦合度高,一处出问题可能影响整个程序。
  • 分布式架构
    • 通过分布式架构将应用程序划分成多个模块和组件,在多个计算机上分布运行,并通过网络进行通信和数据交换。
    • 优点:通过分布式部署,可以实现更好的可伸缩性和可靠性;可以灵活选择合适的技术进行开发;通过分布式部署,可以更好的实现模块化和松耦合,易于管理。
    • 缺点:分布式开发需要更多的沟通与协作;需要处理分布式事务和数据一致性等问题;需要考虑负载均衡和网络通信的性能问题;需要对系统进行综合监控和管理。
  • 微服务架构
    • 微服务架构是一种面向服务的架构风格,将应用程序划分为多个小,松耦合的组件,在不同的主机独立运行,并通过轻量级通信机制进行协作。
    • 优点:通过模块化的设计,可以实现更快的迭代和部署;更好的实现松耦合,容错性更高;方便地对业务变化,易于维护和扩展。
    • 缺点:需要更多的开发和运维资源,需要更好的治理机制来确保服务的稳定性和可靠性;需要考虑服务之间的通信和一致性的问题;需要对架构进行全局监控和管理。

4. SpringCloud和Spring Cloud Alibaba是什么?

  • SpringCloud
    • SpringCloud是基于SpringBoot的微服务框架,可以帮助开发人员快速构建,部署和管理分布式系统。提供了一系列的工具和组件,如服务注册与发现,配置中心,负载均衡,断路器等,支持多种云平台和技术栈,使开发人员快速构建高可用,可扩展的微服务应用程序。
  • SpringCloudAlibaba
    • SpringCloudAlibaba是在SpringCloud基础上,集成了阿里巴巴公司的一系列分布式解决方案,包括Nacose注册中心,Sentinel熔断降级,DubboRPC等,提供了更完善的分布式解决方案。相比于SpringCloud,Spring Cloud Alibaba更加全面的分布式解决方案,能满足复杂的需求

5. SpringCloud和SpringCloudAlibaba的区别?

  • 服务注册与发现

Spring Cloud使用Eureka或Consul作为服务注册中心,而Spring Cloud Alibaba使用Nacos作为注册中心。Nacos支持更多的服务发现和服务注册功能,如DNS解析、动态配置等。

  • 配置管理

Spring Cloud使用Spring Cloud Config来管理配置文件,而Spring Cloud Alibaba使用Nacos Config来管理配置文件。Nacos Config支持更多的动态配置和管理功能。

  • 熔断降级

Spring Cloud使用Hystrix来实现熔断降级,而Spring Cloud Alibaba使用Sentinel来实现熔断降级。Sentinel相比于Hystrix,提供了更加完善的流量控制和熔断降级管理功能。

  • 分布式事务

Spring Cloud使用Spring Cloud Sleuth和Zipkin进行分布式事务追踪,而Spring Cloud Alibaba使用Seata进行分布式事务管理。Seata是一个全局性的分布式事务管理框架,支持AT、TCC和SAGA三种分布式事务模式,并提供了更丰富的事务管理功能。

总之,Spring Cloud和Spring Cloud Alibaba都是优秀的微服务框架,它们在不同的业务场景下都有各自的应用。如果需要基本的微服务框架和解决方案,可以选择Spring Cloud;如果需要更全面、更复杂的分布式解决方案,可以选择Spring Cloud Alibaba。

6. SpringBoot与SpringCloud兼容版本说明

2022.0.x aka Kilburn 3.0.x
2021.0.x. aka Jubilee 2.6.x,2.7.x(从 2021.0.3开始)
2020.0.x aka Ilford 2.4.x,2.5.x(从2020.0.3开始)
Hoxton 2.2.x,2.3.0(从SR5开始)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

7. 服务拆分示例

【SpringCloud入门】-- 认识微服务_第1张图片

SpringCloud-test:父工程,管理依赖。

用户模块:用户微服务,负责所有用户相关业务。

教师模块:教师微服务,负责教师信息相关业务。

8. SpringCloudAlibaba功能介绍

  • 流量控制和服务降级:流量控制,断路和系统自适应保护与阿里巴巴哨兵。

  • 服务注册与发现:实例可以在Alibaba的Nacos中注册,客户端可以使用spring管理的bean发现实例。支持Ribbon,通过SpringCloudNetflix的客户端负载均衡。

  • 分布式配置:使用阿里Nacos作为数据存储。

  • 事件驱动:构建与SpringCloudStream RocketMQ Binder连接的高度可扩展的事件驱动。

  • 消息总线:使用Springcloud总线RocketMQ连接分布式系统节点。

  • 分布式事务:支持具有高性能和易于使用的Seata分布式事务解决方案。

  • Dubbo RPC:通过Dubbo RPC扩展SpringCloud服务到服务调用的通信协议。

9. SpringCloudAlibaba的idea配置

pom中的依赖项:


    
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            {project-version}
            pom
            import
        
    

如果想为阿里云服务使用Spring Boot starter,可以将阿里云Spring Boot BOM添加到pom.xml:


    
        
            com.alibaba.cloud
            aliyun-spring-boot-dependencies
            {project-version}
            pom
            import
        
    

 10. SpringCloudAlibaba官方文档

Spring Cloud Alibaba Reference Documentation

11. SpringCloud常用组件表

 服务注册与发现(eureka,nacos,consul)

服务负载均衡(ribbon)

服务相互调用(openFeign)

服务的容错(hustrix,sentinel)

服务的网关(gateway,Zuul)

服务的统一配置管理(config-server)

服务的消息总线(bus)

服务的安全组件(security,Oauth2.0)

服务监控(admin)(JVM)

链路追踪(sleuth+zipkin)

你可能感兴趣的:(微服务,微服务,spring,cloud,java)