SpringCloud—Netflix(五大神兽)
学习目标
★Ø 微服务、分布式概念、微服务架构
Ø 注册中心:Eureka
Ø 负载均衡:Ribbon
Ø 声明式调用远程方法:OpenFeign
Ø 熔断、降级、监控:Hystrix
★Ø 网关:Gateway
Ø 链路跟踪:Sleuth
★Ø 服务注册和配置中心:Spring Cloud Alibaba Nacos
★Ø 熔断、降级、限流:Spring Cloud Alibaba Sentinel
开发步骤
-
建module
-
改POM(导入依赖)
-
写YML(编写配置文件)
-
主启动(开启功能@Enablexxxx)
-
(配置类)
-
业务类
一 微服务理论和 微服务架构
1.1 微服务
强调的是服务的大小,他关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义上看,可以看作是IDEA中的一个个微服务工程,或者是Moudel
1. 2 微服务架构
微服务架构是一种架构模式 ,或者说是一种架构风格 , 它提倡将单一的应用程序划分为一组小的服务, 每个服务运行在其独立的自己的进程内, 服务之间的通信互相协调, 互相配置 为用户提供 最终的价值,
服务之间采用轻量级的通信机制互相沟通, 每个服务都围绕着具体的业务进行构建 ,并且能够独立部署到生产环境中, 另外, 应尽量避免统一的 集中式服务管理机制… 对具体的一个服务而言, 应根据业务的上下文, 选择合适的语言,工具对其进行开发构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
从技术维度来理解下:
微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行独立启动或销毁,拥有自己的数据库。
1. 3 微服务优缺点![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c80828c96b26056954d33e9850ee37ba.png)
二. 什么是Spring cloud
2. 1 spring boot和Spring Cloud 之间的关系![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ec099b131e384716f23b3db2bacce931.png)
2. 2 Spring Cloud 可以干嘛?
2.3 RestTemplate
- 是什么
RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问Restful服务模板类,是Spring 提供的用于访问Rest服务的客户端模板工具集
使用RestTemplate访问Restful接口非常的简单粗暴无脑。(url,requestMap,ResponseBean.class)这三个参数分别代表REST请求地址、请求参数、Http响应转换被转换成的对象类型。
三.Eureka服务注册与发现
Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。
什么是服务治理
SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。
在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂、所以需要进行服务治理,管理服务与服务之间依赖关联,以实现服务调用,负载均衡、容错等,实现服务发现与注册。
什么是服务注册
Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。
而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员可以通过Eureka Server来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息,比如:服务通讯地址等以别名方式注册到注册中心上。
另一方(消费者服务),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后,再实现本地RPC远程调用。
RPC远程调用框架核心设计思想
在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。
在任何RPC远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))。
3.1 Eureka两组件
Eureka Server提供服务注册服务
各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
EurekaClient通过注册中心进行访问
是一个Java客户端,用于简化Eureka
Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会在Eureka
Server发送心跳(默认周期30秒)。如果Eureka
Server在多个心跳周期内没有收到某个节点的心跳,Eureka