ribbon技术分享(1)

@Value(“${server.port}”)

private String port;

@Value(“${spring.cloud.client.ip-address}”)

private String ip;

@GetMapping(“/{id}”)

public Product findById(@PathVariable Long id) {

Product product = productService.findById(id);

//设置端口

product.setProductDesc(“调用shop-service-product服务,ip:”+ip+",服务提供者端

口:"+port);

return product; }

(2) 服务消费者

修改服务消费者 shop_service_order模块中的启动类OrderApplication ,在创建RestTemplate方法上添加 @LoadBalanced 注解

/**

  • 基于Ribbon的服务调用与负载均衡

*/

@LoadBalanced

@Bean

public RestTemplate getRestTemplate() {

return new RestTemplate();

}

在 shop_service_order的OrderController 中添加下单方法,并使用RestTemplate完成服务调用

@Autowired

private RestTemplate restTemplate;

@GetMapping(“/buy/{id}”)

public Product order() {

//通过restTemplate调用商品微服务

//Product product =

restTemplate.getForObject(“http://127.0.0.1:9002/product/1”, Product.class);

Product product = restTemplate.getForObject(“http://shop-serviceproduct/product/1”, Product.class);

return product;

}

(3) 测试

浏览器中请求http://localhost:9001/order/buy/1查看展示效果如下,已经可以在订单微服务中已服务

名称的形式调用商品微服务获取数据

二、Ribbon进阶


1、负载均衡概述

在搭建网站时,如果单节点的 web服务性能和可靠性都无法达到要求;或者是在使用外网服务时,经常担心被人攻破,一不小心就会有打开外网端口的情况,通常这个时候加入负载均衡就能有效解决服务问题。

负载均衡是一种基础的网络服务,其原理是通过运行在前面的负载均衡服务,按照指定的负载均衡算

法,将流量分配到后端服务集群上,从而为系统提供并行扩展的能力。

负载均衡的应用场景包括流量包、转发规则以及后端服务,由于该服务有内外网个例、健康检查等功

能,能够有效提供系统的安全性和可用性。

服务端负载均衡

先发送请求到负载均衡服务器或者软件,然后通过负载均衡算法,在多个服务器之间选择一个进行访

问;即在服务器端再进行负载均衡算法分配

客户端负载均衡

客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配

2、 基于Ribbon实现负载均衡

搭建多服务实例

修改 shop_service_product 的 application.yml 配置文件,已profiles的形式配置多个实例

spring:

profiles: product1

application:

name: shop-service-product

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8

username: root

password: 111111

jpa:

database: MySQL

show-sql: true

open-in-view: true

cloud:

consul: #consul相关配置

host: localhost #ConsulServer请求地址

port: 8500 #ConsulServer端口

discovery:

#实例ID

instance-id: ${spring.application.name}-1

#开启ip地址注册

prefer-ip-address: true

#实例的请求ip

ip-address: ${spring.cloud.client.ip-address}

server:

port: 9002


spring:

profiles: product2

application:

name: shop-service-product

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8

username: root

password: 111111

jpa:

database: MySQL

show-sql: true

感受:

其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。

特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档

拿到字节跳动offer后,简历被阿里捞了起来,二面迎来了P9"盘问"

会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。

也祝愿各位同学,都能找到自己心动的offer。

分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档

[外链图片转存中…(img-Y5QwY8FA-1714442740425)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值