谷粒商城:01. 分布式基础项目环境搭建

news/2025/3/15 16:54:47/

一、项目简介

1、项目背景

  1. 电商模式:市面上有 5 种常见的电商模式 B2BB2CC2BC2CO2O
    • B2B模式:B2BBusiness to Business), 是指商家与商家建立的商业关系。 如:阿里巴巴
    • B2C模式:B2CBusiness to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客” 模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、 天猫、小米商城
    • C2B模式:C2BCustomer to Business),即消费者对企业。先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产
    • C2C模式:C2CCustomer to Consumer),客户之间自己把东西放上网去卖,如:淘宝,闲鱼
    • O2O模式:O2OOnline To Offline),也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

2 、谷粒商城

谷粒商城是一个 B2C 模式的电商平台,销售自营商品给客户。

3、项目架构图

  1. 项目微服务架构图

    谷粒商城-微服务架构图.jpg

    项目前后端分离开发,分为内网部署外网部署

    • 外网部署

      面向公众访问,部署前端项目,包括手机APP和电脑Web网站。

    • 内网部署

      整个后台服务集群。

    公众使用客户端完成相应功能,比如登录、注册等,都需要通过客户端给后台服务发送请求。

  2. 微服务划分图

    image.png

  3. 项目技术和特色

    • 前后分离开发,并开发基于 vue 的后台管理系统
    • SpringCloud 全新的解决方案
    • 应用监控、限流、网关、熔断降级等分布式方案 全方位涉及
    • 透彻讲解分布式事务、分布式锁等分布式系统的难点
    • 分析高并发场景的编码方式,线程池,异步编排等使用
    • 压力测试与性能优化
    • 各种集群技术的区别以及使用
    • CI/CD 使用

4、项目前置要求

学习项目的前置知识

  • 熟悉 SpringBoot 以及常见整合方案
  • 了解SpringCloud
  • 熟悉 gitmaven
  • 熟悉 linuxredisdocker 基本操作
  • 了解 htmlcssjsvue
  • 熟练使用 idea 开发项目

二、分布式基础概念

1、微服务

微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个小服务运行在 进程中,并使用轻量级机制通信,通常是 HTTP API。这些服务围绕业务能力来构建, 并通过完全自动化部署机制来独立部署。这些服务使用不同的编程语言书写,以及不同数据存储技术,并保持最低限度的集中式管理。

简而言之:拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行。

在这里插入图片描述

2、集群&分布式&节点

集群是个物理形态,分布式是个工作方式

只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;

《分布式系统原理与范型》定义:

“分布式系统是若干独立计算机的合集,这些计算机对于用户来说就像单个相关系统。”

分布式系统(distributed system)是建立在网络之上的软件系统。

分布式与集群的区别:

分布式:将不同的业务分布在不同的地方。

  • 不同业务
  • 不同地方
  • 业务拆分

集群:将几台服务器集中在一起,实现同一业务。

  • 多个机器
  • 同一业务
  • 同一地方

例如:京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群。每一个小的业务,比如用户系统,访问压力大的时候一台服务器是不够的。我们就 应该将用户系统部署到多个服务器,也就是每一个业务系统也可以做集群化

分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

节点:集群中的一个服务器

3、远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我 们称为远程调用。

SpringCloud 中使用 HTTP+JSON 的方式完成远程调用

在这里插入图片描述

优势:天然的跨平台性。HTTP请求与JSON在任何平台都可以使用。

4、负载均衡

在这里插入图片描述

分布式系统中,A 服务需要调用 B 服务,B 服务在多台机器中都存在,A 调用任意一个服务器均可完成功能。

为了使每一个服务器都不要太忙或者太闲,我们可以负载均衡的调用每一个服务器,提升网站的健壮性。

  • 常见的负载均衡算法:
    • 轮询: 为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直 到最后一个,然后循环。
    • 最小连接: 优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下 可以考虑采取这种方式。
    • 散列: 根据请求源的IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

5、服务注册/发现&注册中心

A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务已经下线。解决这个问题可以引入注册中心;

在这里插入图片描述

如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的服务。

  • 流程
    • 服务上线 — 注册到注册中心
    • 服务调取 — 从注册中心中发现所需服务

注册中心集中管理服务列表清单

6、配置中心

在这里插入图片描述

每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置。

配置中心用来集中管理微服务的配置信息

7、服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,

有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。

