一、微服务简介
微服务架构解决方案
二、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,…
二、SpringCloud 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实现的微服务,解决方案设计架构如图所示:
三、创建Spring Cloud项目
微服务项目一般都会采用聚合工程结构,可通过聚合工程结构实现共享资源的复用,简化项目的管理方式。
GitCGB2110IVProjects (工作区/空项目)├── 01-sca //(微服务父工程) ├── sca-provider//服务提供方法 ├── sca-consumer //服务消费方法 ├── sca-gateway//网关服务
1.创建空项目 GitCGB2110IVProjects
2.项目初始化
配置Maven 3.8.4
下载:在Maven的官网即可下载,点击访问Apache Maven。
配置jdk编译环境
3.创建工程
创建聚合父工程 编辑共享资源
删除父工程src目录
修改pom文件
4.0.0com.jt01-scapom1.0-SNAPSHOTsca-providersca-consumersca-gatewaysca-uiorg.springframework.bootspring-boot-dependencies2.3.2.RELEASEpomimportorg.springframework.cloudspring-cloud-dependenciesHoxton.SR9pomimportcom.alibaba.cloudspring-cloud-alibaba-dependencies2.2.6.RELEASEpomimportorg.projectlomboklombokprovidedorg.springframework.bootspring-boot-starter-testtestorg.junit.vintagejunit-vintage-engineorg.apache.maven.pluginsmaven-compiler-plugin3.8.188UTF-8
创建具体模块 Model工程
- 修改sca-ui的pom.xml文件
添加spring-boot-starter-web依赖
org.springframework.bootspring-boot-starter-web
- 创建启动类
package com.jt;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoUIApplication {public static void main(String[] args) {SpringApplication.run(DemoUIApplication.class, args);}}
创建测试类
Title Hello Spring Cloud Alibaba
启动项目 浏览器访问http://localhost:8080/index.html
四、常见问题整合
1.Maven打包 package install deploy区别
package 打包:
打包到本项目,一般在项目target目录下。
完成项目编译、单元测试、打包功能,不对项目进行部署。
install 打包:
打包到本地仓库,如果没设置在系统默认Maven仓库(File => settings => Build… => Build Tools => Maven中设置和查看)
完成项目编译、单元测试、打包功能,将项目部署到本地仓库。
deploy 打包:
打包并上传到远程仓库
完成项目编译、单元测试、打包功能,将项目部署到本地和远程仓库。
2.maven报错
方案一:maven => clean
方案二:重启idea
(不要手动重启!!! file => invalidate Caches/Restart=> invalidate and Restart)
3.项目删除
- 在项目结构中删除
- 从idea工作区中删除
- 将项目从父工程的pom文件中删除
- 移除重建项目module中的pom文件删除线
3.如果不使用tomcat怎么办
在pom.xml文件中排除 添加需要使用的服务器