玖叶教程网

前端编程开发入门

谷粒商城--分布式基础篇(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 [email protected]
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网关)注册到注册中心中,可以统一管理配置各个微服务配置文件。导入主要流程分如下几步

  1. 导入dependency配置
  2. 启动类加入@EnableDiscoveryClient自动配置
  3. 配置文件导入nacos的发现spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 (当然也有namespace、group、extension-configs可以配置)



2.OpenFeign远程调用

? 微服务A想调用微服务B中的接口。导入主要流程分如下几步

  1. 导入dependency配置
  2. 启动类加入``@EnableFeignClients(basePackages = "com.empirefree.gulimall.member.feign")`自动配置、
  3. 编写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();
}

  1. 注入使用接口即可(Feignservice是从nacos注册中心中找到被调用的服务接口,然后就可以再调用者中进行调用,所以必须先启动nacos)
  @Autowired
  private CouponFeignService couponFeignService;



3.GateWay网关

? 这里先从简,只配置nacos注册中心与gateway路由,后面做大了再改。

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848

spring:
  cloud:
    gateway:
      routes:
        - id: product_route
          uri: lb://gulimall-product
          predicates:
            - Path=/api/product/**
          filters:



4.实现效果

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言