文章目录

(前置)远程调用一、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依赖

org.springframework.cloud

spring-cloud-starter-netflix-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依赖

org.springframework.cloud

spring-cloud-starter-netflix-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依赖

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.2.5.RELEASE

pom

import

服务端添加nacos依赖

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

服务端配置文件

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的服务列表中剔除,非临时实例不会

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: