集群架构-web服务器(接入负载均衡+数据库+会话保持redis)--15454核心配置详解

紧接着前面的集群架构深化—中小型公司(拓展到大型公司业务)–下面图简单回顾一下之前做的及故障核心知识总结(等后期完全整理后,上传资源希望能帮大家)

在这里插入图片描述
在这里插入图片描述

web集群架构-接入负载均衡部署web02服务器等

web集群-搭建web02节点

[root ~]#yum install php


[root ~]#cd /etc/nginx/conf.d/
[root /etc/nginx/conf.d]#ll
-rw-r--r-- 1 root root  581 65 20:58 blog.wulinlinux.cn.conf
-rw-r--r-- 1 root root  321 526 10:42 buy.wulinlinux.cn.conf
-rw-r--r-- 1 root root  236 64 18:53 cfg.wulinlinux.cn.conf
-rw-r--r-- 1 root root 1072 424 02:24 default.conf
-rw-r--r-- 1 root root  151 526 10:43 hs.wulin.cn.conf
-rw-r--r-- 1 root root  262 63 20:37 proxy.wulinlinux.cn.conf
-rw-r--r-- 1 root root  111 526 10:44 wy.wulinlinux.cn.conf

[root /etc/nginx/conf.d]#cd /etc/php
php.d/     php-fpm.d/ php-zts.d/ 
[root /etc/nginx/conf.d]#cd /etc/php-fpm.d/
[root /etc/php-fpm.d]#ll
总用量 20
-rw-r--r-- 1 root root 17964 65 20:54 www.conf

[root /etc/php-fpm.d]#scp www.conf 192.168.65.8:`pwd`
root.168.65.8's password: 
www.conf                                                                                                                                  100%   18KB  17.6MB/s   00:00 
[root /etc/php-fpm.d]#cd /app/code/blog/
[root /app/code/blog]#ll
总用量 232
-rw-r--r--  1 www  www    405 26 2020 index.php
-rw-r--r--  1 www  www  19416 526 15:39 license.txt
-rw-r--r--  1 www  www   7348 526 15:39 readme.html
drwxr-xr-x  3 root root    21 65 21:36 up-content
-rw-r--r--  1 www  www   7387 526 15:39 wp-activate.php
drwxr-xr-x  9 www  www   4096 526 15:39 wp-admin
-rw-r--r--  1 www  www    351 26 2020 wp-blog-header.php
-rw-r--r--  1 www  www   2323 526 15:39 wp-comments-post.php
-rw-rw-rw-  1 www  www   3283 526 14:32 wp-config.php
-rw-r--r--  1 www  www   3328 526 15:39 wp-config-sample.php
drwxr-xr-x  7 www  www     99 527 16:59 wp-content
-rw-r--r--  1 www  www   5638 526 15:39 wp-cron.php
drwxr-xr-x 30 www  www  12288 526 15:39 wp-includes
-rw-r--r--  1 www  www   2502 1127 2022 wp-links-opml.php
-rw-r--r--  1 www  www   3927 526 15:39 wp-load.php
-rw-r--r--  1 www  www  50917 526 15:39 wp-login.php
-rw-r--r--  1 www  www   8525 526 15:39 wp-mail.php
-rw-r--r--  1 www  www  28427 526 15:39 wp-settings.php
-rw-r--r--  1 www  www  34385 526 15:39 wp-signup.php
-rw-r--r--  1 www  www   4885 526 15:39 wp-trackback.php
-rw-r--r--  1 www  www   3246 526 15:39 xmlrpc.php
  • 打包代码排除上传目录
[root /app/code/blog]#tar zcf ~/wordpress-no-uploads.tar.gz   .  --exclude=wp-content/uploads/*
[root@web01 /app/code/blog]#tar tf ~/wordpress-no-uploads.tar.gz  |grep uploads
./wp-content/uploads/
[root@web01 ~]#scp wordpress-no-uploads.tar.gz  192.168.65.8:`pwd`

web02:查看并解压到对应的目录

