[项目练手笔记-谷粒商城(SpringCloud Alibaba+vue前后端分离)]day02+day03 nacos,gateway的使用、前端入门学习
结合SpringCloud Alibaba我们最终的技术搭配方案:
SpringCloud Alibaba Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba Nacos:配置中心(动态配置管理)
SpringCloud Ribbon:负载均衡
SpringCloud Feign:声明式HTTP客户端(调用远程服务)
SpringCloud Alibaba Sentinel:服务容错(限流、降级、熔断)
SpringCloud Gateway: API网关(webflux 编程模式)
SpringCloud Sleuth:调用链监控
SpringCloud Alibaba Seata:原Fescar,即分布式事务解决方案
一、SpringCloud Alibaba Nacos的使用
1.在common模块中导入依赖
阿里巴巴统一依赖管理
<dependencyManagement>
<dependencies>
<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>
</dependencies>
</dependencyManagement>
nacos服务注册于配置中心
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.注册微服务
在application.yml中将对应的微服务注册到nacos中
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: gulimall-coupon #注册的名字
3.添加注册发现注解
在主方法上添加@EnableDiscoveryClient
二、OpenFeign的远程调用
1.引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.编写远程调用接口
为了方便起见,建立一个feign包专门用来存放远程调用接口
接口要声明调用哪个接口的哪个请求
//要被调用的controller的方法
@RequestMapping("/member/list")
public R memberFeign() {
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100-99");
return R.ok().put("coupons", Arrays.asList(couponEntity));
}
//feign接口,表明要调用的是微服务gulimall-coupon中的/coupon/coupon/member/list路径下的memberFeign方法
@FeignClient(value = "gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R memberFeign() ;
}
@RestController
@RequestMapping("member/member")
public class MemberController {
@Autowired
private MemberService memberService;
@Resource
private CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R memberCoupon() {
R coupons = couponFeignService.memberFeign();
MemberEntity memberEntity = new MemberEntity();
memberEntity.setUsername("小三");
return R.ok().put("member",memberEntity).put("coupons",coupons.get("coupons"));
}
3.配置主方法
@EnableFeignClients(basePackages="com.xiaoxiao.gulimall.member.feign")
访问localhost:8000/member/member/coupons,验证远程调用了
三、Nacos作为服务配置中心
nacos作为配置中心都在我以前的学习笔记中有,笔记地址
1.引入依赖
<!-- 配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.创建bootstrap.yml
bootstrap.yml作为全局配置,优先级高于application.yml,可以在其中配置注册配置地址,其余配置从nacos配置中心拉取
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 36cbae64-6c6a-443a-87d3-f4ade9651be8 #命名空间
ext-config:
- dataId: datasource.yml
group: dev
refresh: true
- dataId: mybatis.yml
group: dev
refresh: true
- dataId: other.yml
group