博客
关于我
Nacos作为服务注册中心演示
阅读量:115 次
发布时间:2019-02-26

本文共 4036 字,大约阅读时间需要 13 分钟。

基于 Nacos 的服务提供者与消费者配置

服务提供者配置

1. 模块创建

在父工程下新建一个module,命名为 cloudalibaba-provider-payment-9001

2. 依赖项添加

在项目的 pom.xml 中添加以下依赖:

com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery

3. 服务注册配置

application.yml 中添加以下内容:

server:    port: 9001spring:    application:        name: nacos-payment-provider    cloud:        nacos:            discovery:                server-addr: 172.28.129.83:8848            management:                endpoints:                    web:                        exposure:                            include: '*'

4. 主启动类

创建一个主启动类 PaymentApplication9001

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class PaymentApplication9001 {    public static void main(String[] args) {        SpringApplication.run(PaymentApplication9001.class, args);    }}

5. 业务接口开发

创建 PaymentController

import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class PaymentController {    @Value("${server.port}")    private String serverPort;    @GetMapping(value = "/payment/nacos/{id}")    public String getPayment(@PathVariable("id") Integer id) {        return "nacos registry, serverPort: " + serverPort + "\t id=" + id;    }}

服务消费者配置

1. 模块创建

在父工程下新建一个module,命名为 cloudalibaba-provider-payment-9002

2. 服务发现配置

修改 application.yml 中的端口号为 9002,并保留服务发现地址:

server:    port: 9002spring:    application:        name: nacos-payment-provider-9002    cloud:        nacos:            discovery:                server-addr: 172.28.129.83:8848

3. 主启动类

创建一个主启动类 PaymentApplication9002

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class PaymentApplication9002 {    public static void main(String[] args) {        SpringApplication.run(PaymentApplication9002.class, args);    }}

负载均衡演示

1. 消费者配置

新建一个module,命名为 cloudalibaba-consumer-nacos-order-83

2. 服务发现配置

application.yml 中添加以下内容:

server:    port: 83spring:    application:        name: nacos-order-consumer    cloud:        nacos:            discovery:                server-addr: 172.28.129.83:8848            service-url:                nacos-user-service: http://nacos-payment-provider

3. 负载均衡实现

创建 ApplicationContextConfig

import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;@Configurationpublic class ApplicationContextConfig {    @Bean    @LoadBalanced    public RestTemplate restTemplate() {        return new RestTemplate();    }}

创建 OrderNacosController

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;@RestController@Slf4jpublic class OrderNacosController {    @Resource    private RestTemplate restTemplate;    @Value("${service-url.nacos-user-service}")    private String serverURL;    @GetMapping(value = "/consumer/payment/nacos/{id}")    public String paymentInfo(@PathVariable("id") Long id) {        log.info("请求路径: /consumer/payment/nacos/{}", id);        return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class);    }}

4. 测试验证

通过访问 http://localhost:83/consumer/payment/nacos/1,可以看到服务请求会自动切换到不同提供者的实例,说明 Nacos 已成功进行负载均衡。

转载地址:http://jhfk.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
查看>>
OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
查看>>
OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
查看>>
OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
查看>>
VS2003 Front Page Server Extension
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
查看>>
OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
查看>>
OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
查看>>
OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
查看>>
OpenCV与AI深度学习 | 如何使用YOLO-World做目标检测
查看>>
OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象
查看>>