什么?微服务架构这么简单,我竟然刚知道

​记得之前刚入职公司时,公司需要将一个现有项目做成产品,需要对架构进行重新设计。leader就让我们每个人空的时候都去想一想怎么合理设计架构。作为一个有经验的新人,这个机会自然是要把握住的。

首先了解到现有的架构 SpringMVC+Mybatis+Dubbo ,还是比较传统的,一些常用的限流,熔断的系统保护、缓存、配置中心都没有使用,更令人崩溃的是每发布一个环境都需要重新打一个包。我初步的构想是使用: Springboot+MybatisPlus+Dubbo,Nacos作为配置中心、Redis 和 SpringCache做缓存 。这样既能大大提升我们重构的开发效率,而且技术也是当下比较流行的。

有了想法之后,我就开始上网查资料并试着自己动手搭了一个框架,其中遇到很多坑,一度想要放弃。后来看到一篇文章讲的是springCloud和Dubbo的完美结合,里面提到了SpringCloud Alibaba,按照里面的步骤,很简单的就把框架搭建好了。当时很激动,对这个新概念产生了强烈的好奇,同时有种相见恨晚的感觉。

后来,我便疯狂的去查了许多关于SpringCloud Alibaba资料,进一步的了解了它,觉得这个还是蛮靠谱的,毕竟阿里出品嘛(不过就怕哪天又不维护了)。后来和一个老同事聊了一下自己的想法,他说公司其他产品组都是在用springCloud,服务调用用的OpenFeign,他也建议这样。所以我最终定下的方案是通过SpringCloud Alibaba来整合架构:SpringCloud +SpringBoot+MybatisPlus,配置、注册中心使用Nacos、服务调用使用OpenFeign,缓存使用 Redis和SpringCache、限流使用Sentinel、分布式事务使用Seata,后期再搭配一个网关(当时自以为不错的架构)。

在搭建整合的过程还是遇到了不少坑,自己是一步步趟过来的。所以我就想写一个系列来记录下这些从0到1的实践和趟坑过程,一方面自己做下复盘,另一方面也让有需要的小伙伴少踩一些坑。

下面就让我们一步步揭开Spring Cloud Alibaba的神秘面纱。

简介

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

组件

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

如何开始

在项目的根pom.xml 文件中的 <parent>标签下定义springBoot版本;<dependencyManagement>标签下定义springCloud、alibaba版本,如下配置:

<parent>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-parent</artifactId>      <version>2.2.6.RELEASE</version>      <relativePath/> <!-- lookup parent from repository --></parent><!--版本号统一管理--><properties>    <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>    <alibaba-cloud.version>2.2.0.RELEASE</alibaba-cloud.version></properties><!--依赖统一管理--><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>        <!--alibaba cloud -->        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-alibaba-dependencies</artifactId>            <version>${alibaba-cloud.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement>

避坑:

springcloud 版本 和 springboot 的版本需要对应,不然启动会报错:

The method's class, org.springframework.boot.actuate.health.CompositeHealthIndicator, is available from the following locations:    jar:file:/F:/MavenLib/org/springframework/boot/spring-boot-actuator/2.2.1.RELEASE/spring-boot-actuator-2.2.1.RELEASE.jar!/org/springframework/boot/actuate/health/CompositeHealthIndicator.classIt was loaded from the following location:    file:/F:/MavenLib/org/springframework/boot/spring-boot-actuator/2.2.1.RELEASE/spring-boot-actuator-2.2.1.RELEASE.jarAction:Correct the classpath of your application so that it contains a single, compatible version of org.springframework.boot.actuate.health.CompositeHealthIndicator

以下是springBoot、springCloud、alibaba的版本对应表:

cloudbootalibaba

Hoxton

2.2.x

2.2.x

Greenwich

2.1.x

2.1.x

Finchley

2.0.x

2.0.x

Edgware、Dalston

1.5.x

1.5.x

这样准备工作就好了,后期我们需要引用哪个组件,只需要在 <dependencies> 中怎加相应依赖,无需指定<version>。后面系列会根据案例逐个介绍组件的整合使用,欢迎大家继续关注。

相关代码摘自本人开源项目:https://gitee.com/gourd-hu/spring-cloud-plus

「往期文章」

分布式系统开发脚手架,开源啦

10大程序员实用网站,好网站不藏私

同事安装Mysql只用了一条命令,活该他涨薪

 

END

扫码二维码,获取更多精彩

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值