学习黑马的微服务课程的笔记
导学
微服务架构
认识微服务
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