springcloud简单介绍

spring cloud 的 优缺点

优点: 市场主流框架
1.高并发
2.可以提供 API 公共的 一站式开发开箱即用 、
4.服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率
5.可以更精准的制定优化服务方案,提高系统的可维护性
6.微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
7.适于互联网时代,产品迭代周期更短
缺点:
缺点:
1、微服务过多,治理成本高,不利于维护系统
2、分布式系统开发的成本高(容错,分布式事务等)对团队挑战大
总的来说优点大过于缺点,目前看来SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务

介绍springcloud的插件

Eureka
Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。
eureka的原理 服务注册与发现 续约 本地是否拉取
Eureka Client:负责将这个服务的信息注册到Eureka Server中
Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号
Consul是什么
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
Nacos
Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
官方介绍是这样的:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
feign 原理
1 集成了ribbon
2.Feign的一个关键机制就是使用了动态代理
3.首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理
4.接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心
5.Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址
最后针对这个地址,发起请求、解析响应
ribbon
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。
它的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上
Hystrix
如果不使用Hystrix
微服务架构中恐怖的服务雪崩问题
1.如果系统处于高并发的场景下,大量请求涌过来的时候,订单服务的100个线程都会卡在请求积分服务这块。导致订单服务没有一个线程可以处理请求
2.然后就会导致别人请求订单服务的时候,发现订单服务也挂了,不响应任何请求了
Hystrix会搞很多个小小的线程池 他们都是独立的
降级: 就是当某个服务出现了异常 做出的手段 比如说:发送异常消息到本地日志里
给客户发送报警邮件,返回统一的页面 状态码
Hystrix是隔离、熔断以及降级的一个框架。
Hystrix会搞很多个小小的线程池
zuul 网关 做路由 过滤 限流
Zuul 是 Netflix 开源的微服务网关,Spring Cloud 对 Zuul 进行了整合和增强。在 SpringCloud 体系中,Zuul 担任着网关的角色,对发送到服务端的请求进行一些预处理,比如安全验证、动态路由、负载分配等。
Zuul 的核心是 Filters,根据执行时期分为以下几类:
PRE:这种过滤器在请求被路由之前调用
ROUTING:这种过滤器将请求路由到微服务
POST:这种过滤器在路由到微服务以后执行
ERROR:在其他阶段发生错误时执行该过滤
gateway:
1.Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用

总结

最后再来总结一下,上述几个Spring Cloud核心组件,在微服务架构中,分别扮演的角色:

Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里

Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台

Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题

Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

你可能感兴趣的:(springcloud简单介绍)