[root ~]#ll
总用量 27752
-rw-------. 1 root root     1588 54 19:50 anaconda-ks.cfg
-rw-r--r--  1 root root 28411082 713 19:14 wordpress-no-uploads.tar.gz
[root ~]#tar xf wordpress-no-uploads.tar.gz -C /app/code/blog/
[root ~]#ll /app/code/blog/
总用量 232
-rw-r--r--  1 www  www    405 26 2020 index.php
-rw-r--r--  1 www  www  19416 526 15:39 license.txt
-rw-r--r--  1 www  www   7348 526 15:39 readme.html
drwxr-xr-x  3 root root    21 65 21:36 up-content
-rw-r--r--  1 www  www   7387 526 15:39 wp-activate.php
drwxr-xr-x  9 www  www   4096 526 15:39 wp-admin
-rw-r--r--  1 www  www    351 26 2020 wp-blog-header.php
-rw-r--r--  1 www  www   2323 526 15:39 wp-comments-post.php
-rw-rw-rw-  1 www  www   3283 526 14:32 wp-config.php
-rw-r--r--  1 www  www   3328 526 15:39 wp-config-sample.php
drwxr-xr-x  7 www  www     99 527 16:59 wp-content
-rw-r--r--  1 www  www   5638 526 15:39 wp-cron.php
drwxr-xr-x 30 www  www  12288 526 15:39 wp-includes
-rw-r--r--  1 www  www   2502 1127 2022 wp-links-opml.php
-rw-r--r--  1 www  www   3927 526 15:39 wp-load.php
-rw-r--r--  1 www  www  50917 526 15:39 wp-login.php
-rw-r--r--  1 www  www   8525 526 15:39 wp-mail.php
-rw-r--r--  1 www  www  28427 526 15:39 wp-settings.php
-rw-r--r--  1 www  www  34385 526 15:39 wp-signup.php
-rw-r--r--  1 www  www   4885 526 15:39 wp-trackback.php
-rw-r--r--  1 www  www   3246 526 15:39 xmlrpc.php

[root ~]#yum insatll -y nfs-utils
[root ~]#ll /app/code/blog/wp-content/
总用量 12
-rw-r--r-- 1 www www   28 19 2012 index.php
drwxr-xr-x 4 www www 4096 526 15:39 languages
drwxr-xr-x 3 www www   55 529 15:55 plugins
drwxr-xr-x 6 www www  118 529 15:55 themes
drwxr-xr-x 2 www www    6 527 16:58 upgrade
drwxr-xr-x 3 www www   18 526 14:36 uploads

[root ~]#ll /app/code/blog/wp-content/uploads/
总用量 0
drwxr-xr-x 3 root root 16 64 20:26 2024
[root ~]#tree /app/code/blog/wp-content/uploads/
/app/code/blog/wp-content/uploads/
└── 2024
    └── 05
        └── 109951165166142900.jpg

2 directories, 1 file
[root ~]#cd /app/code/blog/wp-content/uploads/
[root /app/code/blog/wp-content/uploads]#ll
总用量 0
drwxr-xr-x 3 root root 16 64 20:26 2024
[root /app/code/blog/wp-content/uploads]#rm -fr 2024/
[root /app/code/blog/wp-content/uploads]#ll
总用量 0
[root /app/code/blog/wp-content/uploads]#cd ..
[root /app/code/blog/wp-content]#ll
总用量 12
-rw-r--r-- 1 www www   28 19 2012 index.php
drwxr-xr-x 4 www www 4096 526 15:39 languages
drwxr-xr-x 3 www www   55 529 15:55 plugins
drwxr-xr-x 6 www www  118 529 15:55 themes
drwxr-xr-x 2 www www    6 527 16:58 upgrade
drwxr-xr-x 2 www www    6 713 19:21 uploads

上面发现挂载的时候,发现不是空的原因是之前所有的文件是从web01上进行copy过来的:

