这一部分,看是很简单,却是很关键,微服务的基础概念概念就不讲了,百度很多;
主要涉及springboot、springcloud、springcloud alibaba的版本选择;SpringCloud各组件停更说明及替代方案;父工程、基础服务搭建;
一、springboot、springcloud、springcloud alibaba的版本选择
版本选择很关键,尤其springboot和springcloud官方是有很明确的版本对应表的,当前官方Cloud推荐的稳定版为Hoxton:
https://start.spring.io/actuator/info
这个网站有最新官方推荐的版本对应关系区间,必须严格按照,不然会有很多麻烦;
经过最终对比,我们最终选择的版本对应表如下:
Cloud | Hoxton.SR1 | Java | Java8 |
Boot | 2.2.2.Release | Maven | 3.5及以上 |
Cloud Alibaba | 2.1.0.Release | Mysql | 5.7及以上 |
以上三位在项目中的基础依赖如下:
<!-- spring boot 2.2.2 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!-- spring cloud Hoxton.SR1 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</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>
二、SpringCloud各组件停更说明及替代方案:
众所周知,springcloud netflex解决方案,已经进入了维护期,停更了;
停更不停用:被动修复bugs,不再接受合并请求,不再发布新版本;
它一停更,引发了大量的“升级惨案”,那么我们既然要用springcloud,那么必然要去寻找对应的替代组件(而且,通过下图,我们还不难发现,Alibaba的Nacos是重中之重):
三、创建父工程、基础服务搭建
1、采用聚合方式创建工程,父工程package为pom;
通过dependencyManagement定义常用依赖的版本号,在之后的子模块中相关模块会自动继承父工程的groupId和版本号;
这些基础创建项目的过程就不多讲了;
只是简单地带一下,创建了哪些工程,便于后面的内容使用;
2、第一个子工程:支付服务提供者 —— cloud-provider-payment8001:
3、第二个子工程:消费者订单服务 —— cloud-consumer-order80:
此 cloud-consumer-order80 服务,暂时使用RestTemplate 的方式,跨服务调用 cloud-provider-payment8001的 api 接口。
4、为了方便多个服务公用相同的实例类、工具类、第三方依赖等,我又将一不分类内容抽离出来,生成了一个公共服务 —— cloud-api-commons:
到这里springcloud微服务解决方案的准备工作算是完成了,到这里正式的微服务还没开始;
下面将会开始正式的微服务,会首先引入 Eureka 服务注册与发现;
个人此项目代码地址(持续更新):