文章目录
(前置)远程调用一、Eureka注册中心1.1、搭建EurekaServer1.2、服务注册1.3、服务发现
二、Ribbon负载均衡2.1、配置负载均衡策略2.2、饥饿加载
三、nacos注册中心3.1、nacos安装3.2、nacos服务注册3.3、配置集群3.4、环境隔离3.5、非临时实例
(前置)远程调用
注册RestTemplate
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
通过url地址进行远程调用
String url = "http://localhost:8081/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
一、Eureka注册中心
1.1、搭建EurekaServer
创建新模块 引入eureka-server依赖
配置application.yml文件
server:
port: 10086 #指定eureka端口
spring:
application:
name: eurakaserver #eureka服务名称
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
1.2、服务注册
引入eureka-client依赖
配置application.yml文件
spring:
application:
name: orderservice
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
注册成功的服务可在EurekaServer中查看
1.3、服务发现
为RestTemplate添加@LoadBalanced注解
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
通过服务名称远程调用
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
String url = "http://userservice/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
order.setUser(user);
// 4.返回
return order;
}
二、Ribbon负载均衡
2.1、配置负载均衡策略
方式一、添加bean定义新的IRule
@Bean
IRule random() {
//配置负载均衡模式
return new RandomRule();
}
方式二、配置yml文件
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
2.2、饥饿加载
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务(可多选)
- userservice
服务默认懒加载,首次请求时花费的时间较多。
三、nacos注册中心
3.1、nacos安装
从GitHub主页下载 https://github.com/alibaba/nacos
nacos配置文件为conf目录下的application.properties。可修改端口等信息。
进入bin目录下控制台执行命令启动nacos
startup.cmd -m standalone
启动成功后可在网页中访问localhost:8848
3.2、nacos服务注册
父工程添加spring-cloud-alilbaba依赖
服务端添加nacos依赖
服务端配置文件
server:
port: 10086 #端口
spring:
application:
name: orderservice #服务名称
cloud:
nacos:
server-addr: localhost:8848 #nacos地址
discovery:
cluster-name: CLUSTER1 #集群(可选)
namespace: 44a2ce06-dfac-471f-8373-5b1864bea4ba #环境(可选)
ephemeral: false # 设置为非临时实例(可选)
启动服务
启动服务后可在nacos服务列表中查看服务信息。
3.3、配置集群
服务端配置文件
spring:
cloud:
nacos:
discovery:
cluster-name: CLUSTER1
根据集群负载均衡
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
配置负载均衡权重
权重越高被访问的频率越高,权重设置为0则完全不会被访问
3.4、环境隔离
添加命名空间 添加后会生成对应的空间ID,根据ID添加配置
spring:
cloud:
nacos:
discovery:
namespace: 44a2ce06-dfac-471f-8373-5b1864bea4ba
运行后可在网页中查看
3.5、非临时实例
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例(可选)
临时实例宕机时,会从nacos的服务列表中剔除,非临时实例不会
推荐链接
发表评论