Spring Cloud初步学习

Spring Cloud: 分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。

Spring Cloud 对应 Spring Boot详细版本查看:https://start.spring.io/actuator/info

Spring Boot 与 Spring Cloud 对应版本的确定:
![](/images/Spring Boot 与Spring Cloud技术选择.jpg)

服务注册中心:Eureka, Zookeeper, Consul, Nacos

服务调用:Ribbon, LoadBalancer

服务调用2:Feign, OpenFeign

服务降级:Hystrix, resilience4j, sentienl

服务网关:Zuul, Zuul2, gateway

服务配置:Config, Nacos, 携程阿波罗

服务总线:Bus, Nacos

创建工程:
约定 > 配置 > 编码

首先处理好项目环境: File Encoding

项目注解生效激活: Annotation Processor

Java编译版本选择:Java Compiler

文件类型过滤:File Types

POM文件相关:
dependencyManagement:锁定版本,子模块不用重写版本号,需要其他版本只需要子模块单独定义即可,好处:全工程的jar包统一,并不实现引入,只是全局声明引入的版本号

Maven中跳过单元测试:

微服务模块

1.建Module
2.改POM
3.写YML
4.主启动
5.业务类

什么是服务治理:
Spring Cloud 封装了Netflix公司开发的Eureka模块来实现服务治理

在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂

服务注册:

服务发现:

eureka自我保护机制:

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

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

官网资料:https://github.com/Netflix/ribbon/wiki/Getting-Started

源码:https://github.com/Netflix/ribbon

LB负载均衡(Load Balance)是什么
简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。
常见的负载均衡有软件Nginx,LVS,硬件F5等。

Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡区别
Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求,及负载均衡是由服务器端实现的

Ribbon本地负载均衡,在调用微服务接口的时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

集中式LB

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如nginx),由改设市负责把访问请求通过某种策略转发至服务提供方

进程内LB

将LB逻辑集成到消费方,消费方从服务注册中心获取有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

Ribbon就属于进程内的LB,它就是一个类库,集成于消费发进程,消费方通过它来获取到服务提供方地址。

一句话:负载均衡 + RestTemplate调用

架构说明:Ribbon其实就是一个软负载均衡客户端组件,它可以和其他所需请求的客户端结合使用,和eureka结合只是其中的一个实例。

Feign:是一个声明式的web服务客户端,让编写Web服务客户端变得非常容易,

OpenFeign: