教你如何单机搭建测试用的分布式系统(一)

2023-11-19

今天来写一篇博客,教大家如何搭建分布式系统.
万事开头难,很多人放弃某样东西往往都是在刚开始的时候遇到了困难.所以有句话叫做"师傅领进门,修行靠个人",这个帖子权当作领各位进门吧.
开始之前先聊一下我的学习经历吧,博主一开始是学java开发的,刚开始学的时候是学的javaweb,用到的技术有Struts,jsp,hibernate,spring等框架技术统称"三大框架",那时候学完只会写些单机版的项目,很low连网络基础知识都没有,只会"增删改查".后来转做Android开发,做了几个APP项目之后感觉乏味了,又开始关注后端技术,最近接触了微服架构,于是打算尝试搭建一个分布式微服系统.
我将要带领大家搭建的这个微服系统涉及到的技术比较多
先来罗列一下用到的技术.
操作系统:Windows10,CentOS7
编程语言:java,JavaScript
后端架构:spring cloud
编译:maven
中间件:Redis,kafka,RabbitMQ,mybatis,nacos,mybatis,mybatis
前端:Vue
数据库:mysql,jdbc
容器:Nginx,docker,Tomcat

一开始的时候后端系统大都是集中式系统,这种系统在没有高并发需求的时候尚能应付,它集成简单,容易部署,但可用性不高,只要系统有一处bug就可能导致整个系统崩溃.
后来技术慢慢地演变就有了分布式系统,它是由分布在多个主机的子系统组合而成的,伸缩性好,可用性高,但是部署可能会比较复杂,当然自动化部署技术也在发展中.
搭建前先来画个草图:

客户端
服务器1
服务器2
服务器3
数据库1
数据库2
数据库3

目标搭建的系统大概是这个样子,一个客户端,多个服务端子系统,加多个数据库.
客户端放到Nginx容器里面供用户访问,服务端系统放到docker容器并在Linux系统下部署,数据也分别在liunx系统下部署.
工欲善其事,必先利其器.下面罗列一些windows10系统下的软件工具:VMware虚拟机,Centos7,idea,VScode

一,用VMware虚拟机安装CentOS7系统

VMware安装请看这个教程
安装好后,打开VMware虚拟机
在这里插入图片描述
点击加号创建新的虚拟机
在这里插入图片描述
到这步的时候需要你提供ISO镜像文件,需要的发邮件给我

Centos7安装教程

在CentOS7里搭建运行环境

在CentOS里面我们需要安装Nginx容器,docker容器,还有Mysql数据库

在开始安装这些软件之前需要对你的CentOS检查几项功能:
1,你的CentOS是否能联网

#输入命令
ip addr

在这里插入图片描述
如图如果你的CentOS系统有网络就会看到你的IP地址
没有网络的同学请按照以下方法配置网络:centos7网络配置教程
2,检查你的CentOS操作系统是否开启了防火墙,如果开启了防火墙,请记得打开你需要提供给外部访问的端口号
打开端口号的方法如下(我这里用的是iptables,CentOS默认用的是firmware,需要安装iptables iptables安装教程):

查看已开放端口:
iptables -L

添加端口入口允许(示例:3306):
iptables -I INPUT -p tcp —dport 3306 -j ACCEPT

添加端口出口允许(示例:3306):
iptables -I OUTPUT -p tcp —sport 3306 -j ACCEPT

保存:
service iptables save

查看打开的端口:
iptables status

重启:
service iptables restart

nginx安装

一、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

二、安装 PCRE(让 Nginx 支持 Rewrite 功能)

#下载最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -xvf pcre-8.42.tar.gz
cd pcre-8.42 
#安装编译
./configure
make && make install
#查看pcre版本
pcre-config --version

三、安装nginx

#下载
wget https://nginx.org/download/nginx-1.15.9.tar.gz
tar -xvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
#编译安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42 
make && make install
#查看版本
/usr/local/webserver/nginx/sbin/nginx -v

四、nginx操作
在Nginx安装目录下操作命令

/usr/local/webserver/nginx/sbin/nginx #启动
/usr/local/webserver/nginx/sbin/nginx -s reload #重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen #重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx

五,测试
打开浏览器输入http://你的虚拟机IP地址:80(需要打开80端口)
就可以看到默认的访问界面

docker容器安装

docker安装教程
docker安装好后需要远程连接,这里要修改一下它的配置文件:

 vim /usr/lib/systemd/system/docker.service
#在该文件下添加
ExecStart=  
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

在这里插入图片描述

# docker重新读取配置文件,重新启动docker服务
# systemctl daemon-reload

# systemctl restart docker

这个时候你就可以用你的idea连接上docker了(idea安装后面讲)
在这里插入图片描述

mysql安装

mysql安装教程
安装完成后记得打开3306端口,确保能远程访问

二,搭建windows10下的开发环境

1,java环境

java安装教程

2,安装idea

idea安装教程

3,下载代码

打开idea从git仓库导入代码

https://github.com/milantiejiang/spring-cloud-demo.git

在这里插入图片描述
在这里插入图片描述
代码结构如下
在这里插入图片描述
篇幅原因,这篇博客就先到这吧.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教你如何单机搭建测试用的分布式系统(一) 的相关文章

  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 华为OD机试 - 统计射击比赛成绩(Java)

    题目描述 给定一个射击比赛成绩单 包含多个选手若干次射击的成绩分数 请对每个选手按其最高3个分数之和进行降序排名 输出降序排名后的选手ID序列 条件如下 一个选手可以有多个射击成绩的分数 且次序不固定 如果一个选手成绩少于3个 则认为选手的
  • C语言中 error: expected ‘;‘, ‘,‘ or ‘)‘ before ‘&‘ token 解决方法

    问题描述 近期发现包括我在内的很多同学在用DEV C 编译的时候会出现 error expected or before token 这个如下图的错误提示 很多同学很不解 和其他人比较代码后 明明就没有错呀 为什么呢 经过查找相关资料 其实
  • 机器学习——高斯过程

    高斯过程 所谓高斯 即高斯分布 所谓过程 即随机过程 高斯分布 一维高斯 p x N
  • MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型

    MATLAB代码 考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词 碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档 Modeling and Optimization of Combined Heat an
  • 魅族7.0系统手机最简单激活Xposed框架的流程

    对于喜欢研究手机的朋友而言 常常会使用到XPOSED框架及种类繁多功能极强的模块 对于5 0以下的系统版本 只要手机能获得root权限 安装和激活XPOSED框架是异常轻易的 但随着系统版本的不断迭代 5 0以后的系统 激活XPOSED框架
  • Xray和burpsuite联动被动扫描

    想挖点src又没啥思路 试着挂个自动漏扫工具xray 又看到能与burp联动实现自动扫就想尝试一下 搞好进自己网站测试了一下 的确是爬虫式漏扫 访问量属实大 不过自己设置设置还是一个很不错的工具 安装配置 是在ddosi org这里找的破解
  • 经典问题(20)天平与砝码问题

    题目 如果有砝码序列 1 3 9 27 81 243 729 我们至少可以称量1000以内的所有整数重量 比如 5 9 3 1 即 9 放入对侧盘 3 1 放入同侧盘 再比如 19 27 9 1 编程的目标是 给定一个重量 求 天平称重时
  • Acwing-4729. 解密

    如果dt小于0 或者r不是整数 或者m r是奇数的话 m 2 与 m 2 的奇偶性相同 那么方程无解 输出NO include
  • 三进制计算机基本原理,三进制(三进制计算机)

    如题 越详细越好 最好再举个例子 十进制转任何进制都是采用整数除n取余倒序排列 小数乘n取整顺序排列的方法 比如 32 12 转 三进制 整数部分 32除以3商10余210除以3商3余13除以3商1余01除以3商 十进制数换三进制短除三 三
  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • CSS常用样式

    目录 引入CSS样式的三种方式 内联 行内 样式 内部样式表 外部样式表 基础选择器 标签选择器 标签 各种样式 类选择器 类名 各种样式 id选择器 id号 各种样式 字体样式 font 文本样式 鼠标样式 cursor 背景样式 bac
  • MySql保留两位小数

    1 格式化小数函数format x d format 函数会对小数部分进行四舍五入操作 整数部分从右向左每3位一个逗号进行格式化输出 三位小数 整数 不足两位的情况 0 001的情况 2 随机函数ROUND X D 三位小数 整数 不足两位
  • Python03-pytest框架

    Python03 pytest测试框架 pytest简介 支持参数化可以细分控制测试用例 支持简单的单元测试和复杂的功能测试 还支持selenium appium等自动化测试 接口自动化测试 支持第三方插件 可以自定义扩展 pytestht
  • Centos7下安装Zookeeper

    一 配置java环境 1 安装JDK yum install y java 1 8 0 openjdk 2 查看版本 root zookeeper java version openjdk version 1 8 0 362 OpenJDK
  • Python3.6读取excel指定数据并根据邮件列表群发

    python3 6版本 python下载地址 https www python org getit excel 工作簿名 shuju xlsx 会上传附件 sheet表1名称 数据 sheet表2名称 邮箱 请下载附件后填上正确的邮箱 实现
  • dev c++ 配置openGL

    折腾了一早上 总算成功了 亲测有效 参考了很多博客 但是都不完整 现把解决方案分享如下 WINDOWS配置 确保你的WINDOWS SYSTEM32文件下有如下文件 glu32 dll glut32 dll glut dll opengl3
  • 实训八 利用三层交换机实现不同VLAN间通信

    原理 在交换网络中 通过VLAN对一个物理网络进行了逻辑划分 不同的VLAN之间是无法直接访问的 必须通过三层的路由设备进行连接 一般利用路由器或三层交换机来实现不同VLAN之间的互相访问 三层交换机和路由器具备网络层的功能 能够根据数据的
  • python使用scipy.stats检验正态分布

    from scipy import stats import numpy as np np random seed 1 x stats norm rvs loc 0 scale 1 size 100 print list x 夏皮罗一威尔克
  • 企业微信开发:接受消息和发送消息

    简介 本篇博文是针对本人在开发企业微信消息交互的一些经验分享 介绍一下自己开发过程中遇到的问题和解决方法 如果问题或异议 欢迎讨论 技术大佬请忽略 用户在企业微信中有2种用户操作可以发送给我们服务器 1 点菜微信企业应用的菜单 2 给企业微
  • 教你如何单机搭建测试用的分布式系统(一)

    今天来写一篇博客 教大家如何搭建分布式系统 万事开头难 很多人放弃某样东西往往都是在刚开始的时候遇到了困难 所以有句话叫做 师傅领进门 修行靠个人 这个帖子权当作领各位进门吧 开始之前先聊一下我的学习经历吧 博主一开始是学java开发的 刚