什么是
定制app开发微服务架构的基础是将定制app开发的那个应用程序开发为定制app开发一组小型独立服务,定制app开发这些独立服务在自己的定制app开发进程中运行,定制app开发独立开发和部署。
SpringCloud Alibaba微服务:
Spring Cloud Alibaba 是Spring Cloud定制app开发的一个子项目,致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 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文件
- <?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>
- <!--当前工程的坐标-->
- <groupId>com.jt</groupId>
- <artifactId>01-sca</artifactId>
-
- <version>1.0-SNAPSHOT</version>
-
- <dependencyManagement>
- <dependencies>
- <!--spring boot 核心依赖版本定义(spring官方定义)-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>2.3.2.RELEASE</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
-
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>Hoxton.SR9</version>
- <type>pom</type>
- <scope>import</scope><!--引入三方依赖的版本设计-->
- </dependency>
-
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-alibaba-dependencies</artifactId>
- <version>2.2.6.RELEASE</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
-
-
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- </dependency>
- <!--mybatis依赖包-->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.3.1.tmp</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
-
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
-
-
- <!--lombok 依赖,子工程中假如需要lombok,不需要再引入-->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <scope>provided</scope><!--provided 表示此依赖仅在编译阶段有效-->
- </dependency>
- <!--单元测试依赖,子工程中需要单元测试时,不需要再次引入此依赖了-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <!-- <scope>test</scope><!–test表示只能在test目录下使用此依赖–>-->
- <exclusions>
- <exclusion><!--排除一些不需要的依赖-->
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.60</version>
- <scope>compile</scope>
- </dependency>
- <!--其它依赖...-->
- </dependencies>
-
- <build>
- <plugins>
- <!--通过maven-compiler-plugin插件设置项目
- 的统一的jdk编译和运行版本-->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <!--假如本地库没有这个版本,这里会出现红色字体错误-->
- <version>3.8.1</version>
- <configuration>
- <source>8</source>
- <target>8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- </project>
Spring-Cloud一套完整的服务就需要以下部分中间件。
核心组件:
微服务指多个服务模块,而多个服务模块就需要一个服务注册中心,将多个模块融合在一起。并且可以进行模块相互之间互相调用。---Nacos
每个模块创建好后,需要统一的网关路径,设置路径跳转。所有的模块路径接口,都可以在网关服务中进行配置。 ---Gateway
登录安全认证框架:
Nacos服务注册中心:
Sentinel限流熔断:
网关Gateway:
消息中间件:
ES分析引擎实时搜索:
Redis缓存:
下面忽略:所有微服务相关中间件在上面都有对应文章
在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<String> datas = new ArrayList<>();
- //遍历
- datas.forEach(item->{
- System.out.println(item);
- });