springCloud_项目框架搭建

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: springCloud_项目框架搭建

实现跨服务的远程调用(RestTemplate)

业务场景:在返回订单信息数据中显示用户信息
实现思路:基于RestTemplate发起的http请求实现远程调用
1.注册RestTemplate
在order-service的启动类中注册RestTemplate的Bean

 @Bean
 public RestTemplate restTemplate(){
     return new RestTemplate();
 }
2.改造OrderController
2.1:注入RestTemplate
@Autowired
private RestTemplate restTemplate;
2.2:修改业务代码
    @GetMapping("{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        // 根据id查询订单并返回
        Order order = orderService.queryOrderById(orderId);
        //利用RestTemplate发起http请求查询用户信息
        User user = restTemplate.getForObject("http://localhost:8091/user/" + order.getUserId(), User.class);
        //封装user信息到返回值中
        order.setUser(user);
        return order;
    }

提供者和消费者

服务提供者:一次业务中,被其他微服务调用的服务(提供接口给其他微服务) 如上的user微服务
服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口) 如上的order微服务

服务A调用服务B,服务B调用服务C,那么服务B是什么角色?
    答案:要看B相对谁而言,一个服务既可以是提供者又可以是消费者,因为提供者和消费者的角色是相对的.

Eureka注册中心

在这里插入图片描述

内部协调原理
消费者该如何获取服务提供者具体信息?
    1.服务提供者启动时向eureka注册自己的信息
    2.eureka保存这些信息
    3.消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择?
    1.服务消费者利用负载均衡算法,从服务列表中挑选一个
    
消费者如何感知服务提供者健康状态?
    1.服务提供者会每隔30s向eurekaServer发送心跳请求,报告健康状态
    2.eureka会更新记录服务列表信息,心跳不正常会被剔除
    3.消费者就可以拉到最新的信息
Eeruka原理
在Eureka架构中,微服务角色有两类
1:EurekaServer: 服务端 注册中心
    记录服务信息
    心跳监控
2:EurekaClient:客户端
    Privider: 服务提供者,案例中的user-service
        注册自己的信息到EurekaServer
        每隔30s向EurekaServer发送心跳
    consumer: 服务消费者 案例中的order-service
        根据服务名称从EurekaServer拉取服务列表
        基于服务列表做负载均衡,选中一个微服务后发起远程调用
搭建Eeruka
1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.编写启动类,添加@EnableEurekaServer注解
3.添加application.yml文件,编写下面的配置
server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver #eureka的服务名称
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone:http://127.0.0.1:10086/eureka
Eeruka-服务注册
将user-service服务注册到EurekaServer
1.在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
<!--eureka客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.在application.yml文件,编写下面的配置
spring:
  application:
    name: userservice  #eureka客户端 的服务名称
    
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
将order-service服务注册到EurekaServer 重复上述1、2操作
Eeruka-服务发现
在order-service完成服务拉取
服务拉取基于服务名称获取服务列表,然后对服务类表做负载均衡

1.修改OrderService代码,修改访问的url路径,用服务名代替ip,端口
    String url="http://userservice/user/"+order.getUerId();
2.在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解
    @Bean
    @LoadBalanced /*添加的注解*/
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
需要项目代码联系博主.
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
XML 安全 Java
|
2月前
|
缓存 NoSQL Java
什么是缓存?如何在 Spring Boot 中使用缓存框架
什么是缓存?如何在 Spring Boot 中使用缓存框架
97 0
|
7天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
9天前
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
|
1月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
26天前
|
Java 开发者 Spring
理解和解决Spring框架中的事务自调用问题
事务自调用问题是由于 Spring AOP 代理机制引起的,当方法在同一个类内部自调用时,事务注解将失效。通过使用代理对象调用、将事务逻辑分离到不同类中或使用 AspectJ 模式,可以有效解决这一问题。理解和解决这一问题,对于保证 Spring 应用中的事务管理正确性至关重要。掌握这些技巧,可以提高开发效率和代码的健壮性。
86 13
|
29天前
|
存储 JSON 前端开发
【Spring项目】表白墙,留言板项目的实现
本文主要介绍了表白墙项目的实现,包含前端和后端代码,以及测试
|
29天前
|
JSON 前端开发 Java
|
29天前
|
缓存 前端开发 Java
【Spring】——SpringBoot项目创建
SpringBoot项目创建,SpringBootApplication启动类,target文件,web服务器,tomcat,访问服务器
|
1月前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
57 5