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

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(使用前将#替换为@)

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

  • Java - 因内存不足错误而关闭

    关于如何最好地处理这个问题 我听到了非常矛盾的事情 并且陷入了以下困境 OOME 会导致一个线程崩溃 但不会导致整个应用程序崩溃 我需要关闭整个应用程序 但不能 因为线程没有剩余内存 我一直认为最佳实践是让它们离开 这样 JVM 就会死掉
  • 如何从Firebase Firestore实时更新文档中获取修改后的字段或数据? [复制]

    这个问题在这里已经有答案了 我有多个文档 我的问题是我无法获取修改的特定数据 我正在获取完整的文档 db collection employees whereEqualTo OID OID addSnapshotListener new E
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • Oracle Java 教程 - 回答问题时可能出现错误

    我是 Java 新手 正在阅读 Oracle 教程 每个部分之后都有问题和答案 我不明白一个答案中的一句话 见下面的粗体线 来源是https docs oracle com javase tutorial java javaOO QandE
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 华为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开发的 刚