一、微服务简介
微服务架构解决方案
二、SpringCloud Alibaba
解决方案架构设计
三、创建Spring Cloud项目
1.创建空项目 GitCGB2110IVProjects
2.项目初始化
配置Maven 3.8.4
配置jdk编译环境
3.创建工程
创建聚合父工程 编辑共享资源
删除父工程src目录
修改pom文件
创建测试类
四、常见问题整合
1.Maven打包 package install deploy区别
2.maven报错
3.项目删除
通俗的讲,微服务就是将一个大的系统拆分为多个小系统(分而治之),从而便于开发,降低代码冲突的概率。
微服务架构(MSA)的基础是将单个应用程序拆分成多个独立的小服务,这些服务可以独立开发、部署和运行,由多个组件组成。eg.(将一个大型火车站拆分为多个火车站,不同的车站管理不同的线路)
在开发中,微服务就是将多个业务的共性进行抽取,做成独立的服务模块。eg.(登录模块、支付模块)
比较:
MVC 纵向分配 Controller控制层 Service业务层 Mapper数据层
微服务 横线分配 按服务进行分配
大厂:自主研发
中小公司:使用Spring Cloud,Netflix,Alibaba,…
Spring Cloud Alibaba 是Spring Cloud(微服务头牌)的一个子项目,致力于提供微服务开发的一站式解决方案。只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
默认核心功能(先了解):
默认支持 WebServlet、OpenFeign、RestTemplate、Spring Cloud Gateway, RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
基于Spring Cloud 服务注册与发现标准,借助Nacos进行实现,默认还集成了 Ribbon 的支持。
基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新。
基于Spring Cloud Stream 为微服务应用构建消息驱动能力。
使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker上执行。
基于Spring Cloud Alibaba实现的微服务,解决方案设计架构如图所示:
微服务项目一般都会采用聚合工程结构,可通过聚合工程结构实现共享资源的复用,简化项目的管理方式。
GitCGB2110IVProjects (工作区/空项目)
├── 01-sca //(微服务父工程)
├── sca-provider //服务提供方法
├── sca-consumer //服务消费方法
├── sca-gateway //网关服务
下载:在Maven的官网即可下载,点击访问Apache Maven。
4.0.0
com.jt
01-sca
pom
1.0-SNAPSHOT
sca-provider
sca-consumer
sca-gateway
sca-ui
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
org.projectlombok
lombok
provided
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
8
UTF-8
创建具体模块 Model工程
添加spring-boot-starter-web依赖
org.springframework.boot
spring-boot-starter-web
package com.jt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoUIApplication {
public static void main(String[] args) {
SpringApplication.run(DemoUIApplication.class, args);
}
}
Title
Hello Spring Cloud Alibaba
启动项目 浏览器访问http://localhost:8080/index.html
package 打包:
打包到本项目,一般在项目target目录下。
完成项目编译、单元测试、打包功能,不对项目进行部署。
install 打包:
打包到本地仓库,如果没设置在系统默认Maven仓库(File => settings => Build... => Build Tools => Maven中设置和查看)
完成项目编译、单元测试、打包功能,将项目部署到本地仓库。
deploy 打包:
打包并上传到远程仓库
完成项目编译、单元测试、打包功能,将项目部署到本地和远程仓库。
方案一:maven => clean
方案二:重启idea
(不要手动重启!!! file => invalidate Caches/Restart => invalidate and Restart)
在pom.xml文件中排除 添加需要使用的服务器