学习黑马的微服务课程的笔记
导学


微服务架构

认识微服务

SpringCloud
spring.io/projects/spring-cloud/


服务拆分和远程调用

根据订单id查询订单功能






存在的问题
硬编码




eureka注册中心
搭建eureka


服务注册

在order-service中完成服务拉取

Ribbon负载均衡






Nacos注册中心


前往GitHub下载1.4.1版本,下载后解压,在conf中可以修改占用端口(默认8848)
在bin目录下打开终端执行:./startup.cmd -m standalone
-m:模式 standalone:单机启动


默认账号密码都是nacos
服务注册到nacos



Nacos服务分级存储



将orderservice配置集群为GX(8080),将userservice配置集群为GX(8081)和GD(8088)。

这样order(GX)所有的请求会优先到user(GX),如果user(GX)宕机了,才会访问user(GD)。
nacos会将请求优先发送给同集群,集群中默认随机分配。
服务实例的权重设置

权重越大接收请求越多。
权重为0时,服务不会接收请求,当我们需要进行版本更新或者维护时,可以使用该方法。
环境隔离

新建命名空间

上面操作不写id会自动生成一个

修改orderservice:

此时重新启动orderservice:


现在访问order/101

idea控制台显示:没有userservice实例


eureka和nacos的区别





Nacos配置管理

统一配置管理



配置文件命名:服务名称-服务环境.文件类型

项目获取Nacos中的配置文件:项目启动时到nacos中获取配置文件,再和项目中的配置文件组合,因此我们要把nacos地址放到bootstrap.yml中(bootstrap.yml是springboot提供的,它的优先级很高)。

上面文件后缀名要和自己设置的一样,如我应该改为yml。
配置自动刷新



多环境配置共享


Nacos集群搭建
跟着黑马给的文档搞就行了

Feign
使用feign




feign自定义配置



Feign性能优化


Feign最佳实践


方式二中注意:

统一网关Gateway



搭建网关
网关是一个独立的服务



路由断言工厂



路由过滤器GatewayFilter




全局过滤器GlobalFilter



过滤器的执行顺序


跨域问题处理


Docker

初识Docker










安装docker
Centos7(最低要求)
为防止之前可能下载过低版本docker,先卸载docker
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
安装docker
配置yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
更新yum本地镜像源(默认到国外获取镜像,速度慢)
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
安装(ce为社区免费版)
yum install -y docker-ce
关闭防火墙
# 关闭
systemctl stop firewalld
#禁止开机启动防火墙
systemctl disable firewalld
#查看防火墙状态
systemctl status firewalld
启动docker
systemctl start docker
查看是否启动成功
方法1:systemctl status docker
方法2:docker -v
配置docker镜像,docker官方镜像仓库网速较慢,需要设置为国内镜像
# 使用腾讯云云服务器演示
vim /etc/docker/daemon.json
# 添加
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
# 保存退出后重新加载daemon文件重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
docker镜像相关命令



docker容器相关命令

创建运行容器

进入容器内部修改内容


sed -i 's#Welcome to nginx#传智教育欢迎你#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

数据卷


创建数据卷

挂载数据卷



除了数据卷挂载还可以直接宿主机目录和宿主机文件挂载






Dockerfile自定义镜像

镜像结构



构建镜像



![]()
命令最后的点表示dockerfile在当前目录下。
上面的dockerfile有很多可以减少的地方,上面我们基于ubuntu开始构建,需要自己配置jdk,但我们可以基于java:8-alpine


DockerCompose



安装DockerCompose

curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose


curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
DockerCompose部署微服务


RabbitMQ









MQ介绍

RabbitMQ安装和入门


在Centos7中使用Docker安装


docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
--name mq \
--hostname mq1 \
-p 15672:15672 \ #rabbitmq的管理平台的端口
-p 5672:5672 \ #之后做消息通信的端口,发消息收消息要通过该端口
-d \
rabbitmq:3-management



RabbitMQ常见消息类型