在这里插入图片描述

  1. 服务熔断:

    设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务,本地直接返回默认的数据。

    多次调用某服务失败后,不再调用,返回默认数据。

  2. 服务降级

    在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者简单处理【抛异常、返回 NULL、调用 Mock 数据、调用 Fallback 处理逻辑】。

    系统高峰期非核心业务不在处理或简单处理。

8、API网关

在微服务架构中,API Gateway作为整体架构的重要组件,它 抽象了微服务中都需要的公共功能 ,同时提供了 客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决了很多API管理难题

在这里插入图片描述

三、环境搭建

1、安装 linux 虚拟机

  1. 开启CPU虚拟化。

    这里以Dell台式机为例,开机F2进入BIOS系统,如图勾选设置即可。

    在这里插入图片描述

  2. 下载&安装 VirtualBox (前提条件:完成第一步开启CPU虚拟化。)

    • 下载VirtualBox,我这里下载6.1版本的。

    • 选择Windows hosts即可。

      在这里插入图片描述

    • 下载完成后安装即可。

      在这里插入图片描述

    • 运行VirtualBox

      在这里插入图片描述

  3. 下载&安装&使用 Vagrant

    Vagrant可以结合VirtualBox快速搭建虚拟机,不在需要下载镜像。

    • 下载Vagrant

      在这里插入图片描述

    • 下载完成后安装即可。

      在这里插入图片描述

    • 验证是否安装完成。

      cmd 通过 命令 vagrant来验证是否安装成功。

      在这里插入图片描述

  4. 打开 window cmd 窗口,运行 Vagrant init centos/7,即可初始化一个 centos7 系统

    使用命令vagrant init centos/7初始化虚拟机。

    在这里插入图片描述

    注意:vagrant init后跟的名称必须与Vagrant官方镜像仓库中的名称一致才可以。

  5. 运行 vagrant up 即可启动虚拟机。系统 root 用户的密码是 vagrant

    在这里插入图片描述

  6. vagrant 其他常用命令

    • vagrant ssh:自动使用 vagrant 用户连接虚拟机。

      使用命令vagrant ssh连接虚拟机,默认用户名为vagrant,可以使用linux命令。

      在这里插入图片描述

    • vagrant reload:重启虚拟机

    • vagrant upload source [destination] [name|id]:上传文件

    • 使用命令exit;退出与虚拟机连接

      在这里插入图片描述

    • Vagrant 命令行

  7. 可以在VirtualBox中对虚拟机进行管理

    在这里插入图片描述

  8. 注意:在命令行中使用vagrant命令时,需要确保所在文件夹有Vagrantfile文件。

    在这里插入图片描述

  9. 默认虚拟机的 ip 地址不是固定 ip,开发不方便

    在这里插入图片描述

    • 修改 Vagrantfile,查询本机IP,查询VirtualBox网关,将配置文件中IP的前三位与网关改为一致。

      在这里插入图片描述

    • 重新使用 vagrant up 启动机器即可,然后再 vagrant ssh 连接机器。

      使用命令ip addr来查看虚拟机IP网络地址

      在这里插入图片描述

    • windows和linux互相ping测试均可ping通

      在这里插入图片描述

  10. 默认只允许 ssh 登录方式,为了后来操作方便,文件上传等,我们可以配置允许账号密码登录

    • Vagrant ssh 进去系统之后

      • vi /etc/ssh/sshd_config
      • 修改 PasswordAuthentication yes/no
      • 重启服务 service sshd restart
    • 以后可以使用提供的 ssh 连接工具直接连接

  11. 注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑; 冲突的软件:红蜘蛛,360,净网大师(有可能)等

  12. vagrant创建的root账户密码默认为vagrant,可以使用

    $ su root
    

    切换用户为root,以免后续命令无权限。

2、安装 docker

  1. Docker简介

    在这里插入图片描述

  2. 相关网址

    Docker 安装文档

    Docker软件镜像网址

  3. 安装过程

    • 卸载系统之前的 docker

      $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
      
    • 安装依赖包

      $ sudo yum install -y yum-utils
      
    • 确定安装地址

      $ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
      
    • 安装Docker-CE

      $ sudo yum install docker-ce docker-ce-cli containerd.io
      
  4. 启动Docker

    $ sudo systemctl start docker
    
  5. 检查是否安装成功

    • 查看Docker版本docker -v

      在这里插入图片描述

    • 列出本地镜像sudo docker images

      在这里插入图片描述

  6. 设置开机启动

    $ sudo systemctl enable docker
    

    在这里插入图片描述

  7. 配置镜像加速

    docker默认下载是从docker hub进行下载,由于是国外网站,速度较慢。

    可以配置国内镜像加速:

    依次执行以下命令

    • 创建配件夹

      sudo mkdir -p /etc/docker
      
    • 配置镜像加速地址

      sudo tee /etc/docker/daemon.json <<-'EOF'
      {"registry-mirrors": ["https://9t35rfn5.mirror.aliyuncs.com"]
      }
      EOF
      
    • 重启docker伴随线程

      sudo systemctl daemon-reload
      
    • 重启docker服务

      sudo systemctl restart docker
      

