SpringCloud微服务框架

Spring Cloud is a framework that provides developers with tools and services to quickly build and deploy microservices-based architecture. It is built on top of the popular Spring Framework and provides a suite of components and modules to help developers build scalable and resilient microservices.

Spring Cloud provides a variety of features for microservices, including configuration management, service discovery, load balancing, circuit breakers, and distributed tracing. These features enable developers to quickly and easily create distributed systems that are highly available and fault-tolerant.

Spring Cloud also integrates seamlessly with other open-source tools and platforms, such as Netflix OSS, Kubernetes, and Istio. This integration allows developers to leverage the best of these platforms while still using the Spring Framework.

Overall, Spring Cloud is an excellent choice for developers looking to build microservices-based applications quickly and efficiently. Its comprehensive set of tools and services, along with its seamless integration with other platforms, make it a popular choice for modern application development.

1.知识点

  1. 集群:是指将同一业务的不同实例(即节点)部署在多个服务器上,以提高系统的可扩展性和处理能力。通过集群的方式,每个节点都可以提供相同的服务,从而增加了系统的处理能力。同时,集群也可以实现负载均衡,将客户端请求分配到多个节点上,使每个节点的压力均衡,从而提高了系统的稳定性和可用性。

  2. 分布式:指一个系统的业务拆分成多个子业务子系统,子系统分别部署在不同的服务器上(节点),这些节点是互通的,相互操作会有协同。

  3. 微服务:是一种架构风格,是将一个单一的应用拆分为多个小型的服务,每个服务运行在自己的进程中,服务间采用轻量级的通信机制(如HTTP/RPC等)。这些服务围绕业务能力构建并且可以全自动独立部署,服务可以采用不同的语言和存储技术开发。

  4. 远程调用(RPC):一种函数接口调用方式,被调用方法的具体实现不在同一个进程,而是在别的进程,甚至别的电脑上。RPC的重要思想就是使远程调用看起来像本地调用一样,调用者无需知道被调用接口具体在哪台机器上执行。

  5. CAP理论:CAP理论是分布式系统中的一个重要理论,它指出一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)
    这三个基本要求,最多只能同时满足其中的两项。
    一致性: 在分布式环境中,一致性是指数据在多个副本之间是否能 够保持一致的特性。对于一个将数据副本分布在不同分布式节点上的系统,如果对第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依旧会是旧数据,这就是典型的分布式数据不一致情况。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。
    可用性: 可用性是指系统提供的服务必须一致处于可用的状态,对于用户的每一个操作请求总是能够在有限时间内返回结果。
    分区容错性: 在分布式系统中,分区容错性是指系统在面对部分网络分区故障时,仍然能够继续提供可用的服务。在分布式系统中,由于网络或其他资源可能会出现故障,因此分区容错性是非常重要的。
    **CAP理论的限制:**尽管CAP理论对于分布式系统的设计和实施具有重要意义,但它也存在一些限制。首先,CAP理论是在特定的分布式系统模型下推导出来的,这个模型假设网络是可靠的,节点是异步的,并且不存在拜占庭式故障。然而,在实际应用中,这些假设可能并不总是成立的,因此CAP理论的应用范围可能会受到限制。其次,CAP理论并没有考虑到分布式系统中的其他因素,如数据复制、故障恢复、安全性等。这些因素可能会影响到分布式系统的设计和性能。

  6. 服务注册中心功能:
    服务注册表:服务注册表是注册中心的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册与注销。
    服务注册与发现:服务注册是指微服务在启动时,将自己的信息注册到注册中心的过程。服务发现是指查询可用的微服务列表及网络地址的机制。
    服务健康检查:注册中心使用一定的机制定时检测已注册服务的健康状况,如发现某实例长时间无法访问,就会从服务注册表移除该实例。

  7. 集群与分布式的区别?
    集群和分布式是两种不同的服务器架构方式,它们的主要区别在于节点之间的关系和任务分配方式。
    在集群中,多个节点被集中在一起,实现同一业务。每个节点在执行任务时都是相同的,即每个节点执行的均是同一份任务,因此每个节点都是集群中的一部分。这种方式主要通过增加节点的数量来提高系统的处理能力,从而提高系统的可用性和稳定性。例如,新浪网在访问量较大时,可以通过增加服务器节点的数量来共同完成同一业务,从而减轻单个服务器的负担,提高系统的响应速度和可靠性。
    而在分布式系统中,不同子业务会被拆分并分布到不同的节点上进行处理。每个节点在系统中扮演的角色不同,负责执行不同的任务,具有不同的功能。这种方式主要通过将不同的业务分配给不同的节点来提高系统的灵活性和扩展性。例如,一个拥有10个子业务的系统,可以在10台服务器上分别进行处理,每台服务器只负责一个子业务。这种方式可以提高系统的并发处理能力和效率,并且可以根据业务需求灵活地进行扩展。

  8. 微服务与分布式的区别?
    微服务和分布式这两个概念有相似之处,但也有一定的区别。
    相似之处:
    都是为了提高系统的可扩展性和可靠性。分布式系统通过将不同的业务模块部署在不同的服务器上,可以分散压力,提高系统的并发处理能力和可靠性。而微服务架构通过将一个大的系统划分为多个小的服务,每个服务都是独立的,可以独立部署和扩展,从而提高了系统的可扩展性和可靠性。
    都强调了系统的解耦和独立性。分布式系统中的不同业务模块之间通过接口进行通信,实现了系统的解耦和独立性。而微服务架构中的每个服务也是独立的,具有单一职责,可以独立开发、部署和扩展,从而提高了系统的灵活性和可维护性。
    区别之处:
    粒度不同:微服务架构将整个系统划分为多个小的服务,每个服务是独立的,可以独立部署和扩展。而分布式系统则将不同的业务模块部署在不同的服务器上,不同业务模块之间通过接口进行通信。
    关注点不同:微服务架构更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。而分布式系统更加强调资源共享和加快计算机计算速度。
    复杂度不同:微服务架构通过更细粒度的服务切分,使得整个系统的迭代速度并行程度更高,但是运维的复杂度和性能会随着服务的粒度更细而增加。而分布式系统相对来说粒度较大,系统的复杂度相对较低。
    总之,微服务和分布式都是为了提高系统的可扩展性和可靠性,但它们关注的重点不同,微服务更加强调服务的粒度和独立性,而分布式更加强调系统的整体性能和资源共享。在实际应用中,可以根据业务需求和实际情况选择适合的技术架构。

  9. 简述负载均衡策略有哪些?
    1.轮询策略(com.netflix.loadbalancer.RoundRobinRule)
    2.随机策略(com.netflix.loadbalancer.RandomRule)
    3.重试策略(com.netflix.loadbalancer.RetryRule):在一个配置时间段内(超时时间),当选择服务实例不成功,则一直尝试选择一个可用的服务实例。
    4.权重策略(com.netflix.loadbalancer.WeightedResponseTimeRule):会计算每个服务的权重,越高的被调用的可能性越大。
    5.最佳策略(com.netflix.loadbalancer.BestAvailableRule):遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例。
    6.可用过滤策略(com.netflix.loadbalancer.AvailabilityFilteringRule):过滤掉故障和请求数超过阈值的服务实例,再从剩下的实力中轮询调用。

