springcloud微服务全家桶实战

发布时间:2025-01-09 06:24

微信企业号提供全方位管理服务 #生活技巧# #职场生存技巧# #职场沟通软件#

目录

一、整体介绍

二、概念学习

2.1 SpringCloud

2.2 Eureka

2.3 Ribbon

​2.4 Feign

2.5 Hystrix

2.6 HystrixDashbord

2.7 Config

2.8 Zuul

2.9 Sleuth ZipKin

2.10 RabbitMQ

三、实战

3.1 springboot学习补充

3.11 Springboot配置获取

3.3.2 多环境配置

3.1.3 maven依赖文件下载慢问题的解决

3.1.4 怎样构建一个springboot项

3.2 Eureka

3.2.1 添加依赖

3.2.2 新增配置文件

3.2.3 添加注解

3.3.4 添加对peer1 peer2 的转换

3.3.5 测试

3.3 Ribbon

3.3.1 新建两个服务提供类

3.3.2 新建ribbonconsumer

3.4 Feign

3.5 Hystrix

3.5  Config

3.5.1搭建一个配置中心config-cloud

3.5.2 获取配置

3.6 zuul

3.7 Sleuth 和 Zipkin

3.7.1 添加依赖

3.7.2 新建zipkin项目

3.8 RabbitMQ 构建

3.8.1 安装Erlang

3.8.2 安装RabbitMQ

3.8.3 测试登录

3.8.4 测试连接RabbitMQ

3.9 Spring 整合 RabbitMQ

一、整体介绍

这个项目是学习SpringCloud的项目,首先您应该先从github上(https://github.com/kzdw/springcloud)拉取此项目导入到自己的idea中。

下面是对每个moudle介绍,如果你是第一次接触SpringCloud,可以先忽略这部分介绍。

直接进入到概念学习。

1.1  eurekaserver1、eurekaserver2 是eureka注册服务中心,两者形成集群

1.2 serverprovider9001、serverprovider9002 两个提供服务的moudle主要提供给feignconsumer 和    ribbonconsumer 消费使用,两者形成集群

1.3  ribbonconsumer 示例使用负载均衡,失败重试,ping等功能

1.4  feignconsumer 示例怎么样使用feign优雅地调用其他微服务

1.5 hystrix-dashboard 示例怎样搭建一个hystrix的界面化面板

1.6 config-cloud 示例怎样创建一个配置服务中心,连接git,为其他moudle提供配置服务

1.7 config-cloud-client 示例怎样连接配置中心

1.8 zuul 示例怎样使用zuul实现微服务的统一访问

1.9 zipkin-server 示例怎样界面化展示微服务调用链(数据是由sleuth提供)

1.10 rabbitmq-demo 示例怎样使用RabbitMQ

1.11 rabbitmq-handler、rabbitmq-message-sender 示例rabbitMq和springboot整合

二、概念学习

2.1 SpringCloud

      微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库。   比如:项目里面有serverprovider9001模块和ribbonconsumer 模块,但是ribbonconsumer 模块和ribbonconsumer 模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以吧这2个模块单独分开来,当ribbonconsumer 需要调用serverprovider9001的时候,serverprovider9001是一个服务方,但是serverprovider9001需要调用ribbonconsumer 的时候,ribbonconsumer 又是服务方了, 所以,他们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务。可以理解为一个卖裤子的老板和一个卖衣服的老板,他们都是独立的,只是能提供这个服务而已,谁需要被人的产品(服务),那么自己就是消费者,别人就是服务方

      微服务只是一种项目的架构方式,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring-Cloud便是对这种技术的实现。

2.2 Eureka

2.1 基本概念

     Eureka简单的说就是服务的注册于发现。

     Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

      而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑

2.2 Eureka 高可用

 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

2.3 Ribbon

Ribbon 主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

2.4 Feign

     Feign可以优雅地调用其他微服务。Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

     在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量。

2.5 Hystrix

     Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

      “断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩

降级,超时 :

 我们先来解释一下降级,降级是当我们的某个微服务响应时间过长,或者不可用了,讲白了也就是那个微服务调用不了了,我们不能把错误信息返回出来,或者让他一直卡在那里,所以要在准备一个对应的策略(一个方法)当发生这种问题的时候我们直接调用这个方法来快速返回这个请求,不让他一直卡在那 。

熔断,限流:

 讲完降级,我们来讲讲熔断,其实熔断,就好像我们生活中的跳闸一样, 比如说你的电路出故障了,为了防止出现大型事故 这里直接切断了你的电源以免意外继续发生, 把这个概念放在我们程序上也是如此, 当一个微服务调用多次出现问题时(默认是10秒内20次当然 这个也能配置),hystrix就会采取熔断机制,不再继续调用你的方法(会在默认5秒钟内和电器短路一样,5秒钟后会试探性的先关闭熔断机制,但是如果这时候再失败一次{之前是20次} 那么又会重新进行熔断) 而是直接调用降级方法,这样就一定程度上避免了服务雪崩的问题

2.6 HystrixDashbord

     Hystrix(注意 是单纯的Hystrix) 提供了对于微服务调用状态的监控(信息), 但是,需要结合

 spring-boot-actuator 模块一起使用来通过可视化界面直观查看。HystrixDashbord主要就是进行图形化。

     实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,它的健康度从绿色

该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,就可以在大量的实例中快速的发现故障实例和高压力实例。

曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势。

整图解释:

2.7 Config

我们既然要做项目, 那么就少不了配置,传统的项目还好,但是我们微服务项目, 每个微服务就要做独立的配置, 这样难免有点复杂, 所以, config项目出来了,它就是为了解决这个问题: 把你所有的微服务配置通过某个平台:

比如 github, gitlib 或者其他的git仓库 进行集中化管理(当然,也可以放在本地).

网址:springcloud微服务全家桶实战 https://www.yuejiaxmz.com/news/view/674380

相关内容

JHCV/校园生活服务平台(springcloud+微信小程序+vue)
基于springcloud实现微服务小区实现生活服务平台演示【附项目源码+论文说明】
基于微服务的社区团购平台设计与实现
垃圾桶盖装拉环细微之处强服务
阜阳微服务攻略:揭秘12项实用技能,轻松应对现代生活挑战
基于SpringCloud微服务车辆管理系统
家庭服务机器人 -挑战杯
基于人工智能的智慧校园助手(springboot+springcloud+redis+vue+vant ui+element ui+mysql+Elasticsearch+RabbitMQ项目)
邻里互助,智慧生活:揭秘社区微服务的多重益处与挑战
杭州马桶消毒液批发 服务为先「上海佳蒙实业供应」

随便看看