@toc
- 微服务简介
- SpringCloud Alibaba微服务解决方案
- 构建SpringCloud 项目/工程并进行环境初始化
- 创建聚合父工程
- 服务关系以及调用关系设计
- 服务器扩展(jetty使用配置)
-
微服务简介
1.1 背景分析
把大系统拆分为很多小系统,几个人负责一个服务这样每个服务独立的开发、测试和上线,代码冲突少了,每次上线就回归测试自己的一个服务即可,测试速度快了,上线是独立的,只要向后兼容接口就行了,不需要跟别人等待和协调,技术架构和技术版本的升级,几个人ok就行,成本降低,更加灵活了。
1.2 什么是微服务
微服务架构(MSA)的基础是将单个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署。
这些服务使用轻量级 API 通过明确定义的接口进行通信,围绕业务功能构建的,每项服务执行一项功能。由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求。
程序中的微服务,就是将各个业务系统的共性再进行抽取,做成独立的服务。
1.3 总结
微服务是分布式系统中的一种流行的架构模型,微服务架构(MSA)主要解决的是如何快速地开发和部署我们的服务,这对于一个能够适应快速开发和成长的公司是非常必要的。 -
SpringCloud Alibaba微服务解决方案
2.1 概述
Spring Cloud Alibaba 是Spring Cloud的一个子项目,致力于提供微服务开发的一站式解决方案。该项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
2.2 核心组件分析
1.服务限流降级
2.服务注册与发现
3.分布式配置管理
4.消息驱动能力
5.分布式事务
6.分布式任务调度
2.3解决方案架构设计
-
构建SpringCloud 聚合项目并进行环境初始化
3.1聚合工程结构
3.2创建空项目/工程
1.选择类型
2.工程命名
3.3环境配置
1.项目初始化配置
2.配置JDK编译环境
3.指定一下当前工作区的jdk编译版本
4.配置工作区中项目编码方式
-
创建聚合父工程
4.1创建父工程模块
1.选择类型:maven
2.模块命名
3.删除工程中的src目录(父工程不需要这个目录)
4.修改项目pom.xml文件内容
4.2创建服务提供方模块
4.2.1.选择类型
4.2.2.模块命名
1服务消费方模块(sca-consumer):
2.API网关服务模块(sca-gateway):
3.服务提供方模块(sca-provider):
4.服务用户模块(sca-ui):
4.1 测试用户模块
4.2 pom.xm文件配置
4.3 sca-ui测试:
-
服务关系以及调用关系设计
-
服务器扩展(jetty使用配置)
spring默认使用tomcat,如果需要使用jetty,则需要将tomcat的依赖排除在外,然后导入jetty的依赖包。
6.1代码片段
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Jetty适合长连接应用,就是聊天类的长连接 -->
<!-- 使用Jetty,需要在spring-boot-starter-web排除spring-boot-starter-tomcat,因为SpringBoot默认使用tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
6.2 sca-ui的pom.xml文件配置