微服务架构入门

微服务架构入门

背景

微服务架构诞生的背景:

对于比较小的单体项目,通过使用编辑器,创建maven创建工程,然后基于spring boot,spring mvc,mybatis等框架进行整合,在写一些controller,service,mapper层以及一些配置文件进行业务的调用,然后打包成jar包/war包,最后将包放到tomcat等,最后发布到Linux服务器上跑业务,然后呢,通过服务提供的访问端口发送http请求,通过springweb组件,进行代码层层调用,像这种项目访问量不大,体积较小,一个小团队即可完成.但是一个庞大的服务,需要庞大的代码组成,维护起来非常困难,如何解决这个问题,就需要抽丝剥茧,将业务按要求分离出来单独开发,这个问题就迎刃而解了.

解决臃肿的大的服务,拆成若干个小系统,各司其职,假如某个系统出问题,保证整个系统依然正常运行,比如一个城市有多座火车站,一个火车站出问题,不影响其他.

SpringCloud Alibaba 微服务解决方案

概述

SpringCloud Alibaba是SpringCloud中的一个子项目,由阿里巴巴团队开发维护,致力于一站式解决微服务开发的解决方案,此项目包含开发分布式微服务的必要组件,方便程序员通过SpringCloud中的模型轻松式样这些组件来开发分布式微服务应用

重要核心组件

SpringCloud Alibaba默认提供了一下功能组件

  • 服务限流降级:
    • 默认支持WebService,OpenFeign,RestTemplate,SpringCloud GateWay,RocketMQ限流降级功能的直接接入,可以在运行时通过控制台实时修改限流降级规则,还支持限流降级Metrics监控.

什么是限流降级:例如,电商在搞秒杀活动时,会将秒杀服务的等级提高,限制其他服务访问等级,使秒杀互动正常运行.

有点断臂求生的意思.

  • 服务注册与发现
    • 基于SpringCloud服务注册与发现标准,通过Nacos后台管理进行实现,默认集成Ribbo
  • 分布式配置管理
    • 基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新
  • 消息驱动能力
    • 基于SpringCloud Stream为微服务应用构建消息驱动能力
  • 分布式事务
    • 使用@GlobalTransactionan注解,高效并且对业务零侵入地解决业务分布式事务问题
  • 分布式任务调度
    • 提供秒级,精准,高可靠,高可用的定时(基于Cron表达式)任务调度服务,同时提供分布式的任务执行模型,如网格任务,网格任务支持海量子任务均匀分配到所有Worker上执行

SpringCloud Alibaba 架构设计

微服务架构入门_第1张图片

接下来我们通过创建一个Maven工程一步步的实现分布式微服务的业务逻辑.我们会涉及到的知识内容有,Maven,SpringBoot,Nacos,SpringMVC等.

创建工程

工程结构

微服务一般创建聚合工程结构,便于资源的共享以及简化开发

创建一个空文件目录并配置maven环境

微服务架构入门_第2张图片

Maven版本使用的3.8.4,Maven仓库最好创建到其他磁盘,否则默认在系统盘下,随着依赖越来越多,C盘承受不住~.

微服务架构入门_第3张图片

设置版本为8

微服务架构入门_第4张图片

微服务架构入门_第5张图片

配置父级pom文件
微服务架构入门_第6张图片

    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-dependenciesartifactId>
                <version>2.3.2.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Hoxton.SR9version>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>2.2.6.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>
    
    <dependencies>
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <scope>providedscope>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>
        
    dependencies>
    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                
                <version>3.8.1version>
                <configuration>
                    <source>8source>
                    <target>8target>
                configuration>
            plugin>
        plugins>
    build>

创建子类工程-服务提供方工程

注意创建位置,在父级工程下创建子工程
微服务架构入门_第7张图片

创建子类工程-服务消费方工程

微服务架构入门_第8张图片

创建网关服务工程

微服务架构入门_第9张图片

服务关系以及调用关系架构

微服务架构入门_第10张图片

我们会基于此架构,完成分布式微服务的业务流程.

在下一篇博客中我们将介绍注册中心Nacos的相关内容.

你可能感兴趣的:(微服务,架构,java)