1 扩容方式介绍
1 单机垂直扩容:硬件资源增加
2 水平扩展:集群化
3 细粒度拆分:分布式
3-1 数据分区
3-2 上游服务SOA化(原生支持水平/垂直扩容)
3-3 入口细分
3-3-1 浏览器
3-3-2 移动端原生App(物联网)
3-3-3 H5内嵌式应用
4 数据异构化
4-1 多级缓存
4-1-1 客户端缓存
4-1-2 CDN缓存
4-1-3 异地多活
4-1-4 Nginx缓存
5 服务异步化
5-1 拆分请求
5-2 消息中间件
2 垂直扩容和水平扩容
垂直扩容择是增加硬件内存等配置的方式,来实现增加缓存实例系统容量的。
水平扩容指的是通过增加节点的方式来增加整个系统的容量,这一种扩容方式是需要应用程序支持的。
两者的区别在于垂直扩容则是增加设备自身容量来进行扩容,水平扩容是通过加机器进行的一种扩容。
举个例子来说,就比如说用篮子来用苹果。100个苹果需要运送,总共有两个篮子,每个篮子只能运10个,现在想要增加运行效率,垂直扩容的方案就是将篮子的容量扩大,而水平扩容就是添加篮子
两种扩容都是常见的扩容方式,虽然都能够有效的扩容,但是两者也有着相应的缺点
水平扩容,它会牵扯到数据迁徙,在迁徙过程中又要保证业务可用,又要保证数据不丢失,这就容易出现错误。
而垂直扩容所需要的成本比较大,并且有些数据并不能一直使用垂直扩容,所以会存在相对应的弊端。两者在使用上基本上是依据个人的需求进行选择。
3 水平扩展时,集群中使用Nginx做负载均衡
3.1 nginx方向代理和负载均衡
https://www.cnblogs.com/jthr/p/16827617.html
3.2 nginx支持的负载均衡策略
https://www.cnblogs.com/jthr/p/16827617.html 中的4.4
4 使用sticky模块完成Nginx的负载均衡
4.1 nginx官网介绍
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
4.2 sticky项目官网
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src/master/
4.3 sticky介绍
sticky是第三方模块,可以在nginx这一类静态服务器做负载均衡的时候下发给客户端cookie。
它不需要上游服务器支持cookie,通过sticky下发cookie即可。
4.4 工作原理
1)客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2)后端服务器处理完请求,将响应数据返回给nginx。
3)此时nginx通过sticky生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4)客户端接收请求,并保存带route的cookie。
5)当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器
4.5 下载安装
4.5.1 下载
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/?tab=tags
4.5.2 上传到服务器并解压
tar xzvf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
4.5.3 重新编译Nginx
进入nginx源码目录,注意nginx-1.21.6事源码目录,nginx是安装目录(之前nginx安装好了)
注意:--prefix=/usr/local/nginx这里的/usr/local/nginx是安装目录 add-module指的是添加第三方的模块 后面根刚才stikey的解压的文件目录
注意:这个命令相当于给nginx做了个升级,生成一个全新的nginx,不会记住原来的额配置
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
4.5.4 执行命令make
1)出现如下报错
因为缺少了一些依赖
2)安装依赖
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
3)再次执行命令
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
4)再次执行make,还有错误
5) 进入stikey的目录
cd /usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
修改文件ngx_http_sticky_misc.h
vi ngx_http_sticky_misc.h
加上配置内容
#include <openssl/sha.h>
#include <openssl/md5.h>
6)回到nginx源码目录,再次执行命令
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
7)再次执行命令make
成功
make成功后,不要直接make install,因为它会直接覆盖掉原先安装好的的nginx。
8)测试下
执行命令
make upgrade
出现下图,说明没有问题
4.5.5 升级好的文件
make它不是在原安装目录直接升级覆盖,而是创建了新的执行文件,在objs文件夹下
4.5.6 备份原来的安装文件
为了平滑升级,先把原来的文件重命名
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
4.5.7 把新的执行文件复制过去
cp nginx /usr/local/nginx/sbin/
4.5.8 查看nginx有哪些功能
进入安装目录
cd /usr/local/nginx/sbin/
执行命令
./nginx -V
发现stikey模块已经有了
4.6 使用sticky下发cooike来负载均衡
name:cookie的key,非必要配置
expires:cookie失效时间,非必要配置
upstream httpget {
sticky name=route expires=6h;
server 192.168.44.102;
server 192.168.44.103;
}
最简配置
upstream httpget {
sticky;
server 192.168.44.102;
server 192.168.44.103;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-11-01 JAVA虚拟机06-垃圾回收及引用类型