SpringCloud Alibaba环境搭建

分布式项目搭建

SpringCloud Alibaba 依赖 Java 环境来运行。还需要为此配置 Maven 环境,请确保是在以下版本环境中安装使用:
idea创建分布式项目搭建。
spring initialize spring的初始化向导创建项目:
  • 会快速创建一个spring-boot项目
  • 能快速选择一些启动器
  • 会创建application全局配置文件
  • 以及会创建一个启动类
mavn创建项目:mavn创建项目就需要手动去创建以上的东西了
这就是spring initialize和maven创建项目的区别

1. 基于SpringBoot的父maven项目

父maven项目只是用来聚合,或者是说管理maven子项目的,子maven项目继承父maven依赖等一些配置。父maven项目一般不会打成jar包

2. 创建2个服务(订单服务和库存服务)

建议使用maven创建,因为子maven项目可以继承父maven项目 所以就不需要再创建重复的配置了

两个子服务引入springmvc

在对应服务里分别引入maven包

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建两个子服务的启动类

order

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

stock

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

给spring注入RestTemplate

@Component
public class RestTemplateConfig {

    /**
     * restTemplate 配置
     * 通过构模式
     *
     * @param builder
     * @return
     */
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        return builder.build();
    }
}

两个子服务中分别创建接口

订单接口

@RestController
@RequestMapping("/order")
public class OrderController {
    @Resource
    private RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add() {
        System.out.println("下单成功!");
        // 用spring-boor的resTemplate 实现服务与服务之间的调用(不用自己再手动序列化反序列化)
        String msg = restTemplate.getForObject("http://localhost:8081/stock/reduce", String.class);
        return "hello word"+msg;
    }

}

库存接口

@RestController
@RequestMapping("/stock")
public class StockController {

    @RequestMapping("/reduce")
    public String reduce() {
        System.out.println("扣减库存成功");
        return "加减库存";
    }
}

通过yml配置两个子服务的启动端口号

order

stock

启动服务并实现服务与服务之间的调用

在浏览器调用order服务接口 http://localhost:8080/order/add

order后台日志

stock后台日志

这样就实现了服务之间的调用。

但是随着服务的不断增多,这个resTemplate调用的url中的ip地址 维护起来就会多,一旦某个服务器下架了或者进行负债均衡了,维护起来就非常的麻烦。

这个时候我们就可以采用我们的注册中心来解决以上的问题。

分布式构架转变为微服务架构

在父maven项目中加入<dependencyManagement> ​​​​​​​​​​​​​

注意要去官网查找对应版本的对应关系

<!-- 在父maven中加入依赖子maven项目一定要显示的声明 -->
    <dependencyManagement>
        <dependencies>
            <!--Spring Cloud的版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--SpringBoot的版本管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring Cloud alibaba的版本管理, 通过dependency完成继承-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--alibaba Spring boot版本管理-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>aliyun-spring-boot-dependencies</artifactId>
                <version>${aliyun-spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

下期再见更新spring cloud alibaba 整合nacos解决我们上面分布式系统的问题。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值