发表于: 2021-04-27 23:31:42

1 1269


今天完成的事情:
springboot+redis

学习springcloud



明天计划的事情:

实现spring cloud各个组件



遇到的问题:

暂无



收获:


springboot整合redis比较简单,不用像之前spring+redis配置的步骤那么多步
1.导入依赖
2.进行配置
3.封装工具类

4.进行调用。



springCloud是什么?
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务

Spring Cloud基于Spring Boot,springCloud为了解决集群和分布式当中出现的问题提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。




 介绍一个springcloud的实际应用场景



备注:

下面的库存服务,仓储服务,积分服务分别存放在多个服务器上



=========
=========



1.Eureka  服务注册和发现

相当于一个电话簿
1.解决   注册服务器信息和发现各个服务器的位置
2.相当于spring RMI的注册中心
先注册,后调用
Eureka Client:将服务注册到Eureka Server

Eureka Server:保存各个服务的注册信息




===========

=============
=============



2.Feign  声明式调用

1.减少重复的样式代码,方便调用服务

2.Feign底层使用了动态代理机制,还不太了解动态代理机制



不用Feign需要写的代码:

============

=============
=============



用Feign之后的代码:

==============

=================
================



3.Ribbon  负载均衡

先假设仓储服务分布在多台服务器上,那么这个时候,一个请求发过来了,它怎么知道送到那台服务器上呢?
1.Ribbon采用了nginx类似的方案,负载均衡,默认使用轮询。

2.Ribbon的运用过程:   Eureka找到服务->  Ribbon,选择其中一个服务器  ->  Feign 建立连接、构造请求、发送请求、获取响应、解析响应



================
================

==============
==============



4.Hystrix  熔断器

1.解决高并发的场景下,线程都卡在积分服务请求过程中,这样会导致其他服务没有一个线程可以处理请求,发现其他服务也都挂了,不响应任何请求了(简称服务雪崩),想到这个过程不是在Feign中吗?为什么不在Feign中进行管控?可能是这些重复的代码过多了,于是把这些代码提取出来,构建成了一个部件,以方便掌控,感觉所以的服务都这样


2.解决方案,在调取的服务中间创建一个连接池,设置在请求过程中如果超过了五分钟,就对这个这个服务进行熔断处理并进行降级(记录请求过程中的信息,将来手动进行恢复)



=============



===========

==============
==============



5.Zuul  路由网关

1.统一管理:不管是(PC端或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuu这个网关,然后再由网关来实现鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。感觉Zuul就是大脑了


2.Zuul网关之后,可以做统一的降级、限流、认证授权、安全,等等

================
================

还有Config(配置中心), Sleuth(服务链路追踪),  Admin(监控),   Security(安全)

OAuth2和 JWT 保护微服务架构系统等等  这些都没了解  


总结:


spring Cloud 和 RPC框架的区别

spring Cloud中的Eureke和Feign就相当于一个RPC框架,此外spring cloud还提供了多个组件,就是为了解决分布式调用过程中出现的问题,是这些问题的一整套解决方案。





返回列表 返回列表
评论

    分享到