Redis高可用三主三从集群部署

文章目录

  • 🔊博主介绍
  • 🥤本文内容
  • 使用宝塔面板搭建
    • 集群规划
    • 配置
    • 验证
  • 使用docker搭建
  • 使用脚本搭建
  • 📢文章总结
  • 📥博主目标

🔊博主介绍

🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文专业写手、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、🚀徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。

📕拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、Spring MVC、SpringCould、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RockerMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。

📙有过从0到1的项目高并发项目开发与管理经验,对JVM调优、MySQL调优、Redis调优 、ElasticSearch调优、消息中间件调优、系统架构调优都有着比较全面的实战经验。

📘有过云端搭建服务器环境,自动化部署CI/CD,弹性伸缩扩容服务器(最高200台),了解过秒级部署(阿里云的ACK和华为云的云容器引擎CCE)流程,能独立开发和部署整个后端服务,有过分库分表的实战经验。

🎥经过多年在CSDN创作上千篇文章的经验积累,我已经拥有了不错的写作技巧,与清华大学出版社签下了四本书籍的合约,并将陆续在明年出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码–沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!


文章目录

  • 🔊博主介绍
  • 🥤本文内容
  • 使用宝塔面板搭建
    • 集群规划
    • 配置
    • 验证
  • 使用docker搭建
  • 使用脚本搭建
  • 📢文章总结
  • 📥博主目标

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。

💡在这个美好的时刻,本人不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

🥤本文内容

CSDN

使用宝塔面板搭建

集群规划

使用CentOS7进行操作,Linux系统,配置为2个处理器核心,4个线程,8GB内存和100GB磁盘存储,所有计算机都首先进行YUM更新,修改每台计算机的固定IP地址,然后安装宝塔面板,在宝塔面板的软件商店中安装Redis,并开放端口6379(Redis默认端口)。

IP地址布局:
主节点1(Master1):192.168.80.101
主节点2(Master2):192.168.80.102
主节点3(Master3):192.168.80.103
从节点1(Slave1):192.168.80.111
从节点2(Slave2):192.168.80.112
从节点3(Slave3):192.168.80.113

在这里插入图片描述

配置

在Redis 6.0中,你可以使用server_cpulist、bio_cpulist、aof_rewrite_cpulist和bgsave_cpulist等配置项来指定Redis的不同进程或线程应该绑定到哪些CPU内核上运行。你需要根据你的服务器硬件和性能需求来设置这些参数。例如,如果你的服务器有8个CPU内核,并且你希望Redis进程和I/O线程在不同的内核上运行,你可以像下面示例那样配置它们。

  • server_cpulist:RedisServer和IO线程绑定到CPU内核
  • bio_cpulist:后台子线程绑定到CPU内核
  • aof_rewrite_cpulist:后台AOF rewrite进程绑定到CPU内核
  • bgsave_cpulist:后台RDB进程绑定到CPU内核

这可以帮助你优化Redis的性能,特别是当你有多个CPU内核,并且希望将不同类型的操作分散到不同的内核上时。以下是一个redis.conf配置文件的示例,展示了如何设置这些参数:

# Redis配置文件示例  
# 保护模式设置为no,这样Redis就可以接受来自任何主机的连接  
protected-mode no  
# 端口号  
port 6379
# 开启集群模式
cluster-enabled yes
# 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行
cluster-config-file nodes-6379.conf
# 超时时间,超时则认为master宕机,随后主备切换
cluster-node-timeout 5000
# TCP 后台线程和I/O线程:如果启用了 TCP 后台线程(io-threads-do-reads)或 I/O 线程(io-threads),确保为这些线程配置了正确的 CPU 内核列表(server_cpulist、bio_cpulist 等)。
io-threads-do-reads yes  
io-threads 4    
# Redis Server绑定到的CPU内核列表,这里绑定到CPU 0和1  
server_cpulist 0-1    
# 后台I/O线程绑定到的CPU内核列表,这里绑定到CPU 2和3  
bio_cpulist 2-3    
# AOF重写进程绑定到的CPU内核列表,这里绑定到CPU 4  
aof_rewrite_cpulist 4    
# RDB持久化进程绑定到的CPU内核列表,这里绑定到CPU 5  
bgsave_cpulist 5    
# 启用AOF持久化  
appendonly yes    
# AOF文件名称  
appendfilename "appendonly.aof"    
# 密码设置  
requirepass admin
# Redis集群启用了密码验证,那么除了在每个节点的配置文件中设置requirepass之外,还需要设置masterauth
masterauth admin
# 其他配置...

这些参数的具体使用可能会因Redis版本的不同而有所变化,所以请确保查阅你正在使用的Redis版本的官方文档以获取最准确的信息。

在配置完成后,你需要重启Redis服务来使新的配置生效。

验证

验证是否启动成功

ps -ef | grep redis

查看版本

redis-cli --version

redis5.0以上集群创建方式改为了C编写的redis-cli创建,创建集群,–cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。如果redis设置了密码,则创建集群时需要添加密码信息 -a 密码。在任意节点上执行以下命令:

redis-cli -a admin --cluster create 192.168.80.101:6371 192.168.80.102:6372 192.168.80.103:6373 192.168.80.111:6381 192.168.80.112:6382 192.168.80.113:6383 --cluster-replicas 1

确认集群配置信息,确认无误则输入 yes 并按回车。

[root@master1 redis]# redis-cli -a admin --cluster create 192.168.80.101:6371 192.168.80.102:6372 192.168.80.103:6373 192.168.80.111:6381 192.168.80.112:6382 192.168.80.113:6383 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.80.112:6382 to 192.168.80.101:6371
Adding replica 192.168.80.113:6383 to 192.168.80.102:6372
Adding replica 192.168.80.111:6381 to 192.168.80.103:6373
M: e6e0dd6a4e109660df421b4bef93f4f72991619c 192.168.80.101:6371
   slots:[0-5460] (5461 slots) master
M: 5520b535a6e9adc9424c6bd35ccff689a7f9c18a 192.168.80.102:6372
   slots:[5461-10922] (5462 slots) master
M: ea32e9db2b4a9b16e509ecb6a2235abb7a13cd0c 192.168.80.103:6373
   slots:[10923-16383] (5461 slots) master
S: bb78f4547103f6e1bed1482a5ee8204c4c257f81 192.168.80.111:6381
   replicates ea32e9db2b4a9b16e509ecb6a2235abb7a13cd0c
S: 975f23baca9ccc541b16cab916d66efa7d1b6fc2 192.168.80.112:6382
   replicates e6e0dd6a4e109660df421b4bef93f4f72991619c
S: 559528309e92929364623c58208e268c73933d9c 192.168.80.113:6383
   replicates 5520b535a6e9adc9424c6bd35ccff689a7f9c18a
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join


检查集群:

redis-cli -a admin --cluster check 192.168.80.101:6379

查看集群信息:

redis-cli -a admin -h 192.168.80.101 -p 6379 -c

-a Redis密码
-c表示集群模式,指定IP和端口

cluster info 

查看集群节点列表

cluster nodes

使用docker搭建

在安装好docker之后,直接在不同机器上执行以下命令(节点1):

docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6379

使用脚本搭建

或者执行编写脚本docker_redis6.sh:

vim docker_redis6.sh
#!/bin/bash
for i in $(seq 6)
do
docker run -d --name redis-node-$i --net host --privileged=true -v /data/redis/share/redis-node-$i:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 639$i
done

然后执行以下命令:

sh docker_redis6.sh

操作日志如下:

[root@master1 redis]# vim docker_redis6.sh 
[root@master1 redis]# sh docker_redis6.sh
Unable to find image 'redis:7.2.4' locally
7.2.4: Pulling from library/redis
e1caac4eb9d2: Pull complete 
7469c6c5b625: Pull complete 
a3d1b68c4a62: Pull complete 
152cbe749752: Pull complete 
7218480dfba1: Pull complete 
e61c48a0d344: Pull complete 
4f4fb700ef54: Pull complete 
82adb0efabd8: Pull complete 
Digest: sha256:e647cfe134bf5e8e74e620f66346f93418acfc240b71dd85640325cb7cd01402
Status: Downloaded newer image for redis:7.2.4
27410d752c4f4216bd0f52f9c6e183785f8b29c2c161b322605a28391836749e
16607acbb3a6074bf673c973aca7241a1b36b796aa24fae51dbae8d59a620f9c
e404fbfc833b7922d5212df1f44cd73cf260eaf9d6ba0c2a911792fa58874a30
ee60371120a8c3e6a25fce025008670f044e87f397b57141d9352ca238c74290
54e4944b2e03da2f8943e07b5d5c7f8bea24a3820910be2ee62e60551904ed28
3636f3352a55d5c66034353957e9740ef86d555124cd6a87a3d222d620fe0b79
[root@master1 redis]# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS     NAMES
3636f3352a55   redis:7.2.4   "docker-entrypoint.s…"   20 seconds ago   Up 18 seconds             redis-node-6
54e4944b2e03   redis:7.2.4   "docker-entrypoint.s…"   22 seconds ago   Up 20 seconds             redis-node-5
ee60371120a8   redis:7.2.4   "docker-entrypoint.s…"   24 seconds ago   Up 21 seconds             redis-node-4
e404fbfc833b   redis:7.2.4   "docker-entrypoint.s…"   26 seconds ago   Up 24 seconds             redis-node-3
16607acbb3a6   redis:7.2.4   "docker-entrypoint.s…"   28 seconds ago   Up 26 seconds             redis-node-2
27410d752c4f   redis:7.2.4   "docker-entrypoint.s…"   30 seconds ago   Up 28 seconds             redis-node-1
[root@master1 redis]# docker exec -it redis-node-1 bash
root@master1:/data# redis-cli --cluster create 192.168.80.101:6391 192.168.80.101:6392 192.168.80.101:6393 192.168.80.101:6394 192.168.80.101:6395 192.168.80.101:6396  --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.80.101:6395 to 192.168.80.101:6391
Adding replica 192.168.80.101:6396 to 192.168.80.101:6392
Adding replica 192.168.80.101:6394 to 192.168.80.101:6393
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 29422fcaa3adaa1579a18a31df7ed8aabbc4968e 192.168.80.101:6391
   slots:[0-5460] (5461 slots) master
