springboot:提供了快速开发微服务的能力
springcloud提供了微服务治理的能力(服务注册与发现、服务降级、限流、熔断、网关、负载均衡、配置中心...),为微服务开发提供了全家桶服务
springboot的版本查看地址:Spring Boot
springcloud的版本查看地址:Spring Cloud
详细版本对应信息查看:https://start.spring.io/actuator/info
Springcloud与springcloud-alibaba关系
◆ 我们通常说的SpringCloud,泛指Spring Cloud Netflix,也是springcloud第一代
◆ SpringCloud Alibaba是SpringCloud的子项目,是阿里巴巴结合自身微服务实践,
◆ SpringCloud Alibaba符合SpringCloud标准,依赖于springcloud
确定方式:通过查看springcloud alibaba 官网确定
https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明
https://github.com/alibaba/spring-cloud-alibaba/wiki/
这里使用:
springcloud-alibaba: 2.2.5.RELEASE
springcloud: Hoxton.SR8
springboot: 2.3.2.RELEASE
父工程锁定springboot、springcloud、springcloud-alibaba版本
下图为示例项目模块 父项目用maven项目就可以
下图是父项目的pom.xml cloud1的pom.xml
4.0.0
com.qianfeng
cloud1
1.0-SNAPSHOT
pom
goods
orders
commons
org.springframework.boot
spring-boot-starter-parent
2.3.2.RELEASE
8
8
UTF-8
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.5.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR8
pom
import
项目的goods older相当于是一个nacos客户端
goods的pom.xml
描述父项目 父项目里面写上关联子项目才算关联成功
4.0.0
com.qianfeng
cloud1
1.0-SNAPSHOT
com.qianfeng
goods
0.0.1-SNAPSHOT
goods
goods
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.projectlombok
lombok
org.springframework.boot
spring-boot-test
test
junit
junit
test
org.junit.jupiter
junit-jupiter
test
org.springframework.boot
spring-boot-maven-plugin
下图是goods的配置文件 这是一个springboot项目
spring:
application:
name: goods
cloud:
nacos:
discovery:
server-addr: localhost:8848
username: nacos
password: nacos
server:
port: 9001
下图是goods一个controller controller的包要写在goods下面 访问时访问配置的9001
@RestController
@RequestMapping("/goods")
public class GoodsController {
@RequestMapping("/getOne")
public Goods getOne(Integer gid){
Goods goods = new Goods(gid, "小浣熊", 1);
return goods;
}
}
order的pom.xml跟goods的xml一样 导依赖描述父项目 只是配置文件端口改为9002
commons是一个管理实体类的项目模块 pom文件如下 是一个maven项目
cloud1
com.qianfeng
1.0-SNAPSHOT
4.0.0
commons
org.projectlombok
lombok
8
8
UTF-8
例如order项目想引入goods实体类 导入commons的gva坐标就可以在order项目里使用实体类
在order订单的启动类里面注入RestTemplate对象 注入
在order的controller里面写如下代码 可以访问到goods的路径 并返回goods实体类
下图的http://goods 这里的goods是服务名 如何根据服务名服务就带有ip跟端口 如何做如下操作
在RestTemplate对象上加@LoadBalanced注解 就可以通过服务名访问
复制一个goods改为goods_8001 端口改为8001
复制过来只是一个文件夹不是项目,这时先进来改pom.xml,artifactID name都改为goods_8001
这时点击maven里的加号,选择goods_8001的pom.xml点ok 就成了一个项目
这时看nacos服务 goods的实例数成了两个 就做了集群
这时再访问下图链接
实现服务间远程调用
示例:
下图是goods里面的一个test
返回的是响应体