2. SpringCloud基础

2.1.SpringCloud核心组件

Spring Cloud是一套基于Spring Boot构建的微服务架构,旨在简化和简化分布式系统基础设施的开发。它包括服务注册与发现、分布式/版本控制、配置中心、网关路由、负载均衡、熔断机制、链路追踪等功能。同时,Spring Cloud也提供了一系列安全控制组件,如Spring Cloud Security基于OAuth2.0的安全标准,提供了单点登录、资源授权和令牌管理等功能。

Spring Cloud的核心组件包括Eureka(服务注册与发现)、Zuul(网关路由)、Hystrix(熔断机制)、Zipkin(链路追踪)等。此外,Spring Cloud还支持自定义负载均衡器,如Ribbon,以及自定义服务发现组件,如Consul和Zookeeper等。

SpringCloud Netflix组件:
Spring Cloud Netflix是一组基于Spring Boot和Spring Cloud的微服务组件,它们为开发人员提供了构建分布式系统的工具和库。以下是Spring Cloud Netflix中的一些核心组件及其功能:

Eureka: Eureka是Netflix的一个子模块,也是Spring Cloud Netflix的核心模块之一。它是一个基于Rest的服务,用于定位服务,以实现云端中间层服务发现和故障转移。Eureka服务注册中心负责服务的注册,发现以及其他相关的管理工作。

