谷粒商城--分布式基础篇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. Task类学习教程—组合任务ContinueWith

    Task类学习教程-组合任务.ContinueWith 一.简介 通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务.ContinueWith是Task根据其自身状况,决定后续应该作何操作 ...

  2. Tesla T4视频编码性能分析

    Tesla T4视频编码性能分析 从开普勒开始的所有 NVIDIA GPUs 都支持完全加速的硬件视频编码: GPUs 支持完全加速的硬件视频解码.最近发布的图灵硬件提供了张量核心和更好的机器学习性能 ...

  3. ST为飞行时间传感器增加了多目标测距

    ST为飞行时间传感器增加了多目标测距 ST adds multi-object ranging to time-of-flight sensors STMicroelectronics已经扩展了其Fl ...

  4. frp实现NAS外网访问

    开始 入手了NAS之后就看是漫漫的折腾内网穿透的不归路.用的最多最简单的是下面三种 QC:群晖自带的,速度在100kb左右,能不能连上有时候都是运气,极其不稳定. DDNS:最推荐的方式.上下行都取决 ...

  5. java并发编程JUC第九篇:CountDownLatch线程同步

    在之前的文章中已经为大家介绍了java并发编程的工具:BlockingQueue接口.ArrayBlockingQueue.DelayQueue.LinkedBlockingQueue.Priorit ...

  6. 『动善时』JMeter基础 — 48、使用JMeter自身代理录制测试脚本

    目录 1.测试计划内包含的元件 2.HTTP代理服务器的设置内容 3.设置浏览器的代理服务器 4.录制脚本 5.查看录制的脚本 6.HTTP代理服务器的排除模式 7.保存脚本 录制脚本只不过是我们日常 ...

  7. 安卓控件RecycleView的简单使用

    RecycleView的使用 目录 RecycleView的使用 技术概述 技术详述 遇到问题和解决 总结 参考文献 技术概述 RecycleView是谷歌官方对ListView的改进(并不是替代), ...

  8. ES6学习笔记之 let与const

    在js中,定义变量时要使用var操作符,但是var有许多的缺点,如:一个变量可以重复声明.没有块级作用域.不能限制修改等. //缺点1:变量可以重复声明 var a=1; var a=2; conso ...

  9. 『无为则无心』Python序列 — 20、Python元组的介绍与使用

    目录 1.元组的应用场景 2.定义元组 3.元组的常见操作 @1.按下标查找数据 @2.index()方法 @3.count()方法 @4.len()方法 4.元祖中的列表元素 5.扩展:序列封包和序 ...

  10. 5.15、tomcat下部署JPress

    1.说明: jpress类似于wordpress,wordpress是php语言开发的国外开源软件,jpress是java语言 开发的国内开源软件: 2.下载软件包: [root@slave-node ...