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

news2025/7/12 13:29:08

持续学习&持续更新中…

学习态度:守破离


【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【01】

  • 分布式基础概念
    • 微服务
    • 集群&分布式&节点
    • 远程调用
    • 负载均衡
    • 服务注册/发现&注册中心
    • 配置中心
    • 服务熔断&降级
    • API网关
  • 虚拟机环境搭建
    • 安装vagrant和virtualbox
    • 配置允许账号密码登录
    • 虚拟机网络设置
  • Docker的使用
    • 什么是Docker
    • 安装Docker
    • 启动Docker
    • 安装MySQL
    • Docker容器的文件挂载
    • 安装redis
  • 开发环境统一
    • Java
    • Maven
    • IDEA
    • VSCode
    • 数据库
    • 人人开源—快速开发
    • Node.js
  • 参考

分布式基础概念

微服务

在这里插入图片描述

集群&分布式&节点

在这里插入图片描述

远程调用

在这里插入图片描述

负载均衡

在这里插入图片描述

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

在这里插入图片描述

配置中心

在这里插入图片描述

服务熔断&降级

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

API网关

在这里插入图片描述

虚拟机环境搭建

安装vagrant和virtualbox

  • 下载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,我们可以使用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
sudo yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
# 设置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
sudo yum install -y docker-ce docker-ce-cli containerd.io

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

启动Docker

# 关闭防火墙
sudo systemctl stop firewalld
# 禁止开机启动防火墙
sudo systemctl disable firewalld
sudo systemctl start docker  # 启动docker服务

sudo systemctl stop docker  # 停止docker服务

sudo systemctl restart docker  # 重启docker服务
# 设置开机自启Docker
sudo systemctl enable docker
docker -v #查看docker版本

安装MySQL

sudo docker pull mysql:5.7
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

在这里插入图片描述

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

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

在这里插入图片描述

安装redis

docker pull redis:5.0.5
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf #防止docker把该文件当成目录进行挂载
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

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

appendonly yes

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

开发环境统一

Java

  • JDK1.8

Maven

  • Maven3.6

  • 配置阿里云镜像:

      <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编译项目:

        <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>
    

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

在这里插入图片描述

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

在这里插入图片描述

参考

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


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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gcc编译器

1. GCC工具 GCC编译器&#xff1a; GCC&#xff08;GNU Compiler Collection&#xff09;是由 GNU 开发的编程语言编译器。 GCC最初代表“GNU C Compiler”&#xff0c;当时只支持C语言。 后来又扩展能够支持更多编程语言&#xff0c;包括 C、Fortran 和 Java 等。 因此&#…

网站页面模仿学习

一、代码部分 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>cdcas</title> </head> <style>*{margin: 0;padding: 0;}.container{text-align: center;}.top{margin: auto;text-align: center;}.nav{…

pdf编辑器软件,分享一款考编用的pdf软件,挺合适的!

对于大部分人来说&#xff0c;最好的工作莫过于公务员、事业单位、国企&#xff0c;此类所谓的金饭碗、铁饭碗。工资收入处于中上水平&#xff0c;且朝九晚五。 不过想要获得这样的编制绝非易事&#xff0c;需要参加统考&#xff0c;经过层层选拔。很多年轻人感叹苦海无编&…

现代密码学导论-17-伪随机函数

目录 3.5.1伪随机函数的非正式定义 |Func_n| 有多大&#xff1f; DEFINITION 3.24 伪随机函数的正式定义 Example 3.25 一个不安全的反例 3.5.1伪随机函数的非正式定义 伪随机函数&#xff08;PRFs&#xff09;推广了伪随机发生器的概念。 F : {0, 1}∗ {0, 1}∗→ {0, 1…

Linux进程管理【进程的相关介绍片、ps、 kill 、pstree】【详细整理】

目录进程相关介绍显示系统执行的流程 psps 详解![请添加图片描述](https://img-blog.csdnimg.cn/cd9f10bf36684b419f2f94068afb9a03.png)案例终止进程kill 和 killall基本语法常见选型案例查看进程数pstreepstree [选项]&#xff0c;可以更加直观的来查看进程信息进程相关介绍 …

【无线传感器】使用 Mamdani 模糊推理系统改进无线传感器网络路由和数据包传递附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【语音去噪】谱减法+维纳滤波语音去噪(带面板+信噪比)【含GUI Matlab源码 1661期】

⛄一、简介 1 维纳滤波法 维纳滤波法(wiener filter)也是一个比较经典的传统做法&#xff0c;它的本质是估计出一个线性滤波器&#xff0c;也就是一个向量&#xff0c;这个滤波器会对不同的频段进行不同程度的抑制&#xff0c;其保真效果会比谱减法要好一些。 我们这里不会讲…

8.4 数据结构——选择排序

8.4.1 简单选择排序 基本思想&#xff1a;在待排序的数据中选出最大&#xff08;小&#xff09;的元素放在其开始的位置。 基本操作&#xff1a; &#xff08;1&#xff09;首先通过n-1次关键字比较&#xff0c;从n个记录中找出关键字最小的记录&#xff0c;将它与第一个交换…

Pytorch 中Label Smoothing CrossEntropyLoss实现

一. 前言 一般情况下我们都是直接调用Pytorch自带的交叉熵损失函数计算loss&#xff0c;但涉及到魔改以及优化时&#xff0c;我们需要自己动手实现loss function&#xff0c;在这个过程中如果能对交叉熵损失的代码实现有一定的了解会帮助我们写出更优美的代码。 其次是标签平…

Day13--自定义组件-封装自定义属性和click事件

提出问题&#xff1a; 当前我们search搜索框的背景颜色和圆角边框都是写死的&#xff0c;使用者没有办法修改器背景颜色和圆角尺寸。那么为了让这个组件更加通用性强一些。 ***********************************************************************************************…

用DIV+CSS技术设计的个人电影网站(web前端网页制作课作业)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

框架体系——Spring

Spring IOC IOC控制反转 IOC 控制反转&#xff0c;全称Inverse of Control&#xff0c;是一种设计理念由代理人来创建和管理对象&#xff0c;消费者通过代理人来获取对象Ioc的目的是降低对象之间的耦合通过加入Ioc容器将对象统一管理&#xff0c;将对象关联变为弱耦合。 DI…

MyBatis中有哪些注解呢?

转自: MyBatis中有哪些注解呢&#xff1f; 为了简化 XML 的配置&#xff0c;MyBatis 提供了注解。我们可以通过 MyBatis 的 jar 包查看注解&#xff0c;如下图所示。 以上注解主要分为三大类&#xff0c;即 SQL 语句映射、结果集映射和关系映射 下面分别进行讲解 一、SQL 语句…

Allegro中如何进行尺寸标注

摘要本文介绍了如何在Allegro中进行尺寸标注&#xff0c;包含各种标注样式的区别、如何设置参数、如何显示单位、如何导出带尺寸的PDF与DXF等信息。 一. 为什么要尺寸标注PCB尺寸标注的作用&#xff1a; 方便设计人员明确板子的大小&#xff0c;以及安装位置的各种细节&#xf…

react学习笔记3--数据双向绑定,组件通信

一、表单处理 1、受控组件-input元素 通过设置input元素的value值&#xff08;或复选框的checked值&#xff09;实现Getter&#xff0c;通过监听onChange事件实现Setter&#xff0c;从而实现数据双向绑定。 class element extends React.Component {state {txt:""…

vulhub靶场搭建与使用

vulhub靶场搭建与使用1.前言2.配置yum源2.1备份原来的源文件2.2 配置阿里源2.3重置yum源2.4更新yum源3.安装docket3.1安装docket3.2启动docket3.3设置国内镜像源3.4重启docket4.安装docker-compose4.1安装dockers-compose4.2提升权限5.安装vulhub5.1安装git5.2下载vulhub5.3下载…

自知识蒸馏(知识蒸馏二)

自知识蒸馏&#xff08;知识蒸馏二&#xff09;自知识蒸馏&#xff08;知识蒸馏二&#xff09;Born-Again Neural Networks&#xff08;ICML2018&#xff09;方法为什么有效实验结果Training Deep Neural Networks in Generations: A More Tolerant Teacher Educates Better St…

MyBatis工作原理

MyBatis工作流程&#xff1a; 具体介绍&#xff1a; (1) MyBatis 读取核心配置文件mybatis-config.xml mybatis-config.xml核心配置文件主要配置了MyBatis的运行环境等信息。 (2)加载映射文件Mapper.xml Mapexm文件即SQL映射文件&#xff0c;该文件配置了操作数据库的SOL语句&a…

Python+Appium移动端自动化测试框架实现

一、Appium 概述 1、Appium 简介 Appium是一个开源的自动化测试框架,可以用来测试基于iOS、Android和Firefox OS 平台的原生与混合的应用。 该框架使用Selenium WebDriver,在执行测试时用于和Selenium Server 通信的是JSON Wire Protocol。在Selenium 2中,Appium将取代 i…

【CNN】经典网络LeNet——最早发布的卷积神经网络之一

前言 LeNet是Yann LeCun于1988年提出的用于数字识别的网络结构&#xff0c;可以说LeNet是深度CNN网络的基石&#xff0c;AlexNet、VGG、GoogLeNet、ResNet等都是在VGG基础上加入各类激活函数或加深网络演变而来的&#xff0c;所以理解LeNet对于现在主流CNN深度学习架构的理解有…