谷粒商城--分布式基础篇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. 项目记事【Git】:git pull 出错 error: cannot lock ref 'refs/remotes/origin/feature/hy78861': is at d4244546c8cc3827491cc82878a23c708fd0401d but expected a6a00bf2e92620d0e06790122bab5aeee01079bf

    今天 pull 代码的时候碰到以下问题(隐去了一些公司敏感信息): XXX@CN-00012645 MINGW64 /c/Gerrard/Workspace/XXX (master) $ git pu ...

  2. 书列荐书 |《滚雪球:巴菲特和他的财富人生》【美】艾丽斯&#183;施罗德著

    一开始听说这本书比较不错,但是比较搞笑的是,我买了之后才发现还有个下册.于是我决定把书退回去,并用了两天的时间把它给看完了..基本看的差不多了. 沃伦·巴菲特从上小学,初中,高中就已经变得有经济头脑了 ...

  3. 电脑华硕A455L系列,机械硬盘换成固态硬盘,光驱位改放机械硬盘

    电脑一直以来都很卡,直到最近用的不舒服了,就去查查原因,发现是磁盘读取爆表!只好想起来换固态硬盘,光驱改放机械硬盘... 买的固态硬盘是个杂牌军,但是店家说工艺不错,只好将信将疑,用用再说吧. 首先确 ...

  4. C# MVC(File)控件多张图片上传加预览

    刚来公司实习,老板叫我写一个积分商城网站.用的是公司的框架结构搭建的后台,所以后台的图片上传不需要自己写.但是前台的评价图片就需要自己手写了,在网上找了很多代码发现都用不了.问了很多人也都没有实现! ...

  5. 3D-camera结构光原理

    3D-camera结构光原理 目前主流的深度探测技术是结构光,TOF,和双目.具体的百度就有很详细的信息. 而结构光也有双目结构光和散斑结构光等,没错,Iphone X 的3D深度相机就用 散斑结构光 ...

  6. OneFlow 概念清单

    OneFlow 概念清单 本文将对 OneFlow 中涉及到的,常用的一些概念/名词做一个概括性的解释.主要内容针对算法工程师和框架开发者分为以下两部分: 算法开发 框架开发 在算法开发部分,将解释深 ...

  7. Python基础_python的数据类型

    一.Python 的标准数据类型 二.以下单个实际举例分析数据类型 2.1 python的数字类型 Int:整型,Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python ...

  8. mybatis——解决属性名和数据库字段名不一致问题

    首先说一下,我的数据库名字叫mybatis,里边有一张user表,表中有三个字段,id.name.pwd:然后实体类中对应三个属性id.name.password(id和name跟数据库字段名一致,但 ...

  9. 来了!STM32移植LuatOS,潘多拉示例全新教程

    进击的五月,继上期<使用Air724UG制作简易贪吃蛇>教程之后,@打盹的消防车 又为大家带来基于STM32的潘多拉LuatOS移植全新教程: 为什么使用潘多拉作为教程呢? STM32不能 ...

  10. 【题解】Luogu2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...