小记
1.一个服务既可以是提供者也可以是消费者
2.Ribbon默认懒加载,改变方法如下:
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: userservice # 指定对userservice这个服务饥饿加载
Nacos
Nacos注册中心
Nacos注册中心-集群负载均衡策略
Nacos注册中心-加权负载均衡
环境隔离- namespace
Nacos配置管理
Docker小记
常用指令:
docker stop <服务名>
数据卷的作用:
将容器与数据分离,解耦合,方便操作容器内数据,保证数 据安全
数据卷操作:
docker volume create
docker volume ls
docker volume inspect
docker volume rm
docker volume prune
自定义镜像
镜像是分层结构,每一层称为一个Layer :
Baselmage层:包含基本的系统函数库、环境变量、文件系统
Entrypoint:入口,是镜像中应用启动的命令
其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置
问题
负载均衡两种配置区别:
userservice: #针对某个服务随机
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
/**
* 针对全局随机
*/
@Bean
public IRule randomRule(){
return new RandomRule();
}
Nacos与Eureka区别
Nacos与eureka的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
Nacos与Eureka的区别
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
Gateway网关
搭建服务
网关搭建步骤: 1、创建项目,引入nacos服务发现和gateway依赖 2、配置application.yml,包括服务基本信息、nacos地址、路由
路由配置包括: 1、路由id:路由的唯一标示 2、路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡 3、路由断言(predicates):判断路由的规则, 4、路由过滤器(filters):对请求或响应做处理
关于nacos启动容易出现的问题
1、启动时,服务停止导致宕机出现,这时直接删除nacos文件下的data再次重启项目即可解决
failed to req API:/nacos/v1/ns/instance after all servers([localhost:80]) tried: ErrCode:503, ErrMsg:server is DOWN now, please try again later!
Docker常见问题
问题描述
今天想要尝试通过centos7安装docker,结果安装相应软件包时出现报错 出现的问题是:“Another app is currently holding the yum lock;waiting for it to exit..” 这句话的意思就是有一个应用程序正在锁定yum,等待退出 yum命令Q报错代码:
Another app is currently holding the yum lock;waiting for it to exit...
另一个应用程序是:Packagekit
内存:31MRSS(451 MB VSZ)
已启动:Wed Aug1709:08:402022-00:59之前
状态:睡眠中,进程ID:2833
解决办法:
rm -f /var/run/yum.pid
然后重新运行yun命令即可
MySQL远程连接问题:
问题复现:
在虚拟机运行MySQL时在本地主机端连接MySQL出现报错。java.sql.SQLException: null, message from server: “Host ‘XXX‘ is not allowed to connect异常
解决方法:
输入
mysql -u root -p
输入
use mysql
输入
update user set host = '%' where user = 'root'
,解除只允许localhost访问限制输入
flush privileges
,刷新权限
DirectQueue小细节
如图所示,假如指定不同的key因为手误而打了两个相同的key
这时候我们已经运行并发现了该错误,我们将第二个红框改为yellow
在重新启动,这时并不会重新绑定,而是在此基础上在加一个key:yellow的新绑定