springcloud
一、微服务架构
微服务架构说一种架构模式,他提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终的价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTFUL API)。每个服务都是围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
springboot就可以将一个个的功能模块当成一个微服务,用springcloud进行管理连接这些微服务,构建成一个整的项目。
二、springCloud的维度
- 服务注册与发现:EUREKA
- 服务调用:NETFLIX OSS RIBBON或NETFLIX FEIGN
- 服务熔断:HYSTRIX
- 负载均衡:
- 服务降级:HYSTRIX
- 服务消息队列
- 配置中心管理
- 服务网关:NETFLIX Zuul
- 服务监控
- 全链路追踪
- 自动化构建部署
- 服务定时任务调度操作
服务分布式配置:spring cloud Config
服务开发:spring boot
三、springcloud和springboot的关系
- springboot专注于快速方便的开发单个个体微服务。
- springCloud是关注全局的微服务线条整理治理框架,他将springboot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等集成服务。
- springboot可以离开springcloud独立使用,开发项目,但是springcloud离不开springboot,属于依赖关系。
- springboot专注于快速、方便的开发单个个体微服务。springCloud关注全局的服务治理框架。
二、使用步骤
1.创建maven工程——搭建环境
修改字符编码:
注解生效激活:
java编译版本:
2.选择springcloud和springboot的版本
3.修改父pom文件
<packaging>pom</packaging>
<!-- 统一管理jar包版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>8.0.22</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java