SpringCloud学习笔记

1. SpringCloud 与SpringBoot的关系

  1. SpringBoot专注与微服务的构建,SpringCloud是用于治理微服务,为微服务提供:配置管理,服务发现,路由等服务。

  2. SpringBoot可以离开SpringCloud,但SpringCloud离不开SpringBoot

2.大体网站架构图

网站运行流程.png

解释:

  1. NDS(Content Distribution Service): 就是负责缓存一些网站数据,用户不用直接去源网站获取数据,而是去离自己较近的服务器拿就行

  2. LVS(Linux Virtual Server): Linux 虚拟服务

  3. NGINX: 用于负载均衡,反向代理

3. Dubbo与SpringCloud对比

Dubbo SpringCloud
服务注册中心 Zookeeper Spring Cloud Netflix Eureka
服务调用方式 RPC REST API
服务监控 Dubbo-monitor SpringBoot Admin
断路器 不完善 Spring Cloud Netflix Hystrix
服务网关 无 Spring Cloud Netflix zuul
分布式配置 无 Spring Cloud Config
服务跟踪 无 Spring Cloud Sleuth
消息总线 无 Spring Cloud Bus
数据流 无 Spring Cloud Stream
批量任务 无 Spring Cloud Task

SpringCloud官网

SpringCloud中文Api

SpringCloud中文文档

套路

  1. 导入依赖

  2. 编写配置文件

  3. 注解开启功能

  4. 编写配置类

4. Eureka 服务注册与发现

Eureka.png

5. Eureka与Zookeeper

CAP:Consistency(强一致性),Available(可用性),Partition Tolerance(容错性)

一个系统最多满足两项

5.1 Eureka(AP)

Eureka所有节点都是平等的,即使down掉某个节点,只要存在一个可用节点便可继续使用。除此之外,Eureka还有自我保护机制,若是15分钟检测到85%以上的节点没有心跳,Eureka就认为网络发生问题了。就会采用下面措施。

  1. 不移除没有心跳的服务

  2. 接受新的服务注册,但不会同步

  3. 网络稳定时,同步到其他节点

5.2 zookeeper(CP)

zookeeper存在一个主节点,若是down掉,这会在其他节点选取出一个主节点,期间网络不可用。zookeeper可保证每一次的访问请求都能得到一致性的结果

6. Ribbon

Ribbon.png

6.1 基础理解

Ribbon能做负载均衡,也就是请求平摊给多台机器,系统达到高可用的状态

常见的负载均衡软件有nginx,lvs等

负载均衡的分类:

1)集中式LB: 消费方与提供方由某个独立的设施进行负载均衡,如nginx,只把请求用某种策略分发给服务方

2)进程式LB: 消费方去注册中心找到可用的提供方地址,然后自己选用合适的算法去调用。

6.3 负载均衡算法

负载均衡算法.png

个别解释:

  1. AvailabilityFilteringRule: 过滤掉无用的服务,剩下轮询

  2. RoundRobinRule: 轮询

7. Feign

Feign也是用于负载均衡, 但不同的是不用去写一个RestTemplate,直接面向接口编程

8. Hystrix

Hystrix是用于解决服务熔断的开源库,服务发生异常时,可调用备选方案

8.1 服务熔断

服务在遇到异常情况时,调用备选方案。如,数据库查询不到数据,用户访问异常,若是有服务熔断就可以调用备选方案,告诉用户只是找不到数据,不抛异常这种方式会更加友好。

8.2 服务降级

当遇到秒杀时,服务器的并发量较高时,可以暂停某些无关的服务,让服务器能以减少负担。

8.3 服务监控

9. Zuul(路由网关)

需要注册进Eureka

9.1 路由

Zuul就是将请求统一管理,可进行路由转发。

9.2 过滤

请求校验,可将Eureka服务名进行隐藏,只暴露设置的标识符。

10. SpringCloud Config(配置)

由于每个微服务都有自己配置application.yml, 没有集中管理的话,修改特别麻烦。

可以将本地的配置文件如.yml,上传到远端如github,通过SpringCloudConfig里的Server进行读取,那么我们本地只需访问Server读取配置文件,加载就行。

springcloudconfig.png

本人的Github博客

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容