SpringCloud微服务架构

什么是微服务

微服务架构的基础是将的那个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署。

SpringCloud Alibaba微服务:

Spring Cloud Alibaba 是Spring Cloud的一个子项目,致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

核心组件

服务限流降级:

默认支持WebServlet、OpenFeign、RestTemplate、Spring Cloud GateWay、RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控

服务注册与发现:

基于Spring Cloud服务注册与发现标准,借助Nacos进行实现,默认还继集成了Ribbon支持

分布式配置管理:

基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新

消息驱动能力:

基于spring Cloud Stream为微服务应用构建消息驱动能力

分布式事务:

使用@GlobalTransactional注解,高效并且对业务零侵入地解决分布式事务问题

分布式任务调度:
提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker上执行。

IVProjects (工作区/空项目)
├── 01-sca //(微服务父工程)
├── sca-provider //服务提供方法
├── sca-consumer //服务消费方法
├── sca-gateway //网关服务

相关配置:

一:配置JDK编译环境

聚合工程在编译时,需要对相关依赖的工程进行一起编译,所以要做一些配置

指定JDK编译版本:

配置工作区中项目编码方式

第二步:配置项目pom.xml文件



    4.0.0
    
    com.jt
    01-sca

    1.0-SNAPSHOT

    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                2.3.2.RELEASE
                pom
                import
            


            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR9
                pom
                import
            

            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.6.RELEASE
                pom
                import
            
        
    

    


        
            com.alibaba
            fastjson
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.1.tmp
        

        
            org.springframework.boot
            spring-boot-starter-web
        


        
            mysql
            mysql-connector-java
        


        
        
            org.projectlombok
            lombok
            provided
        
        
        
            org.springframework.boot
            spring-boot-starter-test

            
                
                    org.junit.jupiter
                    junit-jupiter-engine
                
            
        
        
            com.alibaba
            fastjson
            1.2.60
            compile
        
        
    

    
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                3.8.1
                
                    8
                    8
                
            
        
    


Spring-Cloud一套完整的服务就需要以下部分中间件。

核心组件:

微服务指多个服务模块,而多个服务模块就需要一个服务注册中心,将多个模块融合在一起。并且可以进行模块相互之间互相调用。—Nacos

每个模块创建好后,需要统一的网关路径,设置路径跳转。所有的模块路径接口,都可以在网关服务中进行配置。 —Gateway

登录安全认证框架:SpringSecurity框架_的博客-CSDN博客[这里是图片005]https://blog.csdn.net/Java_Mr_Jin/article/details/125372715?spm=1001.2014.3001.5502

shiro框架_的博客-CSDN博客[这里是图片006]https://blog.csdn.net/Java_Mr_Jin/article/details/125052557?spm=1001.2014.3001.5502

Nacos服务注册中心:Nacos 服务注册中心_的博客-CSDN博客_nacos注册中心地址[这里是图片007]https://blog.csdn.net/Java_Mr_Jin/article/details/122125418?spm=1001.2014.3001.5502

Sentinel限流熔断:Sentinel限流熔断_的博客-CSDN博客[这里是图片008]https://blog.csdn.net/Java_Mr_Jin/article/details/122144393?spm=1001.2014.3001.5502

网关Gateway:

网关Gateway_的博客-CSDN博客_gateway java[这里是图片009]https://blog.csdn.net/Java_Mr_Jin/article/details/122300678?spm=1001.2014.3001.5502

消息中间件:

RabbitMQ_的博客-CSDN博客[这里是图片010]https://blog.csdn.net/Java_Mr_Jin/article/details/122867486?spm=1001.2014.3001.5502kafka消息中间件_的博客-CSDN博客_kafka消息中间件[这里是图片011]https://blog.csdn.net/Java_Mr_Jin/article/details/124926544?spm=1001.2014.3001.5502

ES分析引擎实时搜索:

Elasticsearch_的博客-CSDN博客[这里是图片012]https://blog.csdn.net/Java_Mr_Jin/article/details/122883009?spm=1001.2014.3001.5502

Redis缓存:

Redis缓存_的博客-CSDN博客[这里是图片013]https://blog.csdn.net/Java_Mr_Jin/article/details/122651874?spm=1001.2014.3001.5502

下面忽略:所有微服务相关中间件在上面都有对应文章

在vo包下编辑SysResult对象(SysResult.java)

说明: 该对象主要负责前端项目与后端项目的数据交互. 几乎所有的后台服务器的返回值都是SysResult对象.

package com.jt.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult implements Serializable {
    private Integer status; //200业务执行成功 201业务执行失败
    private String msg; //服务器的提示信息
    private Object data; //封装后台返回值

    public static SysResult fail(){
        return new SysResult(201,"业务执行失败",null);
    }

    public static SysResult success(){
        return new SysResult(200,"业务执行成功",null);
    }

    //服务器返回业务数据
    public static SysResult success(Object data){
        return new SysResult(200,"业务执行成功",data);
    }

    public static SysResult success(String msg,Object data){
        return new SysResult(200,msg,data);
    }
}

lamda表达式遍历数组:

    List datas = new ArrayList<>();
    //遍历
    datas.forEach(item->{
      System.out.println(item);
    });

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)