微服务-服务拆分和远程调用

这篇具有很好参考价值的文章主要介绍了微服务-服务拆分和远程调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

任何分布式架构都离不开服务的拆分,微服务也是一样。

一、服务拆分原则

微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务

  • 微服务数据独立,不要访问其它微服务的数据库

  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

微服务-服务拆分和远程调用,Spring Cloud,微服务

二、服务拆分示例

以微服务cloud-demo为例,其结构如下:

微服务-服务拆分和远程调用,Spring Cloud,微服务

cloud-demo:父工程,管理依赖

  • order-service:订单微服务,负责订单相关业务

  • user-service:用户微服务,负责用户相关业务

要求:

  • 订单微服务和用户微服务都必须有各自的数据库,相互独立

  • 订单服务和用户服务都对外暴露Restful的接口

  • 订单服务如果需要查询用户信息,只能调用用户服务的Restful接口,不能查询用户数据库

2.1  导入Sql语句

首先,将资料提供的cloud-order.sqlcloud-user.sql导入到mysql中:

微服务-服务拆分和远程调用,Spring Cloud,微服务

cloud-user表中初始数据如下:

微服务-服务拆分和远程调用,Spring Cloud,微服务

cloud-order表中初始数据如下:

微服务-服务拆分和远程调用,Spring Cloud,微服务

cloud-order表中持有cloud-user表中的id字段。

2.2  导入demo工程

用IDEA导入资料提供的Demo:

微服务-服务拆分和远程调用,Spring Cloud,微服务

项目结构如下:

微服务-服务拆分和远程调用,Spring Cloud,微服务

导入后,会在IDEA右下角出现弹窗:

微服务-服务拆分和远程调用,Spring Cloud,微服务

点击弹窗,然后按下图选择:

微服务-服务拆分和远程调用,Spring Cloud,微服务

会出现这样的菜单:

微服务-服务拆分和远程调用,Spring Cloud,微服务

配置下项目使用的JDK:

微服务-服务拆分和远程调用,Spring Cloud,微服务

三、实现远程调用案例

在order-service服务中,有一个根据id查询订单的接口:

微服务-服务拆分和远程调用,Spring Cloud,微服务

根据id查询订单,返回值是Order对象,如图:

微服务-服务拆分和远程调用,Spring Cloud,微服务

其中的user为null

在user-service中有一个根据id查询用户的接口:

微服务-服务拆分和远程调用,Spring Cloud,微服务

查询的结果如图:

微服务-服务拆分和远程调用,Spring Cloud,微服务

3.1  案例需求:

修改order-service中的根据id查询订单业务,要求在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。

微服务-服务拆分和远程调用,Spring Cloud,微服务

因此,我们需要在order-service中 向user-service发起一个http的请求,调用http://localhost:8081/user/{userId}这个接口。

大概的步骤是这样的:

  • 注册一个RestTemplate的实例到Spring容器

  • 修改order-service服务中的OrderService类中的queryOrderById方法,根据Order对象中的userId查询User

  • 将查询的User填充到Order对象,一起返回

3.2  注册RestTemplate

首先,我们在order-service服务中的OrderApplication启动类中,注册RestTemplate实例:


在Spring Boot中,RestTemplate是一个常用的类,用于发送HTTP请求和接收响应。它是Spring框架的一部分,提供了简单而强大的RESTful Web服务客户端。

RestTemplate的主要功能包括:

  1. 发送HTTP请求:RestTemplate提供了多种HTTP方法,如GET、POST、PUT、DELETE等,可以轻松地发送请求到指定的URL。
  2. 解析响应:RestTemplate可以将HTTP响应中的数据解析为Java对象,使得数据交互更加方便。
  3. 设置请求参数:可以通过RestTemplate设置请求参数,如查询参数、请求头等,以定制化请求。
  4. 异常处理:当请求失败时,RestTemplate会抛出异常,可以通过捕获这些异常来进行异常处理。

在Spring Boot中,RestTemplate的使用通常通过注入的方式将其注入到需要使用它的类中,然后调用相应的方法发送HTTP请求。需要注意的是,随着Spring Framework的不断更新,RestTemplate可能会被其他更现代的类或库所取代。尽管如此,对于许多现有的Spring Boot项目来说,RestTemplate仍然是一个非常有用的工具。


package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.3  实现远程调用

修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法:

微服务-服务拆分和远程调用,Spring Cloud,微服务

 文章来源地址https://www.toymoban.com/news/detail-807187.html

