0427-直播
2025-08-07 17:25:49 8 举报
11111
作者其他创作
大纲/内容
技术问题
问题一:发送消息和接收消息都要记录下来,需求用切面实现,表已创建。
简单:使用Spring的环绕通知.https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/advice.html
问题二:用户上传过多可能导致 oom ,怎么解决?怎么防范,有什么好监控」 vm 的方法?问题 2 :线程池如何控制,保证用户体验。
1、OOM怎么出现的?
2、只有知道怎么出现才能解决
3、Jviisualvm/arthas[主流]
4、调整阻塞队列大小
5、切换阻塞队列选择
6、调整线程池的核数
CPU核心数 *( 1 + 线程等待时间 / 线程运行总时间 )
问题三:怎么通过日志定位问题,日志写的很差,基本查日志都是要对着代码一行一行找。
1、系统日志
1、cat命令:
cat /var/log/messages:查看系统日志。
cat /var/log/auth.log:查看认证相关的。
cat /var/log/messages:查看系统日志。
cat /var/log/auth.log:查看认证相关的。
2、tail命令:
tail -f /var/log/syslog:实时查看syslog日志的尾部内容。
tail -n 100 /var/log/apache2/access.log:查看Apache访问日志的最后100行。
tail -f /var/log/syslog:实时查看syslog日志的尾部内容。
tail -n 100 /var/log/apache2/access.log:查看Apache访问日志的最后100行。
3、less命令:
less /var/log/syslog:分页查看syslog日志。
less +F /var/log/syslog:实时查看syslog日志。
less /var/log/syslog:分页查看syslog日志。
less +F /var/log/syslog:实时查看syslog日志。
4、grep命令:
grep -i error /var/log/syslog:在syslog日志中搜索错误(不区分大小写)。
grep 'Failed password' /var/log/secure:在secure日志中搜索失败的登录尝试
grep -i error /var/log/syslog:在syslog日志中搜索错误(不区分大小写)。
grep 'Failed password' /var/log/secure:在secure日志中搜索失败的登录尝试
5、awk和sed命令:
awk '/error/ {print}' /var/log/syslog:使用awk打印包含“error”关键词的行。
sed -n '/error/p' /var/log/syslog:使用sed打印包含“error”关键词的行。
awk '/error/ {print}' /var/log/syslog:使用awk打印包含“error”关键词的行。
sed -n '/error/p' /var/log/syslog:使用sed打印包含“error”关键词的行。
6、journalctl命令(针对使用systemd的系统):
journalctl:查看整个系统日志。
journalctl -u nginx.service:查看特定服务的日志(例如nginx)。
journalctl -b -1:查看自上次启动以来的日志。
journalctl:查看整个系统日志。
journalctl -u nginx.service:查看特定服务的日志(例如nginx)。
journalctl -b -1:查看自上次启动以来的日志。
7、find命令:
find /var/log -type f -name '*.log' -exec tail -n 10 {} \;:查找并显示所有以.log结尾的文件的内容。
find /var/log -type f -name '*.log' -exec tail -n 10 {} \;:查找并显示所有以.log结尾的文件的内容。
2、Docker日志
未挂载
docker logs命令:
docker logs [OPTIONS] CONTAINER:查看指定容器的日志。
docker logs -f mycontainer:实时查看容器mycontainer的日志。
docker logs --since 30m mycontainer:查看过去30分钟内的日志。
docker logs --tail 100 mycontainer:只查看最后100条日志。
docker logs --timestamps mycontainer:查看日志时添加时间戳。
docker logs [OPTIONS] CONTAINER:查看指定容器的日志。
docker logs -f mycontainer:实时查看容器mycontainer的日志。
docker logs --since 30m mycontainer:查看过去30分钟内的日志。
docker logs --tail 100 mycontainer:只查看最后100条日志。
docker logs --timestamps mycontainer:查看日志时添加时间戳。
docker-compose logs命令(适用于使用Docker Compose管理的容器):
docker-compose logs [SERVICE]:查看指定服务的日志。
docker-compose logs -f:实时查看所有服务的日志。
docker-compose logs --tail 50:查看所有服务的最后50条日志。
docker-compose logs [SERVICE]:查看指定服务的日志。
docker-compose logs -f:实时查看所有服务的日志。
docker-compose logs --tail 50:查看所有服务的最后50条日志。
docker exec -it mycontainer cat /var/log/app.log----容器中的文件系统日志
已挂载2
docker run -d --name mycontainer -v /path/to/host/log:/var/log/app.log myimage--- 外部挂载的宿主机目录下查看
3、K8s日志
使用kubectl logs命令:
kubectl logs POD_NAME:查看指定Pod的日志。
kubectl logs -f POD_NAME:实时跟踪Pod的日志输出。
kubectl logs POD_NAME -c CONTAINER_NAME:如果Pod中有多个容器,指定容器名称查看日志。
kubectl logs --since=1h POD_NAME:查看过去1小时内的日志。
kubectl logs --tail=100 POD_NAME:只查看日志的最后100行。
kubectl logs POD_NAME:查看指定Pod的日志。
kubectl logs -f POD_NAME:实时跟踪Pod的日志输出。
kubectl logs POD_NAME -c CONTAINER_NAME:如果Pod中有多个容器,指定容器名称查看日志。
kubectl logs --since=1h POD_NAME:查看过去1小时内的日志。
kubectl logs --tail=100 POD_NAME:只查看日志的最后100行。
kubectl exec mypod -- cat /var/log/app.log:查看Pod中特定日志文件的内容。
kubectl describe pod podname:获取Pod的详细信息,包括事件和状态变化,
使用日志记录插件:
Kubernetes支持多种日志记录插件,如ELK栈、PLG栈、Fluentd、Stackdriver等。这些插件可以帮助您收集、存储和查询集群范围内的日志。
Kubernetes支持多种日志记录插件,如ELK栈、PLG栈、Fluentd、Stackdriver等。这些插件可以帮助您收集、存储和查询集群范围内的日志。
使用Kubernetes Dashboard:
Kubernetes Dashboard提供了一个Web界面,可以通过它查看Pod日志。
Kubernetes Dashboard提供了一个Web界面,可以通过它查看Pod日志。
问题四:文件的断点续传如何用代码实现。
code:SpringBoot+MinIO实现
code:SpringBoot+Netty实现
问题五:销售优惠卷以及满减活动
子主题
问题六:k8s环境,在服务端直接修改ca证书然后重新生成的conifg文件,用客户端连接显示未授权,想修改客户端连接的.kube/config文件的为用户登录秘钥不生效,客户端登录的配置文件秘钥怎么修改。
更新CA证书
将新的CA证书复制到客户端机器上的一个安全目录。
使用kubectl config set-cluster <cluster-name> --certificate-authority=<path-to-ca-certificate>
使用kubectl config set-cluster <cluster-name> --certificate-authority=<path-to-ca-certificate>
客户端更新CA证书和秘钥命令:kubectl config set-credentials <user-name> --client-certificate=<path-to-client-certificate> --client-key=<path-to-client-key>
验证配置:
使用kubectl config view命令查看当前的配置。
使用kubectl config get-contexts命令查看可用的上下文。
使用kubectl cluster-info命令验证与集群的连接。
使用kubectl config view命令查看当前的配置。
使用kubectl config get-contexts命令查看可用的上下文。
使用kubectl cluster-info命令验证与集群的连接。
未授权的原因
客户端配置未正确更新:确保客户端的.kube/config文件中的certificate-authority-data或certificate-authority字段已经更新为新的CA证书。
证书未正确替换:客户端的.kube/config文件中的client-certificate-data和client-key-data字段需要更新为使用新CA签发的客户端证书和密钥。
权限问题:确保客户端的用户有权限访问新的证书和密钥文件。
配置文件格式:如果手动编辑了.kube/config文件,确保配置文件的格式是正确的,特别是base64编码的证书和密钥数据。
Kubernetes API服务器配置:确保Kubernetes API服务器配置了正确的CA证书,并且启用了正确的认证模式。
Kubernetes API服务器配置:确保Kubernetes API服务器配置了正确的CA证书,并且启用了正确的认证模式。
Token或用户凭证:如果使用的是基于Token的认证,确保Token是有效的,并且有正确的权限。
上下文和命名空间:确保.kube/config文件中的当前上下文(context)配置正确,并且指向了正确的集群、用户和命名空间。
上下文和命名空间:确保.kube/config文件中的当前上下文(context)配置正确,并且指向了正确的集群、用户和命名空间。
问题七:Java对接Wps
https://p.wpseco.cn/wiki/doc/65f10e3f0582ede3d238fa6b
1、数据不一致
在并发写入时,如果更新操作跨多个分片,可能会出现数据一致性问题。例如,一个事务需要更新两个分片上的数据,如果其中一个更新成功而另一个失败,会导致数据不一致。
解决:使用分布式锁保证数据一致性。
问题八:分库分表Sharding,如何实现按月份进行分库分表,原来的数据如何处理,后续数据如何处理
分库分表路由键
配置文件中修改
1.1 库的路由键选择
1.2 库的路由算法
2.1 表的路由键选择
2.2 表的路由算法
javaconfig修改
https://shardingsphere.apache.org/
before 数据
迁移
停机迁移
操作流程:
1)系统停掉,就没有流量写入了,此时老的单库单表就不会有新数据写入了。然后你用提前写好迁移数据的工具,将单库单表的数据读出来,写到分库分表里面去。
2)迁移完了之后,修改系统的数据库连接配置啥的,包括可能代码和SQL也许有修改,那你就用最新的代码,然后直接启动连到新的分库分表上去。
3)这些工作做完之后,验证一下系统,如果没什么问题, 整个迁移工作就结束了。
1)系统停掉,就没有流量写入了,此时老的单库单表就不会有新数据写入了。然后你用提前写好迁移数据的工具,将单库单表的数据读出来,写到分库分表里面去。
2)迁移完了之后,修改系统的数据库连接配置啥的,包括可能代码和SQL也许有修改,那你就用最新的代码,然后直接启动连到新的分库分表上去。
3)这些工作做完之后,验证一下系统,如果没什么问题, 整个迁移工作就结束了。
缺点:
必须停机几个小时或则更长的时间,而且如果一旦迁移没成功,必须切回原来的单库单表方案,下次还得发公告再次停机迁移数据。
有的项目一旦上线就不能停止运行,那么这种方案就不可取了。
必须停机几个小时或则更长的时间,而且如果一旦迁移没成功,必须切回原来的单库单表方案,下次还得发公告再次停机迁移数据。
有的项目一旦上线就不能停止运行,那么这种方案就不可取了。
不停机迁移
1、开启binlog日志
利用canal订阅增量数据
插入到规则表中
2、写脚本扫描
扫描开启binlog日志以后得数据
插入到规则表中
after 数据
不用管,自动按照规则插入进去
问题九:Redis集群分片在高并发下的问题。
2、网络分区问题
在分布式系统中,网络延迟和分区是常见问题。这可能导致请求延迟,甚至在极端情况下,节点之间的网络分区可能导致数据不一致。
解决:优化网络基础设施,减少延迟和分区问题。
3、请求路由问题
如果请求路由不当,可能会导致请求被发送到错误的分片,从而造成数据访问错误或性能下降
解决:确保请求路由策略正确,使用一致性哈希等算法来分布数据。
4、性能瓶颈
尽管分片可以提高性能,但在高并发情况下,单个分片可能会成为性能瓶颈。此外,分片间的数据迁移也可能影响性能。
解决:监控集群性能,及时调整分片数量和内存分配。
5、内存使用不均衡
由于数据分布不均或分片策略不当,可能导致某些分片使用更多的内存,而其他分片则未充分利用,从而影响整体性能。
解决:监控集群性能,及时调整分片数量和内存分配。
6、故障恢复复杂
在分片集群中,节点故障的恢复通常比单实例Redis更为复杂。如果故障处理不当,可能会导致数据丢失或服务中断。
解决:使用专业的Redis集群管理工具,如Redis Cluster
业务问题
问题一:银行项目,属于一个大项目,我们组只负责其中一个小模块,在一个大项目中,东西很多无从下手,都不知道学什么。一开始从项目的哪里入手。
方向问题
问题一:军工项目能做嘛
0 条评论
下一页