3 服务调用 Ribbon、OpenFeign
负载均衡服务调用 RibbonRibbon介绍Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具,Ribbon主要提供客户端的软件负载均衡算法和服务调用Ribbon客户端组件提供一系列完善的配置项(如连接超时、重试)
在配置文件中列出Load Balancer所有的机器,Ribbon自动帮你基于某种规则,连接这些机器
Ribbon功能
负载均衡:将用户的请求平摊分配到多个服务器上,从而达到高可用(常见的负载均衡软件有Nginx、LVS、硬件F5)
集中式LB:在服务的消费方和提供方之间使用独立的LB设施,由该设施负责把访问请求通过某种策略转发至服务的提供方
进程内LB:将LB逻辑集成到消费方,消费方从服务注册中心获知哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器
Ribbon属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它获取到服务提供方的地址
负载均衡+RestTemplate调用
补充:
Ribbon本地负载均衡客户端VS. Nginx服务端负载均衡
Nginx是服务器负载均衡,客户端所 ...
2 服务注册与发现 Eureka、Zookeeper、Consul
Eureka基础知识
服务治理
Spring Cloud封装 了Netfilx开发的Eureka模块实现服务治理
传统RPC远程调用框架中,管理服务之间依赖关系较为复杂,因此使用服务治理管理该关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
服务注册与发现
Eureka采用C/S设计架构,Eureka Server作为服务注册功能的服务器,属于服务注册中心,而系统中其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接,这样系统的维护人员可以通过Eureka Server来监控系统中各个微服务是否正常运行
在服务注册发现中,有一个注册中心。当服务器启动时,会把当前主机服务器的信息(如服务器地址、通讯地址等)以别名方式注册到注册中心上,另一方(消费者|服务提供者),以该别名方式去注册中心获取实际的服务通讯地址,然后实现本地RPC调用
Eureka两个组件:Eureka Server和Eureka Client
Eureka Server 提供服务注册
每个微服务节点启动后,会在Eureka Server中进行注册,Eureka Serv ...
1 微服务入门
微服务概念
[引用]
Microservice architectures are the ‘new normal’. Building small, self-contained, ready to run applications can bring great flexibility and added resilience to your code. Spring Boot’s many purpose-built features make it easy to build and run your microservices in production at scale. And don’t forget, no microservice architecture is complete without Spring Cloud ‒ easing administration and boosting your fault-tolerance.
[说明]
微服务是一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
每个服 ...
企业开发进阶-7-Distributed-Microservices
在了解分布式微服务之前,请先了解Dubbo的核心思想。
SpringCloud 全家桶
1 微服务入门
2 服务注册与发现 Eureka、Zookeeper、Consul
3 服务调用 Ribbon、OpenFeign
4 服务熔断与降级 Hystrix
5 服务网关 Gateway
6 服务配置 Config
7 消息总线 Bus
8 消息驱动 Stream
9 分布式请求链路追踪 Sleuth
SpringCloudAlibaba 全家桶
SpringCloud Alibaba
中文文档
服务限流降级:默认支持Servlet、Feign、RestTemplate、Dubbo和RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控
服务注册与发现:适配Spring Cloud服务注册与发现标准,默认集成Ribbon的支持
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新
消息驱动能力:基于SpringCloudStream为微服务应用构建新消息驱动能力
阿里云对象存储:阿里云提供的海量、安全、低 ...
8 RabbitMQ-PublishConfirms
Publisher confirms 是 RabbitMQ 实现可靠发布的扩展。当在信道上启用 publisher confirms时,客户端发布的消息将由代理异步确认,这意味着它们已在服务器端得到处理。
在本教程中,我们将使用 publisher confirms 来确保发布的消息已安全到达代理。我们将介绍使用发布者确认的几种策略,并解释它们的优缺点。
Enabling Publisher Confirms on a Channel Publisher confirms 是对 AMQP 0.9.1 协议的 RabbitMQ 扩展,因此默认情况下不会启用。 Publisher confirms 是通过 confirmSelect方法在通道级别启用的:
12Channel channel = connection.createChannel();channel.confirmSelect();
必须在预期使用 publisher confirms 的每个通道上调用此方法。确认功能只应启用一次,而不是发布的每条信息。
Strategy #1: Publishing Messages In ...
7 RabbitMQ-RPC
在本篇中我们将使用 RabbitMQ 构建一个 RPC 系统:一个客户端和一个可扩展的 RPC 服务器。由于我们没有任何值得分发的耗时任务,因此我们将创建一个返回斐波那契数字的虚拟 RPC 服务。
Client interface为了说明如何使用 RPC 服务,我们将创建一个简单的客户端类。它将公开一个名为 call的方法,该方法发送 RPC 请求并阻塞,直到收到应答为止:
123FibonacciRpcClient fibonacciRpc = new FibonacciRpcClient();String result = fibonacciRpc.call("4");System.out.println( "fib(4) is " + result);
Callback queue一般来说,通过 RabbitMQ 进行 RPC 非常简单。客户端发送请求消息,服务器回复响应消息。为了接收响应,我们需要随请求发送一个callback队列地址。我们可以使用默认队列。
12345678910callbackQueueName = channel. ...