M: 2a3ba06669faad5aa1bee37ecff591efaaa40328 192.168.80.101:6392
   slots:[5461-10922] (5462 slots) master
M: a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a 192.168.80.101:6393
   slots:[10923-16383] (5461 slots) master
S: 91d6ab1f27c8b0c45f9be99f1e29bd105449bc08 192.168.80.101:6394
   replicates a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a
S: 84a2bbd466b9652b3323a0f0650d28905f0aba50 192.168.80.101:6395
   replicates 29422fcaa3adaa1579a18a31df7ed8aabbc4968e
S: a9ab15178f8ed35077193513df6d50ed059c47bd 192.168.80.101:6396
   replicates 2a3ba06669faad5aa1bee37ecff591efaaa40328
Can I set the above configuration? (type 'yes' to accept): 
root@master1:/data# redis-cli --cluster create 192.168.80.101:6391 192.168.80.101:6392 192.168.80.101:6393 192.168.80.101:6394 192.168.80.101:6395 192.168.80.101:6396  --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.80.101:6395 to 192.168.80.101:6391
Adding replica 192.168.80.101:6396 to 192.168.80.101:6392
Adding replica 192.168.80.101:6394 to 192.168.80.101:6393
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 29422fcaa3adaa1579a18a31df7ed8aabbc4968e 192.168.80.101:6391
   slots:[0-5460] (5461 slots) master
M: 2a3ba06669faad5aa1bee37ecff591efaaa40328 192.168.80.101:6392
   slots:[5461-10922] (5462 slots) master
M: a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a 192.168.80.101:6393
   slots:[10923-16383] (5461 slots) master
S: 91d6ab1f27c8b0c45f9be99f1e29bd105449bc08 192.168.80.101:6394
   replicates 29422fcaa3adaa1579a18a31df7ed8aabbc4968e
S: 84a2bbd466b9652b3323a0f0650d28905f0aba50 192.168.80.101:6395
   replicates 2a3ba06669faad5aa1bee37ecff591efaaa40328
S: a9ab15178f8ed35077193513df6d50ed059c47bd 192.168.80.101:6396
   replicates a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 192.168.80.101:6391)
M: 29422fcaa3adaa1579a18a31df7ed8aabbc4968e 192.168.80.101:6391
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a 192.168.80.101:6393
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 84a2bbd466b9652b3323a0f0650d28905f0aba50 192.168.80.101:6395
   slots: (0 slots) slave
   replicates 2a3ba06669faad5aa1bee37ecff591efaaa40328
M: 2a3ba06669faad5aa1bee37ecff591efaaa40328 192.168.80.101:6392
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 91d6ab1f27c8b0c45f9be99f1e29bd105449bc08 192.168.80.101:6394
   slots: (0 slots) slave
   replicates 29422fcaa3adaa1579a18a31df7ed8aabbc4968e
S: a9ab15178f8ed35077193513df6d50ed059c47bd 192.168.80.101:6396
   slots: (0 slots) slave
   replicates a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
