程序员的资源宝库

网站首页 > gitee 正文

谷粒商城--分布式基础篇P1~P27

sanyeah 2024-04-13 16:11:44 gitee 3 ℃ 0 评论

谷粒商城--分布式基础篇P1~P27

去年3月份谷粒商城分布式基础、进阶、高级刚出的时候就开始学了,但是中途因为一些事就中断了,结果一直到现在才有时间重新开始学,看到现在网上这么多人都学完了,确实感觉到很惭愧,重新整理学习笔记吧,后续不断更新。


csdn csdn csdn csdn csdn


【谷粒商城--分布式基础篇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.架构流程

img


2.项目技术

img



??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网关)注册到注册中心中,可以统一管理配置各个微服务配置文件。导入主要流程分如下几步

  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.实现效果

在这里插入图片描述
在这里插入图片描述

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表