提供了多种便捷访问远程 Http 服务的方法。
是一种简单便捷的访问 restful 服务模板类,是 Spring 提供的用于访问 Rest 服务的客户端模板工具类集。
SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。
在传统的 RPC 远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
Eureka 采用了 CS 的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server 并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。
保护模式主要用于客户端和 Eureka Server 之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server 将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
为了防止 EurekaClient 可以正常运行,但是与 EurekaServer 网络不通情况下,EurekaServer 不会立刻将 EurekaClient 服务剔除。自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可保留所有微服务也不盲目注销任何健康的微服务。使用自我保护模式,可以让 Eureka 集群更加健壮、稳定。
提供了微服务系统中的服务治理、配置中心、控制总线等功能。
Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具。
提供一系列完善的配置项如:连接超时、重试等。
简单的说,就是在配置文件中列出 Load Balancer 后年所有的机器,Ribbon 会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。
Feign 是一个声明式 WebService 客户端,使用 Feign 能让编写 Web Service 客户端更加简单。
它的使用方法是定义一个服务接口然后在上面添加注解。
Feign 内置了 Ribbon。
用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix额能保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
功能:
为微服务架构中的微服务提供集中化的外部配置支持。
是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了 Java 的事件处理机制和消息中间件的功能。
目前支持 RabbitMQ 和 Kafka。
在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便的广播一些需要让其他连接在该主题上的实例都知道的消息。
屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。
应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中的 binder 对象交互。
通过我们配置来 binding(绑定),而 Spring Cloud Stream 的 binder 对象负责与消息中间件交互。
naming+configuration+service
注册中心+配置中心
支持AP CP切换
Nacos 默认使用嵌入式数据库实现数据的存储。所以启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。
为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 的存储。
面向原生微服务的流量控制、熔断降级组件
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题
是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
1+3组件模型:
全局唯一的事务ID
TC:事务协调器。维护全局和分支事务的状态,驱动全局事务提交或回滚
TM:事务管理器。定义全局事务的范围:开启全局事务、提交或回滚全局事务
RM:资源管理器。管理分支事务处理的资源,与 TC 交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
步骤:
AT 模式两阶段提交协议: