• 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【01】分布式基础概念_环境搭建_Docker的使用



    持续学习&持续更新中…

    学习态度:守破离


    分布式基础概念

    微服务

    在这里插入图片描述

    集群&分布式&节点

    在这里插入图片描述

    远程调用

    在这里插入图片描述

    负载均衡

    在这里插入图片描述

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

    在这里插入图片描述

    配置中心

    在这里插入图片描述

    服务熔断&降级

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    API网关

    在这里插入图片描述

    虚拟机环境搭建

    安装virtualbox和vagrant

    • 下载virtualbox,下载地址:https://www.virtualbox.org/wiki/Download_Old_Builds_6_0
      在这里插入图片描述

    • 下载vagrant:https://developer.hashicorp.com/vagrant/downloadshttps://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi
      在这里插入图片描述

    • 下载完成后,先安装virtualbox,再安装vagrant,然后重启电脑。
      在这里插入图片描述

    • 重启电脑后,在cmd窗口输入vagrant,如果有如下命令提示那么就安装成功了
      在这里插入图片描述

    • 在命令行窗口执行vagrant init centos/7,创建一个centos7虚拟机的Vagrantfile(在C:\Users\用户名这个目录下)
      在这里插入图片描述

    • 按照提示输入vagrant up来启动虚拟机。在这里插入图片描述

    • 启动成功后,virtualbox就可以看到虚拟机了。
      在这里插入图片描述

    • 这时,我们可以再打开一个cmd窗口,然后输入vagrant ssh连接到该虚拟机。
      在这里插入图片描述

    vagrant配置允许使用账号密码登录

    该虚拟机的密码是vagrant,我们可以使用su root来切换至root用户

    在这里插入图片描述

    虚拟机网络设置

    有一个问题:

    在这里插入图片描述

    修改Vagrantfile:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    然后重启虚拟机:vagrant reload,重启完虚拟机之后,再次查看虚拟机的ip地址:
    在这里插入图片描述

    然后再喝虚拟机互相ping一下,看能不能ping通:(windows的ip地址用ipconfig查看)

    在这里插入图片描述

    在这里插入图片描述

    Docker的使用

    什么是Docker

    虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一个容器都是一个完整的运行环境,容器之间互相隔离。

    在这里插入图片描述

    安装Docker

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine \
                      docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    sudo yum install -y yum-utils \
               device-mapper-persistent-data \
               lvm2 --skip-broken
    
    • 1
    • 2
    • 3
    # 设置docker镜像源
    sudo yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
    sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    sudo yum makecache fast
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    
    • 1

    docker官方镜像仓库(Docker Hub)网速较差,我们需要设置国内阿里云镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

    启动Docker

    # 关闭防火墙
    sudo systemctl stop firewalld
    # 禁止开机启动防火墙
    sudo systemctl disable firewalld
    
    • 1
    • 2
    • 3
    • 4
    sudo systemctl start docker  # 启动docker服务
    
    sudo systemctl stop docker  # 停止docker服务
    
    sudo systemctl restart docker  # 重启docker服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 设置开机自启Docker
    sudo systemctl enable docker
    
    • 1
    • 2
    docker -v #查看docker版本
    
    • 1

    安装MySQL

    sudo docker pull mysql:5.7
    
    • 1
    sudo 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    Docker容器的文件挂载

    在这里插入图片描述

    修改配置:sudo vi /mydata/mysql/conf/my.cnf

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    init_connect='SET collaction_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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    重启mysql:docker restart mysql,重启之后,我们可以查看现在MySQL的字符编码:

    在这里插入图片描述

    安装redis

    docker pull redis:5.0.5
    
    • 1
    mkdir -p /mydata/redis/conf
    touch /mydata/redis/conf/redis.conf #防止docker把该文件当成目录进行挂载
    
    • 1
    • 2
    docker run \
    -p 6379:6379 \
    --name redis \
    -v /mydata/redis/data:/data \
    -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
    -d redis:5.0.5 redis-server /etc/redis/redis.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    我们要想改变redis的配置只需要修改/mydata/redis/conf/redis.conf这个文件即可,比如要想持久化redis,可以添加:

    appendonly yes
    
    • 1

    让redis自动启动:docker update redis --restart=always

    开发环境统一

    Java

    • JDK1.8

    Maven

    • Maven3.6

    • 配置阿里云镜像:

        <mirrors>
          <mirror>
            <id>nexus-aliyunid>
            <mirrorOf>centralmirrorOf>
            <name>Nexus aliyunname>
            <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
          mirror>
        mirrors>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      
          <mirror>
            <id>aliyunid>
            <name>aliyunname>
            <mirrorOf>centralmirrorOf>
            <url>https://maven.aliyun.com/repository/publicurl>
          mirror>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 配置jdk1.8编译项目:

          <profile>
            <id>jdk-1.8id>
            <activation>
              <activeByDefault>trueactiveByDefault>
              <jdk>1.8jdk>
            activation>
            <properties>
              <maven.compiler.source>1.8maven.compiler.source>
              <maven.compiler.target>1.8maven.compiler.target>
              <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
            properties>
          profile>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

    IDEA

    • 整合Maven
    • 整合Git
    • 添加:Lombok、MybatisX插件

    VSCode

    • 安装Auto Close Tag、Auto Rename Tag、Chinese (Simplified)、ESLint、HTML CSS Support、HTML Snippets、JavaScript (ES6) code snippets、Live Server、open in browser、Vetur这些扩展插件

    数据库

    • 不建立外键,原因在于会大大降低数据库性能。高并发&分布式下的系统为了性能更优以及更好维护,不能使用外键。

    在这里插入图片描述

    • 商品 —— pms (product)
    • 用户/会员 —— ums (user)
    • 订单 —— oms (order)
    • 优惠/营销 —— sms (sale)
    • 库存/仓储 —— wms (ware)

    人人开源—快速开发

    地址:https://gitee.com/renrenio

    需要用哪个就把那个克隆到本地使用:

    在这里插入图片描述

    Node.js

    在这里插入图片描述

    node下载地址:https://nodejs.org/download/release/v10.16.3/node-v10.16.3-x64.msi

    npm config set registry http://registry.npm.taobao.org/
    
    • 1

    在这里插入图片描述

    使用Node运行项目,打开命令行终端【管理员】:

    • npm install node-sass@npm:sass --ignore-scripts chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
    • npm install
    • npm run dev

    参考

    雷丰阳: Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目).


    本文完,感谢您的关注支持!


  • 相关阅读:
    z-index生效与css层叠
    Vite打包优化插件
    C++-ffmpeg-2-1-RGB-YUV内存中的存储+SDL2对其渲染
    Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test
    数据结构——排序算法——桶排序
    java正则表达式进阶
    举例说明自然语言处理(NLP)技术
    Java常见的几种设计模式
    (28)Blender源码分析之顶层菜单的安装应用模板菜单
    Java毕设项目——校园出入管理系统(java+SSM+Maven+Mysql+Jsp)
  • 原文地址:https://blog.csdn.net/weixin_44018671/article/details/127935629