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

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





【谷粒商城--分布式基础篇P1~P27】: https://blog.csdn.net/Empire_ing/article/details/118860147


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 失败

所以我整体启动流程是:

#管理员身份切换到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项目启动失败
4.Nacos启动失败:

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



谷粒商城--分布式基础篇(P1~P27)的更多相关文章

  1. 谷粒商城--分布式基础篇P28~P101(完结)

    谷粒商城--分布式基础篇P28~P101(完结) 前面1-27节主要是环境配置特别难,后面的28~101节主要是前端编写的代码较多以及后台的CRUD操作比较多.因为内容很多,所以我是根据自己想学的点进 ...

  2. 谷粒商城--分布式高级篇P102~P128

    谷粒商城--分布式高级篇P102~P128 由于学习的时间也比较少,只有周六周末才有时间出来学习总结,所以一篇一篇慢慢更新吧,本次总结内容为Elasticsearch(相关内容:kibana,es,n ...

  3. g4e基础篇#2 Git分布式版本控制系统的优势

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  4. 3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

    高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建 如果大家看了我的上一篇<2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离>文章,如果能很好的 ...

  5. 手摸手,带你用Beego撸商城系列一(基础篇)

    完整项目地址: go-shop-b2c 系列文章: 手摸手,带你用 Beego撸商城 系列一(基础篇) 手摸手,带你用 Beego撸商城 系列二(登录篇) 手摸手,带你用 Beego撸商城 系列三(系 ...

  6. [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇

    [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 目录 [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 1. ...

  7. vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录

    一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...

  8. c# 扩展方法奇思妙用基础篇八:Distinct 扩展(转载)

    转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distin ...

  9. 小猪猪逆袭成博士之C++基础篇(三)字符串

    小猪猪逆袭成博士之C++基础篇(三)字符串 String 写在题外的话: 非常感谢在我发了第一篇随笔以后有很多人看还评论了,这大概就是一种笔记性质的,也不一定全对,如果不对的地方请指出来让我加以改正. ...

随机推荐

  1. Django基本文件配置

    1.setting.py (1) ALLOWED_HOSTS = ['*'] (2) INSTALLED_APPS = ['app_name'] (3) TEMPLATES 中的   'DIRS': ...

  2. Linux 挂载盘

    在192.168.6.203上,挂接第二块硬盘 fdisk -l 1.fdisk /dev/vdb 命令(输入 m 获取帮助):n Partition type: p primary (0 prima ...

  3. Docker学习(13) Docker容器的网络连接

    Docker容器的网络连接 Docker容器的网络基础 先安装网桥管理工具 Docker容器的互联 默认 Docker容器与外部网络的连接

  4. Python+Selenium学习笔记17 - HTML测试报告

    运行少量case时 1 # coding = utf-8 2 3 from selenium import webdriver 4 import unittest 5 import time 6 fr ...

  5. grasshopper | 通过图层引用线条 报错:“ Data conversion failed from Guid to Curve ”的避免方法

    需求:通过 LunchBox - > layer reference 电池 可以快速选中图层所在的线条,但是选择的数据流错误 直接选择会报错--"Data conversion fai ...

  6. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  7. PyTorch 进行 Neural-Transfer

    PyTorch 进行 Neural-Transfer 1.简介 本文讲解如何实现由 Leon A. Gatys,Alexander S. Ecker和Matthias Bethge提出的Neural- ...

  8. Turing渲染着色器网格技术分析

    Turing渲染着色器网格技术分析 图灵体系结构通过使用 网格着色器 引入了一种新的可编程几何着色管道.新的着色器将计算编程模型引入到图形管道中,因为协同使用线程在芯片上直接生成紧凑网格( meshl ...

  9. WPF 后台代码做 TranslateTransform 的动画

    本文告诉大家,在后台代码,对 TranslateTransform 做动画的方法 今天小伙伴问我一个问题,说为什么相同的代码,如果设置到按钮上,是可以让按钮的某个属性变更,但是如果设置给 Transl ...

  10. Spring Boot WebFlux-07——WebFlux 中 Redis 实现缓存

    第07课:WebFlux 中 Redis 实现缓存 前言 首先,补充下上一篇的内容,RedisTemplate 实现操作 Redis,但操作是同步的,不是 Reactive 的.自然,支持 React ...