- Spring Cloud构建微服务架构—服务消费Ribbon
- Spring Cloud构建微服务架构服务消费Ribbon
- Spring Cloud构建微服务架构-服务消费(Ribbon)
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- SpringCloud:服务的消费者 Ribbon
- Spring Cloud Ribbon 分析(二)之LoadBa
- Spring Cloud Ribbon 分析(三)之Ribbon
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- java版spring cloud+spring boot 社交
一、对比
RPC
远程过程调用,像调用本地方法一样调用服务器的服务
支持同步或异步
客户端和服务器之间建立TCP连接,可以一次建立一个,也可以多个调用复用一次连接
RPC数据包小
谷歌 protobuf 以二进制方式传输
比较复杂要进行:编码,解码,序列化,连接,丢包,拆包,组合,协议制定
Rest(HTTP)
HTTP请求,支持多种协议和功能
开发方便成本低
http数据包大
java 开发:HttpClient URLConnection
二、开发
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
在application种配置
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
修负载均衡改策略
/**
* 功能描述: 负载均衡策略
* RoundRobinRule:轮询
* RandomRule:随机
* AvailabilityFilteringRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,以及并发的连接数量
* 超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;
* WeightedResponseTimeRule: 根据平均响应时间计算所有服务的权重,响应时间越快,服务权重越大,被选中的机率越高;
* 刚启动时,如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够时,会切换到WeightedResponseTimeRule
* RetryRule: 先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务;
* BestAvailableRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;
* ZoneAvoidanceRule: 默认规则,复合判断server所在区域的性能和server的可用性选择服务器;
* @return : com.netflix.loadbalancer.IRule
* @author : big uncle
* @date : 2019/9/7 14:07
*/
@Bean
public IRule myRule(){
//自定义均衡策略
return new RandomRule();
}
实际调用
/**
* 订单消费服务
* @author shengwu ni
*/
@RestController
@RequestMapping("/consumer/order")
public class OrderConsumerController {
/**
* 订单服务提供者模块的 url 前缀
*/
// private static final String ORDER_PROVIDER_URL_PREFIX = "http://localhost:8001";
private static final String ORDER_PROVIDER_URL_PREFIX = "http://MICROSERVICE-ORDER";
@Resource
private RestTemplate restTemplate;
@GetMapping("/get/{id}")
public TOrder getOrder(@PathVariable Long id) {
return restTemplate.getForObject(ORDER_PROVIDER_URL_PREFIX + "/provider/order/get/" + id, TOrder.class);
}
}
网友评论