[root@web02 ~]#tar xf wordpress-no-uploads.tar.gz -C /app/code/blog/
[root@web02 ~]#ll /app/code/blog/wp-content/uploads/
总用量 0
[root@web02 ~]#ll /app/code/blog/
总用量 232
-rw-r--r--  1 www  www    405 2月   6 2020 index.php
-rw-r--r--  1 www  www  19416 5月  26 15:39 license.txt
-rw-r--r--  1 www  www   7348 5月  26 15:39 readme.html
drwxr-xr-x  3 root root    21 6月   5 21:36 up-content
-rw-r--r--  1 www  www   7387 5月  26 15:39 wp-activate.php
drwxr-xr-x  9 www  www   4096 5月  26 15:39 wp-admin
-rw-r--r--  1 www  www    351 2月   6 2020 wp-blog-header.php
-rw-r--r--  1 www  www   2323 5月  26 15:39 wp-comments-post.php
-rw-rw-rw-  1 www  www   3283 5月  26 14:32 wp-config.php
-rw-r--r--  1 www  www   3328 5月  26 15:39 wp-config-sample.php
drwxr-xr-x  7 www  www     99 5月  27 16:59 wp-content
-rw-r--r--  1 www  www   5638 5月  26 15:39 wp-cron.php
drwxr-xr-x 30 www  www  12288 5月  26 15:39 wp-includes
-rw-r--r--  1 www  www   2502 11月 27 2022 wp-links-opml.php
-rw-r--r--  1 www  www   3927 5月  26 15:39 wp-load.php
-rw-r--r--  1 www  www  50917 5月  26 15:39 wp-login.php
-rw-r--r--  1 www  www   8525 5月  26 15:39 wp-mail.php
-rw-r--r--  1 www  www  28427 5月  26 15:39 wp-settings.php
-rw-r--r--  1 www  www  34385 5月  26 15:39 wp-signup.php
-rw-r--r--  1 www  www   4885 5月  26 15:39 wp-trackback.php
-rw-r--r--  1 www  www   3246 5月  26 15:39 xmlrpc.php

[root@web02 ~]#systemctl enable nginx php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@web02 ~]#systemctl restart nginx php-fpm
[root@web02 ~]#ps -ef |grep www
apache     2614   2611  0 19:30 ?        00:00:00 php-fpm: pool www
apache     2615   2611  0 19:30 ?        00:00:00 php-fpm: pool www
apache     2616   2611  0 19:30 ?        00:00:00 php-fpm: pool www
apache     2617   2611  0 19:30 ?        00:00:00 php-fpm: pool www
apache     2618   2611  0 19:30 ?        00:00:00 php-fpm: pool www
root       2623   2062  0 19:30 pts/0    00:00:00 grep --color=auto www

在这里插入图片描述
web02打开浏览器:
在这里插入图片描述

发现如果没有进行挂载,图片将不会存在

在这里插入图片描述
文字存在的原因是:写到了数据库;

这时候可以尝试将这个没有显示的图片,换一个页面进行打开发现:
在这里插入图片描述
这里没有出现的情况是没有挂载:

mkdir -p /app/code/blog/wp-content/uploads
mount -t /nfs 172.16.1.31:/nfs/wordpress/  /app/code/blog/wp-content/uploads/
记得要永久挂载

这时候再刷新页面,图片才能加载出来(图片在nfs服务器存储上面)

web集群lnmp-wordpress(为例)-存储架构图

在这里插入图片描述

问题:负载均衡上的nginx用户需不需要也改成www?还是默认就可以?如果不改对内容有没有影响?

不需要改,负载均衡只需要进行做转发(但是一般还是会进行改掉的:方便批量进行管理)

[root ~]#vim /etc/nginx/conf.d/blog.conf

在这里插入图片描述
现在进行访问,不能直接判断是去了web01上,还是web02上(进一步判断:看日志记录、抓包)

[root ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root ~]#systemctl reload nginx
[root ~]#tail -f /var/log/nginx/blog-access.log 

在这里插入图片描述

[root ~]#tail -f /var/log/nginx/blog-access.log

会发现两边都会出现记录:
在这里插入图片描述

会话保持

(1)概述

  • 用户的请求,登录的请求,经过负载的均衡后落到后面的web服务器上,登录的状态、信息也会记录在web服务器上,就会导致不通的web服务器上,登录的状态不统一,造成用户频繁需要登录

  • 会话:用户登录状态、购物车状态

  • 目标:如何实现会话保持,会话共享?

(2)cookie vs session

开发中核心概念:知晓cookie与sesion含义,大致区别:

