栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

谷粒商城项目1——分布式基础概念、环境搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

谷粒商城项目1——分布式基础概念、环境搭建

二、分布式基础概念

1.微服务架构
  • 一个单体应用开发为一套小服务,每个小服务在自己的进程中,并使用轻量级机制通信

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

2.集群、分布式、节点
  • 集群是个物理状态,一群机器就可以叫做集群,将几台服务器集中在一起实现同一业务

  • 分布式是个工作方式,将不同的业务分布在不同的地方,分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统

  • 京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群

  • 节点是集群中的每一个服务器,分布式的每一个节点都可以叫做集群。而集群不一定是分布式的

3.远程调用
  • 在分布式系统中,可能处在不同主机的各个服务需要相互调用称为远程调用

  • spring cloud使用HTTP+JSON的方式完成远程调用

4.负载均衡

​ A服务需要调用B服务,B服务在多台机器中都存在,A调用任意一个服务器均可完成功能

常见的负载均衡算法:

  • 轮巡:依次调用

  • 最小连接:优先调用连接数最小的服务器

  • 散列:同一个ip地址的请求都会被分配到一个固定的服务器

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

注册中心:实时监控哪些服务可用,哪些服务不可用

6.配置中心

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

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

7.服务熔断&服务降级

在微服务架构中,服务之间存在着依赖关系,当一个服务不可用时,很容易发生雪崩效应,所以需要容错机制来保护服务

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

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

8.API网关

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

三、环境搭建 1.安装linux虚拟机

这里使用的是云服务器

2.安装docker

docker安装推荐:Docker学习篇1_Docker概述、Docker安装、Run的流程和Docker原理、Docker常用命令、Docker安装Nginx、tomcat练习_scl、的博客-CSDN博客

docker 容器与容器之间是相互隔离的,每一个容器都是一个完整的运行环境

3.docker安装mysql
//安装mysql
docker pull mysql:5.7
    
//查看拉取的docker镜像
docker ps
​
//docker 启动mysql   容器文件挂载与端口映射
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容器
docker images
​
//进入mysql容器内部
docker exec -it mysql /bin/bash
​
//获取目录结构 发现mysql就是一个完整的linux目录结构
ls /

 

修改mysql配置:

将mysql默认的拉丁字符编码改成utf8

//进入linux中挂载的mysql配置文件
cd mydata/mysql/conf
//创建mysql配置
vi my.cnf
//随意敲一个英文字母开始编辑 复制粘贴以下内容 esc ":wq" 退出
[client]
default-character-set=utf-8
​
[mysql]
default-character-set=utf-8
​
[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
//修改配置之后一定要记得重启
docker restart mysql

在mysql容器中查看修改配置文件:

docker exec -it mysql /bin/bash
​
cd /etc/mysql
​
ls
​
cat my.cnf
4.安装redis
//拉取redis镜像
docker pull redis
​
//创建挂载的目录 
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
​
//启动
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.conf是一个conf文件,但是直接挂载会被系统认为是一个文件夹而之间创建,所以需要我们先创建这个conf文件。

 

测试redis:

docker exec -it redis redis-cli

现在的redis数据都是存储在内存中的,如果重启redis再次"get a"就会查不到数据,接下来实现redis 的持久化。

redis的持久化:

//修改刚创建的redis.conf
vi redis.conf
//修改内容
appendonly yes
//重启redis
docker restart redis
//测试
[root@iZ2ze30iuo2wom5i3mm5qlZ conf]# docker exec -it redis redis-cli
127.0.0.1:6379> set kaigu keai
OK
127.0.0.1:6379> exit
[root@iZ2ze30iuo2wom5i3mm5qlZ conf]# docker restart redis
redis
[root@iZ2ze30iuo2wom5i3mm5qlZ conf]# docker exec -it redis redis-cli
127.0.0.1:6379> get kaigu
"keai"

将redis、mysql设置为docker启动是自启:

[root@iZ2ze30iuo2wom5i3mm5qlZ conf]# docker update mysql --restart=always
mysql
[root@iZ2ze30iuo2wom5i3mm5qlZ conf]# docker update redis --restart=always
redis
5.开发环境配置 (1).maven配置阿里云镜像

(2).配置默认jdk版本

(3).idea整合maven

(4).vscode安装插件

(5).安装配置git

Git - Downloading Package (git-scm.com) 官网下载安装

百度网盘在设置-传输 里面把下载提速打开还是要比官网快的

链接:https://pan.baidu.com/s/1ik7x2KnyU1MQAJXcyayRCQ 
提取码:a3rw

安装之后 随意右键菜单点击git bash here

配置一个用户名(随便起)和注册github时用的邮箱

10418@DESKTOP-9G94D81 MINGW64 ~/Desktop
$ git config --global user.name "merist"
​
10418@DESKTOP-9G94D81 MINGW64 ~/Desktop
$ git config --global user.email "1041837264@qq.com"

配置ssh免密登录(输入命令回车后 三次回车 中间加一次输入“y"):

获取完整的密钥并且复制

进入gitee官网 --->设置

测试连接成功

6.创建项目微服务 (1).从gitee初始化一个项目

复制项目地址

idea新建一个项目

 

项目地址复制进去 点击clone

clone成功

记得先修改maven,不要向博主一样傻了半天才反应过来

(2).创建商城微服务模块

先导入两个依赖

按照相同配置建好另外四个

右下角会有一个提示,选择”use service",就可以在service看到所有的模块了

正在上传…重新上传取消

修改pom,在maven中添加gulimall的pom ,gulimall执行clean,其子模块也clean

正在上传…重新上传取消

先complie一下生成target文件夹 再设置忽略文件

IDEA Version Control 窗口 local changes显示Michael.的博客-CSDN博客_idea显示localchange 调出local changes

(3).gitee上传项目

想要在gitee上传项目,想要安装gitee插件

gitee上传代码

 

 

登录一下

推送成功

7.数据库初始化

Sybase PowerDesigner是一个很方便的建模工具,你只需要拉个图形然后自动生成sql语句。

PowerDesigner 安装+汉化+破解+使用过程 - 沦陷 - 博客园 (cnblogs.com) 下载、安装地址

打开gmall_数据库设计.pdm

(1).生成sql语句

先生成sql语句

 (2).创建数据库并执行sql文件

因为每一个微服务都是独立存在的,相应的数据库也应该是独立的。

所以先创建各个数据库。字符集选择utf8mb4(可以兼容utf8)

 

执行sql即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号