Spring Cloud 学习笔记
Posted Aisebil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 学习笔记相关的知识,希望对你有一定的参考价值。
Spring Cloud学习笔记
系统架构:集中式架构,垂直拆分,分布式服务,服务治理,微服务
集中式架构:把所有功能集中部署,低成本,但无法适用于稍复杂的系统
垂直拆分:通过将每个业务功能拆分来实现流量分担,每个模块也可单独优化且方便水平扩展,但会有很多重复工作,影响开发效率。
分布式服务:抽取核心业务作为独立服务,成为服务中心,并且将高复用率基础服务抽取出来,作为独立服务方便调取。提高了复用率的同时,因为调用关系会很复杂,所以增加了维护成本。
服务治理:SOA(Service Oriented Architecture)面向服务架构,每个服务完全独立存在,通过网络整合并使用各个服务。可以自由使用其他公司提供的现成的服务,但其服务粒度较大,难以获知其实现方式,导致运维,测试部署困难。所有服务通过一个通路通信,直接降低通信速度。
微服务:即每个小服务独立编写运行,粒度较小,使用轻量级机制通信如HTTP API,保持最低限度的集中式管理。
特点:单一职责(每个服务对应单一职责),面向服务(每个服务只需对外暴露接口API),自治(服务间互相独立,互不干扰)。
远程调用方法:
RPC:A计算机提供一个 服务,B计算机可以像调用本地服务那样调用A计算机的服务。所以较为便利,但相对死板。
HTTP:对服务的提供和调用方 没有任何技术限定,自由灵活,更符合微服务理念,可以使用当下热门的REST风格,但消息封装相对臃肿。
Spring Cloud
Spring Cloud是Spring旗下的项目之一,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。
Eureka:服务注册中心,可以是一个集群,负责注册管理各个服务,通过心跳机制监控每个服务,一旦出现问题,将被剔除。消费者通过向Eureka获取服务列表来调用其中某个服务。Eureka还提供了自我保护功能,一旦大部分(大概80%)的服务在短时间内失效(网络原因),Eureka就会把当前实例的注册信息保护起来,不予剔除。生产环境下这很有效,保证了大多 数服务依然可用。但开发阶段需要关闭。
Spring Cloud Gateway:提供网关基本功能:安全、监控/埋点、限流等。为微服务架构提供简单、有效且统一的API路由管理方式。他核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对 应的微服务。 Spring Cloud Gateway是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息, 从而加强安全保护。Spring Cloud Gateway本身也是一个微服务,需要注册到Eureka服务注册中心。
Gateway就是服务的统一入口。
Ribbon:负载均衡, 当同一服务作为集群存在,Ribbon提供了一个负载均衡算法,平衡各个服务节点的使用频率。其默认提供了轮询,随机等算法,我们也可以实现自定义负载均衡算法。
Feign:服务调用,优化了Rest请求的调用,无需拼接url,拼接参数等 等操作,一切都交给Feign去做,同时集成了Ribbon, Hystrix等功能。
Hystrix:熔断器,一旦某个服务出现了异常,许多用户请求都需要调用的该服务,请求便会阻塞,用户请求不会得到响应,则tomcat的线程不会释放,导致服务器资源耗尽,从而导致所有其它服务都不可用,形成 雪崩效应。
Hystrix提供了两种手段解决雪崩问题:
1.线程隔离:Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。 用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。
2.服务降级:优先保证核心服务。用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。
Spring Cloud Config分布式配置中心
为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、Gitee)。
可以通过配置Spring Cloud Bus、MQ并向其发送相应post请求以达到不关闭服务更新其配置文件。
以上是关于Spring Cloud 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章