技术点 共同点 区别 其他
cookie 存放用户的信息,登录信息 存放在客户端浏览器 服务器给客户端响应,进行设置set-cookie,未来再次访问携带者cookie访问服务端
session 存放用户的信息,登录信息 存放服务端(文件,数据) 浏览器cookie与服务端的session

浏览器F12查看cookie信息:
在这里插入图片描述
在这里插入图片描述

(3)会话保持方案-架构设计图

在这里插入图片描述

  • 纯粹cookie
  • cookie+session方式 + 统一存放session服务器(会话保持服务器)
  • ip_hash方法
  • 通过redis实现phpmyadmin、kodbox会话共享

部署:phpmyadmin:web页面版本的数据库管理工具,sql语句,php代码

部署流程

流程:

  1. db01服务器:phpmyadmin用户,权限大一些
  2. web服务器:部署代码,传输到另外一个web上
  3. 准备redis环境(db01)
  4. 修改php配置
  5. 接入负载均衡,访问与测试0

a)db准备phpmyadmin的用户

grant all on *.* to 'phpmyadmin'@'172.16.1.%' identified by '1';

在这里插入图片描述

b)部署代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载官方包:
在这里插入图片描述
上传到linux中:
在这里插入图片描述

#查看压缩包格式
[root ~]#ll phpMyAdmin-5.2.1-all-languages.zip 
-rw-r--r-- 1 root root 15096155 716 13:30 phpMyAdmin-5.2.1-all-languages.zip

在这里插入图片描述

##解压到当前目录
unzip phpMyAdmin-5.2.1-all-languages.zip 
[root ~]#mkdir -p /app/code/admin
[root ~]#mv phpMyAdmin-5.2.1-all-languages/*  /app/code/admin/

在这里插入图片描述

浏览器访问admin.wylinlinux.cn出现phpmyadmin报错

在这里插入图片描述
问题:
在这里插入图片描述
刷新之后重新访问网站:
在这里插入图片描述
登录外界数据库发现登录失败:原因是这种登录方式为本地,所以登录会出现下图错误:
在这里插入图片描述

默认连接的是本地的数据库,怎么让它连接db01服务器呢?

解决方式:手动创建连接数据库的配置文件

cp config.sample.inc.php 
grep -n host config.inc.php
30:$cfg['servers']['$i']['host']='172.16.1.51';


chown -R www.www /var/lib/php/session
ll -d /var/lib/php/session

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就成功连接到别的数据库:
在这里插入图片描述

[root /app/code]#scp -r admin/ 192.168.65.8:`pwd`
[root /app/code]#cd /etc/nginx/conf.d/
[root /etc/nginx/conf.d]#scp phpmyadmin.wulinlinux.cn.conf  192.168.65.8:`pwd`
root.168.65.8's password: 
phpmyadmin.wulinlinux.cn.conf                                                                                                             100%  592   719.3KB/s   00:00 
[root ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root ~]#systemctl  reload nginx
[root ~]#chown -R www.www /var/lib/php/session

在这里插入图片描述
在这里插入图片描述
检查语法

[root /etc/nginx/conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root /etc/nginx/conf.d]#systemctl reload nginx.service 

本地解析:
在这里插入图片描述
访问浏览器,刷新之后要重新登录:
在这里插入图片描述

突然出现报错:

在这里插入图片描述
然后我在访问的浏览器前面加上https,然后登录没有报错,但是重新登录又出现报错(反复),

所以这也就模拟成功了myadmin会话保持的问题

3)部署redis

yum install -y redis

修改/etc/redis.conf

bind 127.0.0.1  172.16.1.51 # 172.16.1.51本地的网卡的ip



systemctl  enable  --now redis

systemctl  start  redis

ss -lntup |grep redis

安装redis,并且编辑redis文件:
在这里插入图片描述
检查语法,过滤端口:
在这里插入图片描述
在这里插入图片描述

4)lb01服务器配置文件

[root /etc/nginx/conf.d]#cat phpmyadmin.wulinlinux.cn.conf

upstream phpmyadmin_pools {

   server 10.0.0.7:80;
   server 10.0.0.8:80;  

}

