SpringCloud中服务间通信(应用间通信)-亲测有效-源码下载-连载2

1、微服务概述

本案例主要解决微服务之间的相互调用问题

如果已经理解什么是微服务,可以直接跳到实战。

本案例采用springBoot3.1.7+springCloud2022.0.4版本测试

本案例使用springboot2.7.x版本测试代码相同

1d3bb475771046dcacbbc1a7b39e3a15.png

1、微服务是分布式架构,那么为什么要需要使用分布式架构?

因为单体服务是将所有的模块都放在一个项目中,这种架构部署简单,维护方便,但是随着功能的增加各个模块之间的边界会越来越模糊(即使各个模块的融合会越来越密切),这就造成了一个问题如当修改订单服务的时候,可能会影响到商品系统、短信系统等,使程序的维护性降低等。且单体服务有性能瓶颈,越来越无法满足当今的互联网工程,这就出现了微服务。

2、微服务和springCloud之间的关系?

如果说springCloud就是微服务这是不正确的,springCloud其实是一个工具集,将解决微服务中出现的各种问题的插件集成到一起,形成了一个整套的解决方案,这些解决方案偏向于服务治理等。

除此之外还有很多的其他工具如springCloudAlibaba等,都是很好的解决微服务问题的工具。

3、什么是微服务?

微服务就是一种分布式架构,本质就是将单体服务拆分中一个一个的独立运行的小工程,这些小的工程如订单系统、商品系统等运行在不同的服务器中,这些独立运行的小工程就是微服务。

使用了微服务之后我们需要解决一些列的问题?

问题1:微服务之间怎么知道彼此的存在,我们可以通过注册中心将每个微服务的信息注册到注册中心,注册中心可以使用Eureka或Nacos等。

问题2:各个独立运行的微服务之间如何进行通信,我们可以使用RestTemplate或openfeign

问题3:当微服务特别多的时候,各个微服务都有配置文件,如何统一管理这些配置文件,我们可以使用配置中心,将配置都放置在同一个地方如git中,通过配置中心统一加载。

问题4:使用了微服务之后,就会出现在分布式系统下的一些问题,如分布式的id,分布式锁,分布式事务等问题,我们需要使用到分布式相关的技术。

问题5:使用了微服务之后,一个项目会出现很多的微服务,这个时候项目的部署是一个非常麻烦的事情,为了方便,我们可以使用Jekins等实现自动化部署等。

问题6:使用了微服务之后,我们的服务部署在不同的服务上,不同的IP和不同的端口会为我们的方位带来一定的困扰,这个时候我们可以使用网关服务如zuul,gateway等技术解决这些问题。

2、案例中的微服务结构

重点1:我们创建二个微服务,一个订单系统,一个商品系统,并将这两个系统注册到注册中心EurekaServer中。这个时候我们需要解决OrderServer订单系统与GoodsServer商品系统的通信问题,我们可以通过二中方式解决通信问题,第一:RestTemplate,第二:OpenFeign。

重点2:我们在GoodsServer商品系统中创建deductStock方法模拟减库存,在OrderServer订单系统中创建createOrder方法模拟创建订单。然后在createOrder中调用deductStock方法。

ee86c22eb6ff437c8393b6da886e0861.png

3、创建EurekaServer

3.1、创建工程并导入包信息

核心包:

spring-cloud-starter-netflix-eureka-server
spring-boot-starter-web

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.txc</groupId>
    <artifactId>eurekaserver0828</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>eurekaserver0828</name>
    <description>eurekaserver0828</description>
    <properties>
        <java.version>17</java.version>
        <spring-cloud.version>2022.0.4</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值