-
一个单体应用开发为一套小服务,每个小服务在自己的进程中,并使用轻量级机制通信
-
拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行
-
集群是个物理状态,一群机器就可以叫做集群,将几台服务器集中在一起实现同一业务
-
分布式是个工作方式,将不同的业务分布在不同的地方,分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统
-
京东是一个分布式系统,众多业务运行在不同的机器,所有业务构成一个大型的业务集群
-
节点是集群中的每一个服务器,分布式的每一个节点都可以叫做集群。而集群不一定是分布式的
-
在分布式系统中,可能处在不同主机的各个服务需要相互调用称为远程调用
-
spring cloud使用HTTP+JSON的方式完成远程调用
A服务需要调用B服务,B服务在多台机器中都存在,A调用任意一个服务器均可完成功能
常见的负载均衡算法:
-
轮巡:依次调用
-
最小连接:优先调用连接数最小的服务器
-
散列:同一个ip地址的请求都会被分配到一个固定的服务器
注册中心:实时监控哪些服务可用,哪些服务不可用
6.配置中心每个服务最终都会有大量的配置,并且每个服务都可能部署在多个服务器上,我们需要经常变更配置,可以让服务在配置中心获取配置。
配置中心用来集中管理微服务的配置信息
7.服务熔断&服务降级在微服务架构中,服务之间存在着依赖关系,当一个服务不可用时,很容易发生雪崩效应,所以需要容错机制来保护服务
-
服务熔断:设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
-
服务降级:在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行:某些服务不处理或者简单处理【抛异常、返回NULL、调用MOCK数据、调用Fallback处理逻辑】
在微服务架构中,API Gateway作为整体架构的重要组件,它抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡、服务自动熔断、灰度发布、统一认证、限流流控、日志统计等丰富的功能,帮助我们解决了很多API管理难题。
三、环境搭建 1.安装linux虚拟机这里使用的是云服务器
2.安装dockerdocker安装推荐: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.cnf4.安装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 redis5.开发环境配置 (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即可