root@master1:/data# 
127.0.0.1:6391> cluster info 
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:97
cluster_stats_messages_pong_sent:102
cluster_stats_messages_sent:199
cluster_stats_messages_ping_received:97
cluster_stats_messages_pong_received:97
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:199
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6391> cluster nodes
a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a 192.168.80.101:6393@16393 master - 0 1708957664285 3 connected 10923-16383
29422fcaa3adaa1579a18a31df7ed8aabbc4968e 192.168.80.101:6391@16391 myself,master - 0 1708957663000 1 connected 0-5460
84a2bbd466b9652b3323a0f0650d28905f0aba50 192.168.80.101:6395@16395 slave 2a3ba06669faad5aa1bee37ecff591efaaa40328 0 1708957662000 2 connected
2a3ba06669faad5aa1bee37ecff591efaaa40328 192.168.80.101:6392@16392 master - 0 1708957663279 2 connected 5461-10922
91d6ab1f27c8b0c45f9be99f1e29bd105449bc08 192.168.80.101:6394@16394 slave 29422fcaa3adaa1579a18a31df7ed8aabbc4968e 0 1708957664000 1 connected
a9ab15178f8ed35077193513df6d50ed059c47bd 192.168.80.101:6396@16396 slave a9cce9ea7b3812c4f41a9a8973a2272f7b5e623a 0 1708957665291 3 connected
127.0.0.1:6391> 

CSDN

📢文章总结

对本篇文章进行总结:

🔔以上就是今天要讲的内容,阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。

以梦为马,不负韶华

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

🚀🎉希望各位读者大大多多支持用心写文章的博主,现在时代变了,🚀🎉 信息爆炸,酒香也怕巷子深🔥,博主真的需要大家的帮助才能在这片海洋中继续发光发热🎨,所以,🏃💨赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

  • 💂 博客主页: 我是廖志伟
  • 👉开源项目:java_wxid
  • 🌥 哔哩哔哩:我是廖志伟
  • 🎏个人社区:幕后大佬
  • 🔖个人微信号SeniorRD
  • 🎉微信号二维码SeniorRD

📥博主目标

探寻内心世界,博主分享人生感悟与未来目标

  • 🍋程序开发这条路不能停,停下来容易被淘汰掉,吃不了自律的苦,就要受平庸的罪,持续的能力才能带来持续的自信。我本是一个很普通的程序员,放在人堆里,除了与生俱来的盛世美颜,就剩180的大高个了,就是我这样的一个人,默默写博文也有好多年了。
  • 📺有句老话说的好,牛逼之前都是傻逼式的坚持,希望自己可以通过大量的作品、时间的积累、个人魅力、运气、时机,可以打造属于自己的技术影响力。
  • 💥内心起伏不定,我时而激动,时而沉思。我希望自己能成为一个综合性人才,具备技术、业务和管理方面的精湛技能。我想成为产品架构路线的总设计师,团队的指挥者,技术团队的中流砥柱,企业战略和资本规划的实战专家。
  • 🎉这个目标的实现需要不懈的努力和持续的成长,但我必须努力追求。因为我知道,只有成为这样的人才,我才能在职业生涯中不断前进并为企业的发展带来真正的价值。在这个不断变化的时代,我们必须随时准备好迎接挑战,不断学习和探索新的领域,才能不断地向前推进。我坚信,只要我不断努力,我一定会达到自己的目标。

🔔有需要对自己进行综合性评估,进行职业方向规划,我可以让技术大牛帮你模拟面试、针对性的指导、传授面试技巧、简历优化、进行技术问题答疑等服务。

可访问:https://java_wxid.gitee.io/tojson/

开发人员简历优化、面试突击指导、技术问题解答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/411215.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JS】事件绑定方法自带一个形参e“function(e)”,what is e?

在学习js的时候 我跳过了一部分章节的内容,导致现在学习react的时候很多内容都不知所措,因为这些教程都是建立在它认为你js所有内容都掌握的前提下,当然这是我自身的原因。需要反省。 下面是正题: 我们知道js有很多事件&#…

Linux设备模型(五) - uevent kernel实现

1. Uevent的功能 Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。 该机制通常是用来支持热拔插设备的,例如U盘插入后&…

mac flutter 配置

下载Flutter Sdk Start building Flutter Android apps on macOS - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 下载后解压放到一个文件夹 /Users/zhiyu/Documents/gitflutter/flutter3.19.1/ 环境变量中要用到 配置 Android 开发 下载 Android Studio 和应用工具…

软件运维维保服务方案-套用模板

软件运维维保方案-套用模板 项目情况 1.1 项目背景简述项目的来源、目的和重要性。说明项目的规模、预算和预期目标。 1.2 项目现状分析当前系统/软件的运行状态、存在的问题和潜在风险。提供最近一次的维护报告或相关统计数据。服务简述 2.1 服务内容明确运维服务的具体内容&…