Zuul:Zuul是Netflix的一个服务网关,所有的客户端请求通过这个网关访问后台的服务。Zuul可以使用一定的路由配置来判断某一个URL由哪个服务来处理,并从Eureka获取注册的服务来转发请求。

Ribbon:Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,Zuul网关将一个请求发送给某一个服务的应用的时候,如果一个服务启动了多个实例,就会通过Ribbon来通过一定的负载均衡策略来发送给某一个服务实例。

Feign:Feign是一个声明式的Web Service客户端,它使得编写HTTP客户端变得更简单。如果服务之间需要相互访问,可以使用Feign客户端访问。Feign的优点在于它支持可插拔的注解,同时能够自动刷新负载均衡器Ribbon。

Hystrix:Hystrix是Netflix的一个开源项目,用于在分布式系统中进行延迟和容错处理。Hystrix可以监控服务的延迟和容错情况,当服务出现故障或者延迟过高时,能够进行断路器开关,从而保护系统的稳定性。
这些组件通过集成在Spring Cloud中,可以帮助开发者更轻松地构建和管理分布式系统。

SpringCloud Alibaba组件:
Spring Cloud Alibaba是阿里巴巴开源的一款分布式服务框架,它提供了与Spring Cloud类似的工具和组件,以帮助开发者更好地构建分布式系统。以下是Spring Cloud Alibaba的一些核心组件及其功能:

Nacos:Nacos是Spring Cloud Alibaba提供的一个服务发现和配置管理平台。它可以帮助微服务在运行时自动发现彼此,以及动态地管理配置信息。Nacos可以作为整个微服务项目的注册中心配置中心,所有的微服务都要来这里注册,以便让其它的服务发现自己,从而互相调用。而某个微服务的配置也可以扔给Nacos管理,启动的时候直接到Nacos拉取即可。

RocketMQ:RocketMQ是阿里巴巴开源的一款高性能、高可用、高扩展的分布式消息中间件。它可以帮助实现异步消息、解耦、削峰填谷等功能,以提高系统的可扩展性和可用性。

Sentinel:Sentinel是阿里巴巴开源的流量控制、熔断降级和访问控制平台。它可以保护微服务免受流量冲击和故障的影响,提高系统的稳定性和可用性。

Dubbo:Dubbo是阿里巴巴开源的分布式服务框架,它提供了远程过程调用(RPC)、服务注册与发现、负载均衡、容错容灾等功能,可以用于构建高性能、高可用、高扩展的分布式应用。

Seata:Seata是阿里巴巴开源的分布式事务处理框架,它可以解决分布式系统中的数据一致性问题,提高系统的可靠性和稳定性。

SpringCloud原生组件:

Spring Cloud是Spring的一个子项目,用于为分布式系统提供微服务开发和管理工具。以下是Spring Cloud中的一些原生组件及其功能:

Eureka:Eureka是一个服务注册中心,用于在分布式系统中管理服务的注册和发现。通过将服务注册到Eureka,服务消费者可以动态地获取服务提供者的信息,并基于这些信息进行服务调用。

Feign:Feign是一个声明式的Web Service客户端,它使得编写HTTP客户端变得更简单。Feign支持可插拔的注解,同时能够自动刷新负载均衡器Ribbon。

Ribbon:Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,用于在服务消费者和提供者之间实现负载均衡。通过为Ribbon配置提供服务的地址列表,服务消费者可以基于某种负载均衡算法自动请求服务。Ribbon默认提供了轮循、随机等负载均衡算法,同时也可以自定义负载均衡算法。

Hystrix:Hystrix是Spring Cloud中的断路器组件,用于控制分布式系统中的延迟和容错。通过使用Hystrix,当某个服务出现故障或者延迟过高时,可以及时地断开连接,避免影响整个系统的稳定性。

Zuul:Zuul是一个服务网关,用于在分布式系统中进行路由和过滤。通过配置Zuul的路由规则,可以将请求转发给相应的服务处理。同时,Zuul还支持在路由过程中进行过滤,例如实现安全认证、日志记录等功能。

3 . Eureka服务注册与发现

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值