关于 cloud 各种组件的停更/升级/替换
我们先来了解一下微服务中各个组件的停更/升级/替换
-
服务注册中心
- Eureka 许多一开始使采用微服务架构的在使用 Eureka 作为服务注册中心
- zookeeper 与 Dubbo 成体系
- Consul 目前使用的较少(为了知识完整性,会学习一下)
- Nacos 阿里主推的,入驻 Spring Cloud,很重要
-
服务调用
- Ribbon
- LoadBalancer 正在萌芽阶段,有可能会取代 Ribbon
-
服务调用2
- Feign 已经不再使用了,逐步被 OpenFeign 替代
- OpenFeign
-
服务降级
- Hystrix 经典的“豪猪哥”,目前国内还有很多在使用
- resilience4j
- sentienl 阿里巴巴推出的,很重要
-
服务网关
- zuul 不再更新了
- zuul2 未来未知
- gateway 大范围使用
-
服务配置
- Config
- Nacos
-
服务总线
- Bus
- Nacos
父工程 project 的创建
做什么项目
由于是演示项目,因此就做一个经典的支付订单服务就可以了。
创建项目
本项目以 Idea 为开发工具 File – New – Project 创建 Maven 项目
设置父工程的名称
选择 Maven 版本
统一使用 maven 3
设置字符编码
设置注解生效激活
Java 版本选择8
父工程 pom 文件
当整个项目初始化完成之后,需要改写父工程 pom 文件,引入所有需要的依赖,依赖内容如下:
<!--
packing的默认值为jar
父工程的packing是pom
pom的意思是使用maven的分模块管理,一般pom中配置这个,表示pom项目里面没有java代码
只是为了聚合工程或传递依赖使用的
一般来说父工程的packing都是pom
例如:当设置为pom的时候,application.yml中配置的端口号也不会生效
-->
<packaging>pom</packaging>
<!--统一管理各种jar包的版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<junit.version>4.12</junit.version>
<lombok.version>1.18.10</lombok.version>
<log4j.version>1.2.17</log4j.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>2.1.1</mybatis.spring.boot.version>
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2.RELEASE-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--集成spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--集成spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>springcloud-learn-2020</finalName>
<!--maven插件-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
<version>2.2.2.RELEASE</version>
</plugin>
</plugins>
</build>
至此,整个父工程就已经创建完成了,下期我们将创建第一个微服务模块。
项目代码和相关资料已经开源,需要的可以自行获取。