3、docker 安装 mysql

  1. 下载镜像文件

    $ docker pull mysql:5.7
    

    在这里插入图片描述

    使用sudo docker images查看镜像

    在这里插入图片描述

  2. 创建实例并启动

    docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    

    参数说明

    • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口

    • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机

    • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

    • -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机

    • -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

      在这里插入图片描述

    可以使用命令docker ps查看正在运行中的容器

    在这里插入图片描述

    创建成功后,可以通过Navicat或其他MySQL连接工具进行连接MySQL测试

    在这里插入图片描述

  3. docker容器文件挂载与端口映射

    在这里插入图片描述

    • docker run:创建新容器。docker run一下,就会启动一个容器,容器与容器之间相互隔离,互不影响。(容器其实就是一个完整的linux系统)。

    • -p 3306:3306:将MySQL容器的3306端口映射到Linux系统的3306端口。:MySQL被安装到了MySQL容器中,MySQL默认端口为3306,但是3306端口为MySQL容器的3306端口,如果想使用MySQL,需要把MySQL容器的3306端口映射到Linux中。在命令中,前一个3306为宿主机(这里为Linux)端口号,后一个3306为MySQL容器端口号。

      -p IP:HOSTPORT:CONTAINERPORT
      
    • –name mysql:为容器起别名。

    • -v:目录挂载。MySQL配置文件、日志文件等在日常开发中经常使用,通过-v命令,可以将MySQL容器中的目录文件夹挂载到Linux目录中。

      -v Linux映射目录:容器目录
      

      挂载完成后,可以在Linux对应目录查看文件变化。

      在这里插入图片描述

    • -e:指定root用户密码。

    • -d:后台运行容器,并返回容器ID。

  4. MySQL 配置

    修改MySQL字符编码,改为utf8

    编辑配置文件vi /mydata/mysql/conf/my.cnf

    • 进入/mydata/mysql/conf目录

    • 使用命令vi my.cnf命令编辑配置文件

      在这里插入图片描述

    • 敲击键盘i进入插入模式

    • 将配置信息复制到文件中

      [client]
      default-character-set=utf8[mysql]
      default-character-set=utf8[mysqld]
      init_connect='SET collation_connection = utf8_unicode_ci'
      init_connect='SET NAMES utf8'
      character-set-server=utf8
      collation-server=utf8_unicode_ci
      skip-character-set-client-handshake 
      skip-name-resolve
      

      在这里插入图片描述

    • Esc后使用:wq命令退出

    • 使用命令docker restart mysql重启MySQL容器

      在这里插入图片描述

    • 可以进入MySQL容器查询源文件内容

      在这里插入图片描述

  5. 解决MySQL连接慢的问题

    在配置文件中加入如下,并重启 mysql

    [mysqld]skip-name-resolve
    

    解释:

    skip-name-resolve:跳过域名解析>

  6. 通过容器的 mysql 命令行工具连接

    docker exec -it mysql mysql -uroot -proot
    
  7. 设置 root 远程访问

    grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges;
    
  8. 进入容器文件系统

    docker exec -it mysql /bin/bash
    

4、docker 安装 redis

  1. 下载redis镜像

    docker pull redis
    

    在这里插入图片描述

  2. 创建实例并启动

    1. 首先自己创建文件目录以及对应配置文件

      mkdir -p /mydata/redis/conf
      touch /mydata/redis/conf/redis.conf
      

      在这里插入图片描述

    2. 创建redis实例并启动

      docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
      -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
      -d redis redis-server /etc/redis/redis.conf
      

      在这里插入图片描述

      **注意:**这里指定了redis将会加载/etc/redis/redis.conf目录下的配置文件

    3. 使用docker ps检查是否创建成功

      在这里插入图片描述

    4. 使用 redis 镜像执行 redis-cli 命令连接

      docker exec -it redis redis-cli

      在这里插入图片描述

  3. 对redis做持久化存储

    • 进入配置文件目录

      在这里插入图片描述

    • 编辑配置文件

      在这里插入图片描述

      redis配置文件

    • i进入插入模式

    • 设置redis的aof持久化保存方式

      在这里插入图片描述

    • 保存:wq

    • 重启redisdocker restart redis

  4. 可以使用软件RedisDesktopManager对redis进行可视化管理。

    在这里插入图片描述

