当前位置: 首页 > article >正文

spring cloud 入门笔记1(RestTemplate,Consul)

最大感受:

spring cloud无非是将spring boot中的各个工作模块拆分成独立的小spring boot,各个模块之间,不再是通过导包什么的,调用而是通过网路进行各个模块之间的调用

工具一:RestTemplate

在Java代码中发送HTTP请求,可配合spring mvc实现类似于前端的请求转发一样的效果

步骤一:导入依赖

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>5.2.6.RELEASE</version>

</dependency>

步骤二:编写配置类

config/RestTemplateConfig

@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced//实现负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

 步骤三:发送HTTP请求

@RestController
@Slf4j
public class OrderController {
    public static final String PaymentSrv_URL="http://localhost:8001";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/pay/add")
    public ResultData addOrder(PayDTO payDTO){
        System.out.println(payDTO);
        return restTemplate.postForObject(PaymentSrv_URL + "/pay/add",payDTO,ResultData.class);
    }

从“/consumer/pay/add”接收到的数据,再通过restTemplate中的方法发送别的请求

技术栈一: Consul

场景:

微服务所在的IP地址和端口号硬编码到订单微服务中,会存在非常多的问题
(1)如果订单微服务和支付微服务的IP地址或者端口号发生了变化,则支付微服务将变得不可用,需要同步修改订单微服务中调用支付微服务的IP地址和端口号。
(2)如果系统中提供了多个订单微服务和支付微服务,则无法实现微服务的负载均衡功能。
(3)如果系统需要支持更高的并发,需要部署更多的订单微服务和支付微服务,硬编码订单微服务则后续的维护会变得异常复杂。
所以,在微服务开发的过程中,需要引入服务治理功能,实现微服务之间的动态注册与发现。

步骤一:导入依赖

<!--SpringCloud consul config-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>


<!--SpringCloud consul discovery -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

 步骤二:编写配置文件

基础知识:

一个项目中通常存在application.yml文件用于项目的参数配置,

但同时还存在bootstrap.yml文件也可以进行参数配置

bootstrap.yml通常用于配置全局的通用的参数,优先级较高

application.yml通常用于配置局部的参数,优先级较低

可共存

bootstrap.yml


spring:
  application:
    name: cloud-payment-service
    ####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: '-' # default value is ",",we update '-'
        format: YAML

  # config/cloud-payment-service/data
  #       /cloud-payment-service-dev/data
  #       /cloud-payment-service-prod/data

application.yml

server:
  port: 8001

# ==========applicationName + druid-mysql8 driver===================
spring:
  profiles:
    //选择要从consul中读取的文件
    active: dev # 多环境配置加载内容dev/prod,不写就是默认default配置

# ========================mybatis===================
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.atguigu.cloud.entities
  configuration:
    map-underscore-to-camel-case: true
数据永久化:consul数据持久化_consul配置持久化-CSDN博客

 步骤三:启动服务

cmd命令行: consul agent -dev

在http://localhost:8500/中进行配置

 

步骤四:调用服务

//从application.yml中获取的参数
@Value("${server.port}")
private String port;
@GetMapping("/pay/get/info")
//从bootstrap.yml中获取consul中的对应文件中的参数
public String getInfoByConsul( @Value("${atguigu.info}") String atguiguInfo )
{
    return "atguiguInfo:"+atguiguInfo+"\t"+"port:"+port;
}

http://www.kler.cn/a/391912.html

相关文章:

  • 丹摩征文活动|丹摩智算平台使用指南
  • leetcode hot100【LeetCode 114.二叉树展开为链表】java实现
  • MySQL Workbench导入数据比mysql命令行慢
  • Spark 的容错机制:保障数据处理的稳定性与高效性
  • javascript 函数【知识点整理】
  • void * 指针与整数进行加减运算
  • 全面介绍软件安全测试分类,安全测试方法、安全防护技术、安全测试流程
  • 安装阿里巴巴的Dragonwell(替代JDK)
  • [CKS] CIS基准测试,修复kubelet和etcd不安全项
  • hhdb数据库介绍(9-3)
  • 【论文笔记】SparseRadNet: Sparse Perception Neural Network on Subsampled Radar Data
  • [HarmonyOS]简单说一下鸿蒙架构
  • python数据写入excel文件
  • 【前端】Svelte:部署与快速开始
  • 推荐一款强大的图像处理软件:Adobe Photoshop2025
  • ReactPress技术揭秘
  • css实现斜条纹背景
  • 二叉树-堆
  • 探索JavaScript的强大功能:从基础到高级应用
  • 组合(DFS)
  • 一文彻底了解UDHCP源码核心☝️
  • 工业相机选取
  • docker compose 多个 Dockerfile
  • VUE使用TS开发打包时发现校验问题无法打包
  • 349. 两个数组的交集
  • C 语言冒泡排序算法详解