• SpringCloud


    目录

    一、什么是SpringCloud?

    二、为什么要学SpringCloud?

    三、怎么用SpringCloud?

    0、SpringCloud 常用组件表 (管家)

    0、SpringCloud 版本对应关系【开发重点】

    1、Spring Cloud Eureka

    Spring Cloud Eureka 和 Zookeeper 的区别(面试)


    一、什么是SpringCloud?

    SpringCloud为了管理、治理好我们的微服务,从多个角度提供了很多组件给我们用。

    SpringCloud是微服务思想的实现。SpringCloud是Java语言的微服务框架。什么是微服务在为什么要学SpringCloud中介绍。它依赖于 Spring Boot,简化了很多配置文件的编写。

    Spring Cloud 就是通过提供一系列开发组件和框架,帮助开发者迅速搭建 一个分布式的微服务系统。主要由三家公司Spring Netflix Alibaba提供一些组件。

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    二、为什么要学SpringCloud?

    单体架构应用的缺点大于优点,所以推出了分布式架构应用:将一个应用拆分成多个小的模块,每个模块都有自己的功能和职责,每个模块可以进行交互,这就是微服务,每个模块都是一个微小的服务用来服务整体应用。

    而为了更好的管理和治理这些个微服务,就需要使用SpringCloud中提供的各个组件。

    微服务架构的4个核心问题

    1、有很多个服务,客户端该怎么访问?

    2、这么多服务,各个服务之间该如何通信完成功能?

    3、这么多服务,应该如何管理?

    4、这么多服务,要是有一个服务挂了怎么办?

    而我们的SpringCloud生态中的各个组件就是为了解决这四个问题而出现的。

    三、怎么用SpringCloud?

    0、SpringCloud 常用组件表 

    服务的注册和发现。(eureka, nacos, consul)

    服务的负载均衡。 (ribbon, dubbo)

    服务的相互调用。(openFeign, dubbo)

    服务的容错。(hystrix, sentinel)

    服务网关。(gateway, zuul)

    服务配置的统一管理。(config-server, nacos, apollo)

    服务消息总线。 (bus)

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

    服务监控。 (admin) (jvm)

    链路追踪。 (sleuth+zipkin)

    0、SpringCloud 版本对应关系【开发重点】

    SpringCloud用哪个版本需要对应版本的SpringBoot,然后如果用了Alibaba的某个版本的组件,也需要对应版本的SpringBoot,所以版本一定要注意。可以去spring官网参考。

    SpringCloud和SpringBoot的对应版本:

     Alibaba、cloud、boot的版本对应:

    1、解决微服务架构的4个核心问题的方案

    1、有很多个服务,客户端该怎么访问?

    2、这么多服务,各个服务之间该如何通信完成功能?

    3、这么多服务,应该如何管理?

    4、这么多服务,要是有一个服务挂了怎么办?

    而我们的SpringCloud生态中的各个组件就是为了解决这四个问题而出现的。

    1)Spring Cloud NetFlix 一站式解决方案

    API网关:zuul组件

    Feign--HttpClient--服务间采用Http通信方式,同步,阻塞

    服务注册和发现:使用Euraka管理服务

    熔断机制:Hystrix

    2)Apache Dubbo Zookeeper 半自动,需要整合一些别人的组件

    API网关:没有,需要借助第三方组件(如zuul组件)或自己编码实现

    服务通信:Dubbo

    服务注册中心:Zookeeper

    熔断机制:没有,借助第三方Hystrix

    3)Spring Cloud Alibaba 一站式解决方案,更简单!

    2、SpringBoot和SpringCloud的关系

    SpringBoot用来开发微服务架构中的一个个微服务,而Spring Cloud是用来协同管理治理这些微服务。

    SpringCloud依赖SpringBoot,离不开。

    3、Spring Cloud Eureka

    服务注册与服务发现的组件

    Eureka 来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是 Netflix 公司开源的一个 服务注册与发现 的组件,和其他 Netflix 公司的服务组件(例如负载均衡、 熔断器、网关等) 一起,被 Spring Cloud 社区整合为 Spring Cloud Netflix 模块。

    Eureka 是 Netflix 贡献给 Spring Cloud 的一个框架! Netflix 给 Spring Cloud 贡 献了很多框架,后面我们会学习到!

    1.1 Spring Cloud Eureka 和 Zookeeper 的区别(面试)

    什么是CAP原则?

    CAP 原则又称 CAP 定理,指的是在一个分布式系统中,

    一致性(Consistency)、

    可用性(Availability)、

    分区容错性(Partition tolerance)(这个特性是不可避免的);

    CAP 原则指的是,在一个分布式系统中这三个要素最多只能同时实现两点,不可能三者兼顾,所以要有取舍。CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。

    一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

    可用性(A):保证每个请求不管成功或者失败都有响应。

    分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。

     分区容错性是必须要的,所以一般都是CP或AP,Zookeeper注重数据的一致性,采用CP原则。而Eureka注重服务的可用性,采用AP原则。

    区别?

    Euraka是服务的注册中心和服务发现的组件,Zookeeper是服务注册中心。

    Euraka注重服务的可用性,采用AP原则,每个服务节点都是平级的,没有主从关系,所以只要还有一个服务的服务器没挂,整个系统还是可以用的。

    Zookeeper注重各个服务间数据的一致性,采用CP原则,在zookeeper里面,若主机挂掉了,则zk集群整体不对外提供服务了,需要选一个新leader的出来(120s)才能继续对外提供服务!不保证高可用。

    1.2 搭建 Eureka- server 

    Eureka Server提供服务注册 服务,各个服务节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

    就像饿了吗软件,就可以理解为一个注册中心,各个商家在里面注册,

    1.3 搭建 Eureka- client


    Lombok常用注解
    @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法。

    @ToString : 作用于类,覆盖默认的toString()方法 ,可以通过of属性限定显示某些字段,通过。

    exclude属性排除某些字段。

    @AllArgsConstructor:生成全参构造器。

    @NoArgsConstructor:生成无参构造器。

    @Data: 该注解使用在类上,该注解会提供 getter 、 setter 、 equals 、 hashCode 、

    toString 方法。

  • 相关阅读:
    2-1、IOC思想以及实现
    ElementUI组件库,分页组件靠右显示
    logging java日志选择
    线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识
    9/30-10/1
    POST和GET传值的方法
    计算机毕业设计Java驾考服务系统(源码+系统+mysql数据库+lw文档)
    js中如何实现一个简单的防抖函数?
    基于布谷鸟算法优化的lssvm回归预测-附代码
    Python基础语法速成1
  • 原文地址:https://blog.csdn.net/weixin_52938172/article/details/126148485