springcloud3 Nacos的服务搭建和生产消费调用案例(含工程代码说明)

一 nacos

1.1 nacos概念

Nacos是服务注册发现中心+配置中心的组合。比eurka实现的功能更加强大。

nacos默认均有负载均衡的功能,集成了netflix的ribbon代码包。

代码地址:

https://gitee.com/jurf-liu/mscloud-2022.git

1.2 nacos与其他进行对别

 1.3 nacos的配置

1.4  namespace和group和dataid之间的关系

二  nacos的安装搭建

2.1 软件包下载

1.软件包下载地址 :home

2.找到对应版本,进行下载 

2.2 nacos的安装

2.2.1 附件数据库

1.加压软件包后,进入到目录 nacos/conf/nacos-mysql.sql  找到这个sql文件进行附件。

2.先创建一个数据库,名字为nacos,将sql脚本进行附件数据库

 2.2.2 修改启动脚本

进入bin目录下,修改 startup.cmd文件,在本地运行是需要改成standalone模式

 2.2.3 修改数据库连接配置文件

在config目录下,修改application配置文件中数据库的连接信息

 2.2.4 启动服务

2.3 nacos页面访问

页面进行访问:  http://localhost:8848/nacos

用户名和密码为: nacos/nacos

进入页面

1.添加一条数据

2.在mysql数据库中查看 

三  nacos的生产消费案例

3.1 架构

3.2  生产提供服务模块7001

3.2.1 生产提供模块结构

在主工程新建一个模块,如下图

 3.2.2 pom文件

配置pom文件的依赖

<!--SpringCloud ailibaba nacos -->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

3.2.3 配置文件

server:
  port: 7001
#服务名称
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
#暴露所有监控信息为HTTP
management:
  endpoints:
    web:
      exposure:
        include: '*'

3.2.4 启动类

@EnableDiscoveryClient
@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        //System.out.println( "Hello World!" );
        SpringApplication.run(App.class, args);
        System.out.println("================nacos7001服务启动成功!!!!");
    }
}

3.2.5 业务类

/**
 * @auther zzyy
 * @create 2020-02-23 14:13
 */
@RestController
public 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;
    }
}

3.2.6 启动查看结果

1.服务启动

 2.nacos页面

3.3  生产提供服务模块7002

3.3.1 复制一份服务

将服务模块7001复制一份变为7001,如下

2.需要将此7002服务添加到主服务中

3.主工程的pom文件中添加此模块的声明

 3.3.2 修改一些配置

1.端口号

 2.配置文件中端口

 3.3.3 将服务均启动

可以看到两个服务提供者:7001和7002

1.服务名称

 2.服务名称对应的集群中具体ip和端口:

 3.4  消费模块7000

3.4.1 新建消费模块

3.4.2 pom文件修改

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->

    <!-- SpringBoot整合Web组件 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--日常通用jar包配置-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

3.4.3 配置文件的修改

server:
  port: 7000


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3.4.4 controller的业务

@RestController
@Slf4j
public class OrderController {
    @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)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

3.4.5 负载均衡

@Configuration
public class ApplicationContextConfig
{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

3.4.6 启动服务查看

首先确保nacos启动,7001提供者服务启动,7002服务提供者启动;最后启动7000消费者

 页面进行访问:http://localhost:7000/consumer/payment/nacos/555

 再次刷新:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值