三、系统知识笔记-计算机系统基础知识

一、计算机系统概述 计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。 它是按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。 冯诺依曼体系计算机结构: 1.1计算机硬件组成 冯诺依曼计算机结…

大模型实战营第二期——4. XTuner 大模型单卡低成本微调实战

github地址:InternLM/tutorial-书生浦语大模型实战营文档地址:XTuner 大模型单卡低成本微调实战视频地址:XTuner 大模型单卡低成本微调实战Intern Studio: https://studio.intern-ai.org.cn/console/instance 这个人的研究方向是眼科的AI&am…

分披萨 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小…

matlab 线性四分之一车体模型

1、内容简介 略 57-可以交流、咨询、答疑 路面采用公式积分来获得,计算了车体位移、非悬架位移、动载荷等参数 2、内容说明 略 3、仿真分析 略 线性四分之一车体模型_哔哩哔哩_bilibili 4、参考论文 略

Kubernetes基础(二十五)-Kubernetes GC原理

1 K8s 的垃圾回收策略 当给k8s一个资源对象设置OwnerReference的时候,删除该资源对象的owner, 该对象也会被连带删除。这个时候用的就是k8s的垃圾回收机制。 k8s目前支持三种回收策略: 1)前台级联删除(Foreground Cascading De…

中英文互译赫尔辛基大学翻译模型安装与测试

引子 近期接到一个文本中英互译的任务,一直以为这种翻译应该很成熟,各种商用版本很多。那么开源的一定也不少,经过网络搜索发现,近两年还真的出现了很多优秀的开源翻译项目。找到了赫尔辛基大学开源免费的多语言翻译模型&#xff…

202432读书笔记|《泰戈尔的诗》——什么事让你大笑,我生命的小蓓蕾

202432读书笔记|《泰戈尔的诗》——什么事让你大笑,我生命的小蓓蕾 《泰戈尔写给孩子的诗(中英双语版)》作者拉宾德拉纳特泰戈尔文 张王哲图,图文并茂的一本书,文字与图画都很美,相得益彰!很值得…

使用mimikata获取域控权限(无免杀)

一、实验环境 windows 7 ip:192.168.1.3 (域内普通用户,有本地管理员权限,但不知明文密码) windows server 2012 ip:192.168.1.1 (DC域控,与server2012管理员密码相同,但不知明文密码)二、准备工作 1、使…

java spring 01 IOC源码

01.spring 中的基础是IOC 中有一个方法 例子: 01. 02. 03. 这里是扩展方法,现在是空的 beanfactorypostprocessors: 国际化:(一般不管) 广播器: 监听器: 实例化&#xff1…

「哈哥赠书活动 - 48期」-『商业分析思维与实践:用数据分析解决商业问题宣传文案』

⭐️ 赠书 - 《商业分析思维与实践》 ⭐️ 内容简介 本书以业务为导向,详细地讲解了如何通过大数据分析来解决商业问题。其目的在于运用大数据分析思维,帮助读者把学术知识应用于真实的业务场景,解决实际的业务问题。本书基于业务问题&#x…

nginx之状态页 日志分割 自定义图表 证书

5.1 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 server{…

LeetCode 热题 100 | 二叉树(四)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题(即将返校版),语言是 C 1 114. 二叉树展开为链表 题眼:展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

9002-29-3,D-85大孔丙酸烯系弱酸性阳离子交换树脂,在水或极性溶剂中能溶胀

您好,欢迎来到新研之家 文章关键词:9002-29-3,D-85大孔丙酸烯系弱酸性阳离子交换树脂,阳离子交换树脂,阳离子交换树脂IRC-50 一、基本信息 【产品简介】:Cation exchange resin is a special type of re…

Linux信号详解

文章目录 一、Linux信号1. 信号的概念2. 信号的定义3. 系统定义的信号 二、信号产生的方式1.通过键盘产生2. 通过系统调用3. 软件条件4. 硬件异常 三、信号处理函数1. OS发送信号的实质2. 指令发送信号3. signal()4. sigaction() 四、信号屏蔽机制1. 信号处理方式2.信号集操作函…

python学习26

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

数字化转型导师坚鹏:政府数字化转型智慧城市类案例研究

政府数字化转型智慧城市类案例研究 课程背景: 很多地方政府存在以下问题: 不清楚政府数字化转型的智慧城市类成功案例 不清楚政府数字化转型的城市大脑类成功案例 不清楚政府数字化转型的综合实践类成功案例 课程特色: 针对性强 …