5、开发环境统一

  1. Maven

    • 查询Maven和jdk版本

      在这里插入图片描述

    • Maven配置阿里云镜像

      • 找到Maven目录下的配置文件

        在这里插入图片描述

      • 配置镜像,将以下代码放到对应位置即可

        <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
        </mirrors>
        

        在这里插入图片描述

      • 配置JDK1.8编译项目,将以下代码放到对应位置即可。

        <profiles><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
        </profiles>
        

        在这里插入图片描述

  2. Idea & VSCode

    • Idea

      • 指定Maven安装目录和配置文件

        在这里插入图片描述

      • 安装插件:lombok & MyBatisX

        • lombok:简化JavaBean开发

          在这里插入图片描述

        • MyBatisX:MyBatisPlus开发,快速从mapper定位到xml文件

          在这里插入图片描述

    • VSCode安装插件

      在这里插入图片描述

      • Vetur —— 语法高亮、智能感知、Emmet 等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
      • EsLint —— 语法纠错
      • Auto Close Tag —— 自动闭合 HTML/XML 标签
      • Auto Rename Tag —— 自动完成另一侧标签的同步修改
      • JavaScript(ES6) code snippets — — ES6 语法智能提示以及快速输入, 除 js 外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
      • HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
      • HTML Snippets —— html 快速自动补全
      • Open in browser —— 浏览器快速打开
      • Live Server —— 以内嵌服务器方式打开
      • Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包
  3. 安装配置git

    • 下载Giteegit下载地址

    • 配置 git,进入 git bash

      # 配置用户名
      git config --global user.name "username"	//(名字) 
      # 配置邮箱
      git config --global user.email "username@email.com"	//(注册账号时用的邮箱)
      
    • 配置 ssh 免密登录

      • 生成/添加SSH公钥

      • 配置

        进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车。

        一般用户目录下会有

        在这里插入图片描述

        或者 cat ~/.ssh/id_rsa.pub

        登录进入 gitee,在设置里面找到 SSH KEY 将.pub 文件的内容粘贴进去使用 ssh -T git@gitee.com测试是否成功即可

    • Git + 码云教程

  4. 逆向工程使用

    1. 导入项目逆向工程
    2. 下载人人开源后台管理系统脚手架工程
      • 导入工程,创建数据库
      • 修改工程 shiro 依赖为 SpringSecurity
      • 删除部分暂时不需要的业务
    3. 下载人人开源后台管理系统 vue 端脚手架工程
      • vscode 导入前端项目
      • 前后端联调测试基本功能

6、创建项目微服务

商品服务、仓储服务、订单服务、优惠券服务、用户服务

共同点:

  • 都需要导入Web、OpenFeign依赖

  • 包名的组织名要统一,最后单独名称不同。

    com.atguigu.gulimall.xxx(product/order/ware/coupon/member)

  • 模块名要统一:**gulimao-**coupon

