谷粒商城--分布式基础篇(P1~P27)
谷粒商城--分布式基础篇(P1~P27)
谷粒商城--分布式基础篇P1~P27
去年3月份谷粒商城分布式基础、进阶、高级刚出的时候就开始学了,但是中途因为一些事就中断了,结果一直到现在才有时间重新开始学,看到现在网上这么多人都学完了,确实感觉到很惭愧,重新整理学习笔记吧,后续不断更新。
【谷粒商城--分布式基础篇P1~P27】: https://blog.csdn.net/Empire_ing/article/details/118860147
目录
????1.分布式基本概念
1.微服务
2.分布式&集群&节点
3.远程调用&负载均衡
4.注册中心&配置中心
5.服务熔断&服务降级
6.API网关
????2.项目架构
1.架构流程
2.项目技术
????3.分布式项目启动相关报错
1.npm install 失败
2.renren-fast-vue启动页面报错 :<% if (process.env.NODE_ENV === ‘production‘) { %> <% }else { %> <% } %>
3.renren-fast项目启动失败
4.Nacos启动失败:
????4.分布式项目内容
1.Nacos注册中心、配置中心
2.OpenFeign远程调用
3.GateWay网关
4.实现效果
????1.分布式基本概念
1.微服务
将一个大型单体应用,拆分成各个独立部署运行的单个微服务
2.分布式&集群&节点
分布式:京东不同业务分布在不同地方(指的是一种实现方式)
集群:每个业务由多台服务器来实现完成(指的是具体的物理形态)
节点:集群中的一个服务器
3.远程调用&负载均衡
远程调用:各个微服务之间互相调用(springcloud中采用HTTP+JSON方式)
负载均衡:在上述调用或者用户访问的时候采用将请求均衡分配给A,B,C等其他机器来实现,不要让任何一台机器太忙,也不要让任何一台机器太闲(基于各种负载均衡算法:轮询、最小连接、散列)
4.注册中心&配置中心
注册中心:各个微服务在注册中心中注册,这样哪些服务挂了都能知道,方便统一管理
配置中心:上面说了,每个微服务是由多台服务器来实现,所以修改每个微服务相关配置需要由配置中心统一管理。
5.服务熔断&服务降级
服务熔断:微服务A调用微服务B时,若B挂了,则A的频繁访问需要启用断路保护机制,返回一个默认数据,避免耗时等待和浪费请求资源
服务降级:系统高峰期,系统资源紧张,让非核心业务降级运行,去处理其他业务。比如淘宝在天猫双十一,就无法访问退单的微服务,这里就是将退单的服务降级、让服务挂掉,不让你访问,或者报错等等。
6.API网关
API GateWay网关:拦截用户请求,包含了上面负载均衡、熔断、认证、限流等功能。相当于大门保安
????2.项目架构
1.架构流程
2.项目技术
????3.分布式项目启动相关报错
node环境:node.js--版本v10.20.0 (下面命令一定要以管理员身份启动)
注:很多情况下npm会报错,但是使用cnpm就能正常下载启动
1.npm install 失败
没有package.json解决办法:https://blog.csdn.net/weixin_40161974/article/details/99441501
找不到淘宝的库:用
cnpm install
管理员身份启动
所以我整体启动流程是:
#管理员身份切换到renren-fast-vue下(node.js-v10.20.0)npm config set registry http://registry.npm.taobao.org/ cnpm install npm run dev
2.renren-fast-vue启动页面报错 :<% if (process.env.NODE_ENV === ‘production‘) { %> <% }else { %> <% } %>
cnpm rebuild node-sass --save-dev npm uninstall node-sass cnpm install node-sass@4.14 npm run dev
3.renren-fast项目启动失败
启动项目时报错--定时任务无法注入
解决办法:https://blog.csdn.net/shenlf_bk/article/details/104306739
4.Nacos启动失败:
无法启动tomcat:
解决办法:https://blog.csdn.net/rengn/article/details/115542321?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
????4.分布式项目内容
在上述前后端基本环境配置好后,每次项目启动都需要提前准备的环境:nacos启动、renren-fast启动。然后就可以启动项目编写代码了。
1.Nacos注册中心、配置中心
所有微服务(包括GateWay网关)注册到注册中心中,可以统一管理配置各个微服务配置文件。导入主要流程分如下几步
导入dependency配置
启动类加入
@EnableDiscoveryClient
自动配置配置文件导入nacos的发现
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
(当然也有namespace、group、extension-configs可以配置)
2.OpenFeign远程调用
微服务A想调用微服务B中的接口。导入主要流程分如下几步
导入dependency配置
启动类加入``@EnableFeignClients(basePackages = "com.empirefree.gulimall.member.feign")`自动配置、
编写Feignservice文件
package com.empirefree.gulimall.member.feign;import com.empirefree.common.utils.R;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;@FeignClient("gulimall-coupon")public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R membercoupones(); }
注入使用接口即可(Feignservice是从nacos注册中心中找到被调用的服务接口,然后就可以再调用者中进行调用,所以必须先启动nacos)
@Autowired private CouponFeignService couponFeignService;
3.GateWay网关
这里先从简,只配置nacos注册中心与gateway路由,后面做大了再改。
spring: cloud: nacos: config: server-addr: 127.0.0.1:8848spring: cloud: gateway: routes: - id: product_route uri: lb://gulimall-product predicates: - Path=/api/product/** filters:
4.实现效果
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
https://www.cnblogs.com/meditation5201314/p/15024431.html