小记

1.一个服务既可以是提供者也可以是消费者

2.Ribbon默认懒加载,改变方法如下:

ribbon:
  eager-load:
    enabled: true  # 开启饥饿加载
    clients: userservice  # 指定对userservice这个服务饥饿加载

ab8c1a166dcae512f27d4862595bfd7d.png

Nacos

Nacos注册中心

4b8911f29f9342589d8adec38bb3ec88.png

Nacos注册中心-集群负载均衡策略

8d2ea561620d823463acfb671d8cf030.png

Nacos注册中心-加权负载均衡

6cb65b19608b94e1b193467b9bd473eb.png

环境隔离- namespace

4fb751bbacdef43dfa8bc5b90fe72970.png

Nacos配置管理

5cfe340c3ae4a6e62a0bce2a2d22fab0.png

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区别

  1. Nacos与eureka的共同点

    1. 都支持服务注册和服务拉取

    2. 都支持服务提供者心跳方式做健康检测

  2. Nacos与Eureka的区别

    1. Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

    2. 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

    3. Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

    4. 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异常

解决方法:

  1. 输入mysql -u root -p

  2. 输入use mysql

  3. 输入update user set host = '%' where user = 'root',解除只允许localhost访问限制

  4. 输入flush privileges,刷新权限

DirectQueue小细节

如图所示,假如指定不同的key因为手误而打了两个相同的key

7267cebe209cb3d75e3bc4a44c8e435c.png

这时候我们已经运行并发现了该错误,我们将第二个红框改为yellow在重新启动,这时并不会重新绑定,而是在此基础上在加一个key:yellow的新绑定

bedb6eecd054765b1e2b3225a0d4bfba.png