springcloud初级,对于springcloud的基础组件以及概念

Springcloud概念

说在前面

​ springcloud初级知识适合刚刚接触springcloud的人阅读和学习,如果您已经了解了不少springcloud知识,请移步springcloud中级\springcloud中级

为什么要学习springcloud?

我们从很多地方听说或者了解到了springcloud,分布式,微服务,等等等等当下互联网最火热的名词,但是为什么要学习springcloud呢?

什么是微服务架构

微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。

这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

说人话就是,微服务架构把一个很大的东西细分为很小很小的东西,就和一辆车需要很多零件和螺丝一样!但是汽车的目的是为了方便四级在现实世界出行,而微服务是为了方便程序员在架构中实现需求!

微服务微服务微服务,分布式分布式分布式,重要的事情说三遍,你学习springcloud就是为了分布式,springcloud是集成者而不是开创者。

什么是springcloud
  • Spring Cloud是一系列Java框架的有序集合。

    它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

  • Spring Cloud是服务框架的组合

    Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

综上所述,springcloud即为服务框架的整合,通过springboot风格进行再封装屏蔽掉了复杂的配置和实现原理

SpringCloud的优缺点

优点
  • 1.耦合度比较低,不影响其他模块的开发
  • 2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。
  • 3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。
  • 4.微服务跨平台的,可以用任何一种语言开发。
  • 5.每个微服务可以有自己的独立的数据库也有用公共的数据库。
  • 6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行服务通信。
缺点
  • 1.部署比较麻烦,给运维工程师带来一定的麻烦。
  • 2.针对数据的管理比麻烦,因为微服务可以每个微服务使用一个数据库。
  • 3.系统集成测试比较麻烦
  • 4.性能的监控比较麻烦。【最好开发一个大屏监控系统】

总的来说优点大过于缺点,目前看来Spring Cloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是一个不错的选择。

SpringBoot和SpringCloud的区别

  • SpringBoot专注于快速方便的开发单个个体微服务
  • SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来。
  • 为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
  • SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系
  • SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

Spring Cloud和SpringBoot版本对应关系

Spring Cloud Version SpringBoot Version
2020.0.x aka Ilford 2.4.x
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

SpringCloud由什么组成

image-20210404093515477

  • Spring Cloud Eureka(现在闭源了):服务注册与发现

  • Spring Cloud Zuul(gateway):服务网关

  • Spring Cloud Ribbon:客户端负载均衡

  • Spring Cloud Feign:声明性的Web服务客户端

  • Spring Cloud Hystrix:断路器

  • Spring Cloud Config:分布式统一配置管理

  • 等20几个框架,开源一直在更新

使用 Spring Boot 开发分布式微服务时,我们面临什么问题

  • 1.与分布式系统相关的复杂性-这种开销包括网络问题延迟开销带宽问题安全问题
  • 2.服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
  • 3.冗余-分布式系统中的冗余问题。
  • 4.负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
  • 5.性能-问题 由于各种运营开销导致的性能问题。

服务注册和发现是什么意思?Spring Cloud 如何实现?

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。

有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。

Eureka

Eureka的基础概念

什么是Eureka?

Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过Eureka Service来监控各个微服务是否运行正常。

Eureka服务注册与发现

什么是服务治理?

SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理

在传统的RPC远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,管理比较麻烦,所以需要使用服务治理,管理服务于服务之间的依赖关系,可以实现服务调用负载均衡容错等,实现服务发现与注册。

什么是服务注册与发现

Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,他是服务注册中心。而系统中的其他微服务,使用Eureka 的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息:比如 服务地址通讯地址等以别名的方式注册到注册中心上。另一方面(消费者|服务提供者),会以该别名的方式去注册中心上获取到实际的服务服务通讯地址,然后再实现本低RPC调用RPC远程调用框架核心设计思想:在于注册中心,因为注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何RPC远程框架中,都会有一个注册中心(存放服务地址相关信息(如:接口地址))

image-20210404094749028

Eureka的使用规范

Eureka两个组件
  • 1.Eureka Server 提供服务注册 服务

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

  • 2.Eureka Client通过注册中心进行访问

本质是一个java客户端,用于简化Eureka Server 的交互,客户端同时也具备一个内置的,使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30s)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从注册服务表中把这个服务节点移除(默认90s)。

Eureka怎么实现高可用(搭建集群)

Eureka 的集群搭建方法很简单:每一台 Eureka 只需要在配置中指定另外多个 Eureka 的地址就可以实现一个集群的搭建了。

什么是Eureka的自我保护模式

默认情况下,如果Eureka Service在一定时间内没有接收到某个微服务的心跳,Eureka Service会进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式(好死不如赖活着)

在测试环境中不建议开启这个参数,生产环境中建议开启

测试用例

我是跟着尚硅谷周阳老师学习的,这里附上视频地址

具体架构如下:

image-20210404101103847

配置Eureka只需要实现一个springboot的主启动类就可以了,我写了两个是因为需要搭建集群,你也可以写三个或者更多。

eureka-server-7001服务模块
server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com   # eureka服务端的实例名称
  client:
    register-with-eureka: false    # false表示不向注册中心注册自己
    fetch-registry: false          # false表示自己端就是注册中心,职责就是维护实例,并不需要去检索服务
    service-url:
      #  设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7002.com:7002/eureka/
  server:
    enable-self-preservation: true # eureka默认的保护机制,默认开启true  在此保护机制下,eureka不会因为微服务的突然停止而终止服务
    eviction-interval-timer-in-ms: 0  # eureka默认的保护机制踢除时间
@SpringBootApplication
@EnableEurekaServer// 开启Eureka注册服务中心
public class EurekaMain7001 {
   
    public static void main(String[] args) {
   
        SpringApplication.run(EurekaMain7001.class,args);
    }
}
cloud-provider-payment-8001生产者模块
server:
  port: 8001
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      #    defaultZone: http://localhost:7001/eureka    单机版
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka   # 集群版
  instance:
    instance-id: payment8001
    prefer-ip-address: true  # 访问路径可以显示IP地址
    # eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认30s)
    lease-renewal-interval-in-seconds: 1
    # eureka服务端在收到最后一次心跳后的等待时间上限,单位为秒(默认90s),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

#配置mybatis
mybatis:
  #设置别名
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: com.simple.springcloud.entities
  configuration:
    map-underscore-to-camel-case: true #开启这个的作用是可以让数据库中的p_Addr与pojo中的pAddr对应

@SpringBootApplication
@EnableEurekaClient // 通过注册中心进行访问
@Ena
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值