springclod_入门
程序员文章站
2022-03-26 18:07:28
万事开头难,先搞清楚几个名词 集群: 定义 通过多台计算机完成同一个工作,达到更高的效率。 两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。 例子 例如abc3个人一起开发java 部署的项目随着访问人数越来越多,性能越来越差怎么办,再买台服务器,把这个项目再部署到新的环境里 分布式: 定义 一个业务分拆....
万事开头难,先搞清楚几个名词
集群:
定义
通过多台计算机完成同一个工作,达到更高的效率。
两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。
例子
例如abc3个人一起开发java
部署的项目随着访问人数越来越多,性能越来越差怎么办,再买台服务器,把这个项目再部署到新的环境里
分布式:
定义
一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)
多个计算机完成各自独立的模块从而构建一个系统的应用
模块之间独立,各做各的事,便于扩展,复用性高
高吞吐量
例子
a负责前段,b负责后端,c负责数据库
某个任务需要一个机器运行10个小时,将该任务用10台机器的分布式跑,
将这个任务拆分成10个小任务,可能2个小时就跑完了
分布式集群
定义:
既有分布式,又有集群
例子:
5个小伙子写Java,4个小伙子写前端,2个小伙子做测试
springcloud
在搞清楚了集群,分布式之后,springcloud自然就懂了
就是给集群/分布式,微服务提供一整套的实现方案的,牛不牛逼!
SpringCloud的基础功能:
服务治理: Spring Cloud Eureka
场景:
解决子系统直接互相调用接口,如果其中一个ip改变了,手动维护静态Ip简直是噩梦的问题
实现:
建立一个独立于所有其他微服务的E服务,这里注册所有微服务的ip,接口,其他服务不再通过ip调用,而是通过e服务的清单来调用,通过不太会变得服务名找到Ip
客户端负载均衡: Spring Cloud Ribbon
场景:
解决集群之间如何做到负载均衡的功能
例子:
一个双11秒杀系统准备上线,3个集群,如何才能做到在当天将高并发请求均衡的分配到3台服务器上呢
实现:
Ribbon采用客户端负载均衡,客户端可以从Eureka Server中得到一份服务清单,
在发送请求时通过负载均衡算法,在多个服务器之间选择一个进行访问)
服务容错保护: Spring Cloud Hystrix
场景:
在高并发的情况下,由于单个服务的延迟,可能导致所有的请求都处于延迟状态,
甚至在几秒钟就使服务处于负载饱和的状态,资源耗尽,直到不可用,
最终导致这个分布式系统都不可用,这就是“雪崩”。
实现:
Hystrix通过断路器、线程隔离等措施
简而言之,它能够监控整个系统的请求,如果某个微服务的请求中断,熔断器中断,后续对该服务请求会直接返回状态码。过一段时间再回复熔断器
声明式服务调用: Spring Cloud Feign
场景
Ribbon和Hystrix作为基础工具类框架广泛地应用在各个微服务的实现中。
为了简化我们的开发,Spring Cloud Feign出现了
整合了Ribbon 与 Hystrix,还提供了声明式的服务调用(不再通过RestTemplate)。
Feign是一种声明式、模板化的HTTP客户端。
在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,
开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
API网关服务:Spring Cloud Zuul
场景:
所有的服务都需要权限校验,荣誉
实现:
Zuul整合Eureka,将自身变成服务治理框架,同时所有外层调用走网关,使得维护和校验由自己实现,类似于sso单点登录
分布式配置中心: Spring Cloud Config
场景:
随着业务的扩展,我们的服务会越来越多,越来越多。每个服务都有自己的配置文件。
10个集群的配置文件,一个改动,都得改动
在分布式系统中,某一个基础服务信息变更,都很可能会引起一系列的更新和重启
实现:Spring Cloud Config就是将配置文件放到统一的位置管理(比如GitHub),客户端通过接口去获取这些配置文件。
本文地址:https://blog.csdn.net/m0_37840243/article/details/107387131
上一篇: 项目开发中如何定义Redis 使用规范
下一篇: 代理服务器的类型有哪些?