一、微服务简介

微服务架构解决方案

二、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文件中排除 添加需要使用的服务器