SpringCloud Alibaba微服务工程搭建(保姆级)

简介: SpringCloud Alibaba微服务工程搭建(保姆级)

我们凭什么要用springcloud alibaba?

1、单体应用的痛点

传统的单体应用,将所有功能的表示层、业务逻辑层,数据访问层,包括静态资源等等全部糅合在一个工程里面,编译,打包,部署在单台服务器上上线,比如打成war包放在Tomcat的webapp目录中部署项目。这样的项目开发部署适合小型项目,系统功能不复杂,访问量不大的情况下有绝对的优势。开发速度快,运维方便。但是当业务越来越复杂,功能越来越多,参与的开发人员越来越多,就暴露出问题了。

比如:

业务变复杂,代码量增大,代码可读性,可维护性,可扩展性下降。万一要新同事接手代码,理解起来花很多时间

测试难度增大

单体应用并发能力有限,访问量高了用户体验差

单体应用容错率低,万一哪里出错,可能导致整个项目就崩了

1、微服务的优势

将原来的单体应用按义务范围来进行划分,划分为多个小model,每个微服务运行在自己的进程中,不相互影响,通过完全自动化部署来独立部署。并使用轻量级机制通信,通常是HTTP RESTUFUL API。可对各个微服务进行集中管理。这些小model可以使用不同的编程语言,以及不同的存储技术。

1、springcloud alibaba的重要组件

nacos:

注册中心(服务注册与发现)、配置中心(动态配置管理)

Ribbon:

负载均衡

Feign:

声明式Http客户端(调用远程服务)

Sentinel:

服务容错(限流、降级、熔断)

Gateway:

API网关(webflux编程模式)

Sleuth:

调用链监控

Seata:

原Fescar,即分布式事务解决方案

工程搭建

1、搭建父工程

我们给项目起个名字就叫做’mdx-shop’ 迷迭香的商店

接下来配置下maven

删除掉src目录(父目录不需要)

2、引入相关springcloud依赖

先看下springcloud和springcloud alibaba 和各个组件之间的版本对应关系

引入springboot springcloud spingcloud alibaba 依赖,如下

版本选取:

springboot – 2.6.4

springcloud – 2021.0.1

springcloud alibaba – 2021.0.1.0

<?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 http://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>2.6.4</version>
    </parent>
    <groupId>com.mdx</groupId>
    <artifactId>mdx-shop</artifactId>
    <version>1.0.0</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring-cloud.version>2021.0.1</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </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>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3、创建子模块

我们模拟创建一个用户模块

创作不易,点个赞吧?

最后的最后送大家一句话

白驹过隙,沧海桑田

与君共勉

下一篇文章nacos注册中心和配置中心

springcloud alibaba nacos使用以及注册中心和配置中心的应用(保姆级)

文末送福利啦~

1、Java(SE、JVM)、算法数据结构、数据库(Mysql、redis)、Maven、Netty、RocketMq、Zookeeper、多线程、IO、SSM、Git、Linux、Docker、Web前端相关学习笔记
2、2023最新BATJ大厂面试题集
3、本教程项目源码
领取方式:关注下方公主号,回复:【笔记】、【面试】、【mdx-shop】获取相关福利。

文章持续更新,可以关注下方公众号或者微信搜一搜「 最后一支迷迭香 」获取项目源码、干货笔记、面试题集,第一时间阅读,获取更完整的链路资料。

相关文章
|
1天前
|
缓存 负载均衡 算法
【微服务 SpringCloud】实用篇 · Ribbon负载均衡
【微服务 SpringCloud】实用篇 · Ribbon负载均衡
9 0
|
1天前
|
负载均衡 监控 算法
【微服务 SpringCloud】实用篇 · Eureka注册中心
【微服务 SpringCloud】实用篇 · Eureka注册中心
10 1
|
1天前
|
消息中间件 Java RocketMQ
Spring Cloud RocketMQ:构建可靠消息驱动的微服务架构
【4月更文挑战第28天】消息队列在微服务架构中扮演着至关重要的角色,能够实现服务之间的解耦、异步通信以及数据分发。Spring Cloud RocketMQ作为Apache RocketMQ的Spring Cloud集成,为微服务架构提供了可靠的消息传输机制。
30 1
|
1天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo: 微服务通信的高效解决方案
【4月更文挑战第28天】在微服务架构的发展中,服务间的高效通信至关重要。Spring Cloud Dubbo 提供了一种基于 RPC 的通信方式,使得服务间的调用就像本地方法调用一样简单。本篇博客将探讨 Spring Cloud Dubbo 的核心概念,并通过具体实例展示其在项目中的实战应用。
20 2
|
1天前
|
负载均衡 Java 网络架构
【SpringCloud】如何理解分布式、微服务、集群
【SpringCloud】如何理解分布式、微服务、集群
24 1
|
1天前
|
Java 数据安全/隐私保护 Sentinel
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
|
1天前
|
运维 监控 Java
SpringCloud&认识微服务
SpringCloud&认识微服务
18 0
|
1天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第13天】随着现代应用的复杂性日益增加,传统的单体应用架构已不足以满足快速迭代和可扩展性的需求。本文将探讨如何通过微服务架构来提升后端开发的效率和系统的可靠性,涵盖微服务设计原则、技术栈选择、部署策略以及维护实践。我们将分析微服务的优势与挑战,并提供一系列实施建议,帮助开发者在构建和维护分布式系统时做出明智决策。
|
1天前
|
存储 监控 API
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第13天】在现代软件开发中,随着业务需求的多样化和开发流程的复杂化,传统的单体应用架构逐渐显得笨重且难以适应快速变化。微服务架构作为一种新兴的分布式系统设计方式,以其灵活性、可扩展性和技术多样性受到广泛关注。本文旨在探讨微服务架构的核心概念、设计原则以及实施策略,为后端开发人员提供一种提升系统性能和开发效率的有效途径。
41 2
|
1天前
|
监控 持续交付 API
构建高效微服务架构:后端开发的新范式
【5月更文挑战第15天】 随着现代软件开发的演进,微服务架构已经成为企业解决复杂系统问题的首选方案。本文将深入剖析微服务的核心概念、设计原则及其在后端开发中的应用。我们将探讨如何通过容器化、服务网格和持续集成/持续部署(CI/CD)等技术手段提升系统的可伸缩性、弹性和维护性,同时确保高可用性和故障隔离。文章还将提供一系列实践案例,展示如何在实际项目中实施微服务架构,以及如何解决常见的挑战和问题。
44 1
http://www.vxiaotou.com