尚硅谷--谷粒商城个人笔记(第一节 1~44集)

整体的架构

项目技术与特色

  • 前后分离开发,开发基于vue的后台管理系统SpringCloud 全新的解决方案
  • 应用监控、限流、网关、熔断降级等分布式方案
  • 全方位涉及透彻讲解分布式事务、分布式锁等分布式系统的难点
  • 分析高并发场景的编码方式,线程池,异步编排等
  • 使用压力测试与性能优化
  • 各种集群技术的区别以及使用
  • CI/CD 使用

实现:

1)、服务熔断:a. 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据

2)、服务降级:a. 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者简单处理【抛异常、返回NULL、调用Mock数据、调用Fallback处理逻辑】。

2、API网关

在微服务架构中,APIGateway作为整体架构的重要组牛,它抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决很多API管理难题。

微服务划分图

liunx环境服务器,我们使用阿里云服务器,可以跳过安装mysql,docker,redis等之后需要用再返回来补一下配置(第6,7,8,9,10,11,12集)

我的环境:java JDK1.8,maven 3.91

安装相关软件idea,vscode,git 已全部成功安装(第12,13集)

在IDEA逐个创建各各微服务,已全部创建

使用IDEA提交GIT

全程参考这位大佬的笔记,可以成功了 :IDEA 使用 Git 操作详解_idea git-CSDN博客

MYSQL的初始化(第15集)

包的依赖问题参考大佬

java.lang.IllegalStateException: Error processing condition 架包依赖版本冲突修复-CSDN博客

我这里由于配置了nginx,导致前端验证码出不来。

之后使用人人开源,创建各各微服务模块(第16集)、

把gulimall_coupon,member,product,ware用代码生成器把的CRUD给添加好(第19集)

把springcloud-alibaba给加入项目(第20集)

使用nacos作为注册中心(第21集)

nacos使用

第一步

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第二步
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
}
}

第三步
注意:每一个应用都应该有名字,这样才能注册上去。修改 application.properties 文件
spring.application.name=service-provider
server.port=8000

测试使用 feign 远程调用

Feign 使用三步
1、导包 openfeign
2、开启@EnableFeignClients 功能
3、编写接口,进行远程调用


member类(消费者):
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}

@Autowired
private Test1 test1;

    @RequestMapping("/coupons")
    public R test(){
        MemberEntity memberEntity=new MemberEntity();
        memberEntity.setNickname("zhangsan");
        R memberCoupons = test1.membercoupons();
        return memberCoupons.put("member",memberEntity).put("coupons",memberCoupons.get("coupons"));
    }



@FeignClient("gulimall-coupon")
public interface Test1 {

    @GetMapping("/coupon/coupon/member/list")
    public R membercoupons();
}


CouponController 提供调用者


@RestController
@RefreshScope
@RequestMapping("coupon/coupon")
public class CouponController {

    @RequestMapping("/member/list")
    public R memberCoupons(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("discount 20%");
        return R.ok().put("coupons",Arrays.asList(couponEntity));
    }
}

nacos作为配置中心(第23集)

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>


spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
主要配置应用名和配置中心地址

Nacos Config 数据结构
Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置。

Spring Cloud 应用获取数据
dataID:
在 Nacos Config Starter 中,dataId 的拼接格式如下
 ${prefix} - ${spring.profiles.active} . ${file-extension} prefix 默认为 spring.application.name
的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
 spring.profiles.active 即为当前环境对应的 profile
注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成
${prefix}.${file-extension}
file-extension 为配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension 来配置。 目前只支持 properties 类型。
Group:
Group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

从nacos中获取配置

完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment
的 PropertySources 中 。 这 里 我 们 使 用 @Value 注 解 来 将 对 应 的 配 置 注 入 到
SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能

user.id
user.age

@RefreshScope
class SampleController {
@Value("${user.name}")
String userName;
@Value("${user.age}")
int age;
}

Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos

nacos配置命令空间和配置集(第24集)

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=19944226-9bb3-466d-9eb6-76f556ea09ec
spring.cloud.nacos.config.group=dev
代表在命名空间dev 19944226-9bb3-466d-9eb6-76f556ea09ec(编号)下的分组group为dev的gulimall-coupon.properties文件

加载多个配置文件(第25集)

应用场景,对于多个微服务使用相同的数据源,比如使用同一组数据库,可以不用写到同一个配置文件,可以集中写到nacos配置中。

spring.cloud.nacos.config.ext-config[0].data-id=datasouce.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=qita.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

第27集,使用springcloud-gateway技术。解决问题,可以如果有服务器进行掉线了,网关可以帮我们路由好的服务器。应用场景2:客户端可以统一请求网关,gateway进行自己分配路由。基础配置很好配置,省略。

第28集~第44集全为前端内容直接抄

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值