server {

   listen 80;
  server_name phpmyadmin.wulinlinux.cn;

    #error_log
    #access_log
    location / {
        proxy_pass http://phpmyadmin_pools;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

这里模拟为了节省机器,不单独创建一个会话共享的服务器,用db01这个服务器做

5)php配置文件指定会话存放位置

[root ~]#cd /etc/nginx/conf.d/
[root /etc/nginx/conf.d]#
[root /etc/nginx/conf.d]#cd /etc/php-fpm.d/
[root /etc/php-fpm.d]#ll
总用量 20
-rw-r--r-- 1 root root 17964 65 20:54 www.conf
[root /etc/php-fpm.d]#cp www.conf session.conf
[root /etc/php-fpm.d]#vim session.conf
[root /etc/php-fpm.d]#egrep -v '^$|;' session.conf 

创建新的子配置文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通知php指定会话保持位置:redis tcp://172.16.1.51:6379

在这里插入图片描述
修改/etc/php-fpm.d/www.conf

php_value[session.save_handler] = redis

php_value[session.save_path] = tcp://172.16.1.51:6379

  • session.conf
[session]
user = www
group = www
listen = 127.0.0.1:9001
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
verwritten from PHP call 'ini_set'.
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = tcp://172.16.65.7:6379
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

检查语法:
在这里插入图片描述

[root /etc/php-fpm.d]#systemctl reload php-fpm.service #重启

过滤端口:

在这里插入图片描述
在这里插入图片描述

  • 修改nginx配置文件 ,将admin转发到9001端口的php处理

  • 检查语法,重启

  • 最终的测试:

[root /etc/php-fpm.d]#scp session.conf web02:`pwd`
root's password: 
session.conf                                                                                           100%  766     2.6MB/s   00:00 

[root ~]#systemctl reload nginx
[root ~]#chown -R www.www /var/lib/php/session/
[root ~]#systemctl reload php-fpm.service 

重新登录,不会出现前面反复登录的情况:
在这里插入图片描述
session信息写入到了redis(会话共享服务器中):
在这里插入图片描述
在这里插入图片描述

如果删掉服务端这里的session,将要重新登录,重新进去创建session信息

在这里插入图片描述
以上成功测试完成!!!

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

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

相关文章

Abaqus基于CT断层扫描的三维重建插件CT2Model 3D

插件介绍 AbyssFish CT2Model 3D V1.0 插件可将采用X射线等方法获取的计算机断层扫描(CT)图像在Abaqus有限元软件内进行三维重建,进而高效获取可供模拟分析的有限元模型。插件可用于医学影像三维重构、混凝土细观三维重建、岩心数字化等领域…

数据结构-C语言-排序(2)

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…

2-36 基于matlab的流行学习算法程序

基于matlab的流行学习算法程序。通过GUI的形式将MDS、PCA、ISOMAP、LLE、Hessian LLE、Laplacian、Dissusion MAP、LTSA八种算法。程序以可视化界面进行展示,可直接调用进行分析。多种案例举例说明八种方法优劣,并且可设置自己数据进行分析。程序已调通&…

STM32智能工业自动化监控系统教程

目录 引言环境准备智能工业自动化监控系统基础代码实现:实现智能工业自动化监控系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与管理问题解决方案与优化收尾与总结 1. 引言 智能…

百度人脸识别Windows C++离线sdk C#接入

百度人脸识别Windows C离线sdk C#接入 目录 说明 设计背景 • 场景特点: • 客户特点: • 核心需求: SDK 包结构 效果 代码 说明 自己根据SDK封装了动态库,然后C#调用。 功能接口 设计背景 • 场景特点: -…

【漏洞复现】深信服 行为感知系统 日志中心 c.php 远程命令执行

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

PTA - 嵌套列表求和

使用递归函数对嵌套列表求和 函数接口定义: def sumtree(L) L是输入的嵌套列表。 裁判测试程序样例: /* 请在这里填写答案 */L eval(input()) print(sumtree(L)) # 调用函数 输入样例: 在这里给出一组输入。例如: [1,[2…

PriorityQueue 阅读记录

1、前言 1、优先队列,底层通过数组来构造树(二叉树) 来实现的。 2、默认是最小堆(取出来的是最小值),可以通过传入一个比较器 comparator 来构造一个最大堆。 3、传入的参数不能为空,否则抛出NPE问题。 4、最大堆的…

系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述

系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述 3.1.1 信息系统的定义3.1.1.1 信息系统3.1.1.2 信息化3.1.2 信息系统的发展3.1.2.1 初始阶段3.1.2.2 传播阶段3.1.2.3 控制阶段3.1.2.4 集成阶段3.1.2.5 数据管理阶段3.1.2.6 成熟阶段3.1.3 信息系统的分类3.…

读人工智能全传15意向立场

1. 物理立场 1.1. 可以解释一个实体行为 1.2. 在物理立场中,我们使用自然法则(物理、化学等)来预测系统的行为结果 1.3. 虽然物理立场在解释这种行为的时候非常有效,但无法应用于理解或者预测人类行为 1.3.1. …

六边形动态特效404单页HTML源码

源码介绍 动态悬浮的六边形,旁边404文字以及跳转按钮,整体看着像科技二次元画风,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head…

关于springboot的@DS(““)多数据源的注解无法生效的原因

对于com.baomidou.dynamic.datasource.annotation的DS注解&#xff0c;但凡有一个AOP的修改都会影响到多数据源无法生效的问题&#xff0c;本次我是添加了方法上添加了Transactional&#xff0c;例如下图&#xff1a; 在方法上写了这个注解&#xff0c;会影响到DS("db2&qu…

万字长文之分库分表里如何优化分页查询?【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 分页查询】

分库分表的一般做法 一般会使用三种算法&#xff1a; 哈希分库分表&#xff1a;根据分库分表键算出一个哈希值&#xff0c;根据这个哈希值选择一个数据库。最常见的就是数字类型的字段作为分库分表键&#xff0c;然后取余。比如在订单表里&#xff0c;可以按照买家的ID除以8的…

【PB案例学习笔记】-32制作一个简单记事本程序

大家好&#xff0c;我是晓凡。 写在前面 这是PB案例学习笔记系列文章的第32篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码…

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配&#xff0c;市面上有N多基于webGL的3D引擎&#xff0c;WebGPU作为挑战者&#xff0c;在渲染性能上确实改过webGL一头&#xff0c;由于起步较晚&#xff0c;想通过这个优势加持&#xff0c;赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

leetcode 1459 矩形面积(postgresql)

需求 表: Points ---------------------- | Column Name | Type | ---------------------- | id | int | | x_value | int | | y_value | int | ---------------------- id 是该表主键 每个点都用二维坐标 (x_value, y_value) 表示 写一个 SQL 语句&#xff0c;报告由表中任…

Redis-基础概念

目录 概念 Redis是什么 Redis 和 MySQL 的区别&#xff1f; Redis单线程有什么极端场景的瓶颈 Redis为什么快? 为什么Redis是单线程? Redis是单线程还是多线程 Redis为什么选择单线程做核心处理 Redis6.0之后引入了多线程&#xff0c;你知道为什么吗? 瓶颈是内存和I…

MySQL-事务、日志

事务 特性 原子性 是指事务开始后&#xff0c;必须成功执行完所有的操作才会结束&#xff0c;否则会回滚到事务刚开始前。 拿转账来说&#xff0c;一个成功的 A向B转账100元的过程 会涉及如下过程&#xff1a; A&#xff1a;从数据库读取A的余额&#xff1b;A的余额-100&am…

Pytorch学习笔记day1—— 安装教程

这里写自定义目录标题 Pytorch安装方式 工作需要&#xff0c;最近开始搞一点AI的事情。但是这个国产的AI框架&#xff0c;实话说对初学者不太友好 https://www.mindspore.cn/ 比如说它不支持win下的CUDA&#xff0c;可是我手里只有3070Ti和4060也不太可能自己去买昇腾就有点绷不…

C. Alternating Subsequence[双指针,贪心]

题目描述&#xff1a; 思路分析&#xff1a;题目俩要求&#xff0c;最长&#xff0c;值最大&#xff0c;异号&#xff0c;保证异号的情况是找到最长而且尽可能大&#xff0c;其实很容易想到&#xff0c;一开始先把第一个数单独放进去&#xff0c;保证不浪费任何一个元素&#…