步骤:

  1. 从Gitee初始化一个项目

    • 新建仓库

      20210414170528890

    • 编辑仓库信息

      在这里插入图片描述

    • 项目克隆到本地

      • 创建版本控制项目

        在这里插入图片描述

      • 填写项目地址

        在这里插入图片描述

      • 默认目录结构

        在这里插入图片描述

  2. 创建微服务模块

    以商品服务模块为例,其他相同

    • 新建模块

      在这里插入图片描述

    • 使用Spring的初始化向导

      在这里插入图片描述

    • 编写模块信息

      在这里插入图片描述

    • 引入必要依赖

      • Spring Web

        在这里插入图片描述

      • 互相调用支持

        在这里插入图片描述

    • next—finish完成创建

    所有服务模块建完后项目结构

    在这里插入图片描述

  3. 将gulimall设置为总项目,聚合子模块

    • gulimall根目录下新建pom.xml

    • 新建的pom.xml中添加如下代码

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall</name><description>聚合服务</description><packaging>pom</packaging><modules><module>gulimall-coupon</module><module>gulimall-member</module><module>gulimall-order</module><module>gulimall-product</module><module>gulimall-ware</module></modules>
      </project>
      
    • 在Maven管理中,将gulimall的配置文件添加到项目中

      在这里插入图片描述

    • 效果如下,可以发现gulimall为root,负责聚合其他子模块

      在这里插入图片描述

  4. 修改总项目中的gitignore,将子模块中的无用文件进行忽略

    • **/mvnw:忽略任意路径下的mvnw文件都忽略掉
      修改后gitignore为:
       target/pom.xml.tagpom.xml.releaseBackuppom.xml.versionsBackuppom.xml.nextrelease.propertiesdependency-reduced-pom.xmlbuildNumber.properties.mvn/timing.properties.mvn/wrapper/maven-wrapper.jar**/mvnw**/mvnw.cmd**/.mvn**/target/.idea**/.gitignore
      
  5. 版本控制

    • 将所有需要提交的文件加入到版本控制中

      在这里插入图片描述

    • 安装Gitee插件进行版本控制

      在这里插入图片描述

    • 将代码提交到本地仓库

      在这里插入图片描述

      在这里插入图片描述

    • commit and push

      在这里插入图片描述

    • push推送

      在这里插入图片描述

      在这里插入图片描述

    • 码云查看

      在这里插入图片描述


http://www.ppmy.cn/news/848015.html

相关文章

websocket 学习1

websocket 个人总结 例如 springboot 整合 websocket 就和rocketmq 有点像&#xff0c;分广播、点对点 等推送方式 也分订阅、推送一个主题 有一个订阅接口 例如 群聊功能 &#xff08;1&#xff09;一个发送消息到这个订阅地址的网站入口&#xff1a;群成员可通过浏览器发送…

谷粒商城-01-p1-p19

谷粒商城-01 分布式基础&环境搭建 一、项目简介 1、项目背景 1&#xff09;、电商模式 市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O&#xff1b; 1、B2B 模式 B2B (Business to Business)&#xff0c; 是指商家与商家建立的商业关系。 如&#xff1a;阿里…

《谷粒商城》-项目简介以及环境搭建

谷粒商城 文章目录 谷粒商城前言一、项目简介1.项目背景1.1电商模式1.2谷粒商城 2.项目架构图2.1项目微服务架构图2.2微服务划分图 3.项目技术&特色4.项目前置要求 二、分布式基础概念1.微服务2.集群&分布式&节点3.远程调用4.负载均衡5.服务注册/发现&注册中心…

谷粒商城基础篇——Day01

01、分布式基础&项目环境搭建 一、项目简介 1. 项目背景 1.1 电商模式 市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O 1) B2B 模式 B2B(Business to Business)&#xff0c;是指商家和商家建立的商业关系&#xff0c;如 阿里巴巴 2) B2C 模式 B2C(Business …

分布式基础篇1——环境搭建(谷粒商城)

一、项目简介1、电商模式2、项目前置知识3、项目技术&特色4、项目架构图5、微服务划分图 二、分布式基础概念1、微服务2、集群&分布式&节点3、远程调用4、负载均衡5、服务注册/发现&注册中心6、配置中心7、服务熔断和服务降级8、API网关 三、环境搭建1、使用 V…

解决方案:炼丹师养成计划 Pytorch如何进行断点续训——DFGAN断点续训实操

我们在训练模型的时候经常会出现各种问题导致训练中断&#xff0c;比方说断电、系统中断、内存溢出、断连、硬件故障、地震火灾等之类的导致电脑系统关闭&#xff0c;从而将模型训练中断。 所以在实际运行当中&#xff0c;我们经常需要每100轮epoch或者每50轮epoch要保存训练好…

京东到家基于Netty的WebSocket应用实践分享(转载)

转载 https://blog.csdn.net/humn_chou/article/details/80036248 1、前言 在京东到家商家中心系统中&#xff0c;商家提出了要在 Web 端实现自动打印的需求&#xff0c;不再需要人工盯守点击打印&#xff0c;直接打印小票&#xff0c;以节约人工成本。为了满足商家的需求&…

京东到家基于netty与websocket的实践

2019独角兽企业重金招聘Python工程师标准>>> 背景 在京东到家商家中心系统中&#xff0c;商家提出在 Web 端实现自动打印的需求&#xff0c;不需要人工盯守点击打印&#xff0c;直接打印小票&#xff0c;以节约人工成本。 解决思路 关于问题的思考逻辑&#xff1a; …