到了这里,关于微服务-服务拆分和远程调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud框架 服务拆分和远程调用

    数据库隔离避免耦合度过高,不同模块将自己的业务暴露为接口,供其他微服务调用 微服务远程调用技术Rest 在后端实现发送http请求  1.在启动类/配置类里注册RestTemplate启动对象 2.注入Bean对象使用

    2024年04月25日
    浏览(45)
  • SpringCloud --- 认识微服务、服务拆分和远程调用

    随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?   单体架构 :将业务的所有功能集中在一个项目中开发,打成一个包部署。 单体架构的优缺点如下: 优点: 架构简单 部署成本低

    2024年02月01日
    浏览(40)
  • 【微服务 SpringCloud】实用篇 · 服务拆分和远程调用

    微服务(2) 本文将正式进入微服务框架SpringCloud和SpringCloudAlibaba的学习了,他们的工作就是微服务治理 任何分布式架构都离不开服务的拆分,微服务也是一样 服务拆分就是单个模块拆成多个模块,不过模块必须具有一定的独立性,这里我总结了微服务拆分时的几个原则:

    2024年02月08日
    浏览(33)
  • 微服务 Spring Cloud 1,服务如何拆分?使用微服务的注意事项?

    大家好,我是哪吒。 微服务已经是Java开发的必备技能,甲方不管项目大小,都想上微服务,感觉上了就高大上了,牛逼了。 微服务确实给我们带来了一定的便利性,但是也带来了麻烦,比如学习成本高,存在很多不可预见的问题。 我是做互联网项目的,刚开始的时候,用的

    2024年01月19日
    浏览(41)
  • 详解SpringCloud微服务技术栈:认识微服务、服务拆分与远程调用

    👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:首期文章 📚订阅专栏:微服务技术全家桶 希望文章对你们有所帮助 在此之前,耗时半个月,我已经将Redis进行了一个原理上的速成以及项目的制作,整个项目我觉得还是很不错的,基本已

    2024年01月18日
    浏览(47)
  • 【Spring Cloud】如何使用Feign实现远程调用

    本次示例代码的文件结构如下图所示。 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标。 在 order-service 的启动类上添加注解 @EnableFeignClients ,以开启 Feign 功能。 Feign 采用了 Spring MVC 的注解的方式发起远程调用。只需要把发 HTTP 请求的信息声明在一个接口中,并添加注解

    2024年02月13日
    浏览(45)
  • 【云原生】Spring Cloud Alibaba 之 Feign 远程调用 实战

    在分布式领域中,一个系统由很多服务组成,不同的服务由各自的进程单独负责。因此,远程调用在分布式通信中尤为重要。 远程调用可分如下两类: 本地过程调用(Local Procedure Call,LPC) ,是指同一台机器上运行的不同进程之间的互相通信,即在多进程操作系统中,运行

    2023年04月09日
    浏览(44)
  • OpenFeign:Spring Cloud声明式服务调用组件

    OpenFeign? Feign VS OpenFeign? OpenFeign实现远程服务调用? OpenFeign超时控制? OpenFeign日志增强? Open Feign Spring官方推出的一种声明式服务端调用与负载均衡组件。 OpenFeign常用注解 注解 说明 @FeignClient 通知OpenFeign组件对@RequestMapping注解下的接口解析,并通过动态代理的方式实现类

    2024年02月03日
    浏览(48)
  • 第五章 : Spring cloud 微服务调用-OpenFeign

    第五章 : Spring cloud 微服务调用-OpenFeign 前言 本章知识点:OpenFeign介绍、负载均衡Ribbon的算法、Spring cloud 如何通过RestTemplate调用微服务,以及RestTemplate负载均衡原理。 OpenFeign介绍 Spring Cloud OpenFeign是一个声明式、模板化的HTTP客户端,主要用于Spring Cloud微服务之间的调用。以

    2024年02月02日
    浏览(40)
  • Spring Cloud之负载均衡与服务调用(Ribbon)

    目录 Ribbon 简介 负载均衡 简介 负载均衡方式 服务端负载均衡 工作原理 特点 客户端负载均衡 工作原理 特点 对比 实现 负载均衡策略 切换负载均衡策略 定制负载均衡策略 超时与重试 单个服务配置 全局配置 服务调用 示例         Ribbon 是 Netflix 公司发布的开源组件,其

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包