谷粒商城--分布式基础篇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. SpringMVC=>解决JSON乱码问题

    <!-- 解决JSON乱码问题 --> <mvc:annotation-driven> <mvc:message-converters register-defaults ...

  2. SpringBoot 实现整合log4j2日志

    关于日志级别 共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. ...

  3. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  4. GO学习-(2) 从零开始搭建Go语言开发环境

    从零开始搭建Go语言开发环境 一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站( ...

  5. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

  6. YOLOv4没交棒,但YOLOv5来了!

    YOLOv4没交棒,但YOLOv5来了! 前言 4月24日,YOLOv4来了! 5月30日,"YOLOv5"来了! 这里的 "YOLOv5" 是带有引号的,因为 ...

  7. 扩展LLVM:添加指令、内部函数、类型等

    扩展LLVM:添加指令.内部函数.类型等 Introduction and Warning Adding a new intrinsic function Adding a new instructi ...

  8. pytest基础简介及实践举例

    一.pytest简介 pytest 是 python 的第三方单元测试框架,比自带的 unittest 更简洁和高效,同时兼容 unittest 框架.它还有如下优点: 1.简单灵活,容易上手,文档丰 ...

  9. Github_远程仓库多人协作操作,解决冲突

    前提:假设原已有一个代码仓库,加入协作者,大家一起完成一个项目. 一.添加伙伴-->伙伴同意加入-->伙伴clone,提交代码 1.创建者进入仓库主页 ==> Settings页面 ...

  10. 我的N年软件测试感悟

    1.前言 大家好!我是Meng前段时间,很荣幸被一合作伙伴邀请发表一篇文章,主题为"这些年,我所从事软件测试的一些感悟",正好趁着这个机会,我也好好总结一下. 2.测试培训 对于软 ...