博客
关于我
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/

你可能感兴趣的文章
python 学习 面向对象编程
查看>>
Python 学习小结
查看>>
Python 学习日记第三篇 -- 字典
查看>>
Python 学习笔记(一)Data type
查看>>
python 安装 easy_install 和 pip 流程
查看>>
python 安装echarts
查看>>
python 安装opencv及问题解决
查看>>
Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
查看>>
Python 安装避坑指南:从入门到进阶
查看>>
Python 安装配置详解
查看>>
python 实现儿童算术游戏
查看>>
python 实现字符串转整型
查看>>
Python 实现定时任务的八种方案!
查看>>
python 实现将RGBA 转换为RGB
查看>>
python字符串与url编码的转换
查看>>
Python 实现自动化测试 dubbo 协议接口
查看>>
python编程基础之十六
查看>>
python字符串input输入_Python input()函数:获取用户输入的字符串
查看>>
python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
查看>>
Python 对mysql数据库的操作
查看>>