仿百度⽂库⽹站源码(织梦内核5.7)
分享仿百度⽂库⽹站程序源码,是⼀个⽤来搭建供⽹友在线分享⽂档的开放**台⽹站。在⽤仿百度分享⽂库程序源码搭建的⽹站上,⽤户可以在线阅读和下载涉及课件,题,考试题库,论⽂报告,专业资料,各类公⽂模板。法律⽂件、⽂学⼩说等多个领域的资料,不过需要扣除相应的百度积分,台所累积的⽂档,均来⾃热⼼⽤户上传。分享⽂库的⽹站⾃⾝不编辑或修改⽤户上传的⽂档内容。⽤户通过上传⽂档,可以获得台虚拟的积分奖励,⽤于下载⾃⼰需要的⽂档。下载⽂档需要登录,免费⽂档可以登录后下载,对于上传⽤户已标价了的⽂档,则下载时需要付出虚拟积分。当前台⽀持主流的。doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、pdf、txt⽂件格式。
⽂件:(访问密码:551685)
以下内容⽆关:
-------------------------------------------分割线---------------------------------------------
前⾯提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压⼒⼤和单点故障问题,接下来要讲的Redis Cluster模式,主要是⽤来解决Redis的单点容量问题。
如何来解决Redis单点容量问题呢?
如果数据可以拆分,我们可以让不同业务的客户端打到不同的Redis实例中。
如果数据不能拆分,我们有如下⽅式:
⽅案2-1 modula⽅式
可以通过Hash加上取模的⽅式来定位打到哪个Redis实例中。
这种⽅式的弊端在于:模数值固定,会影响分布式下的扩展性。
⽅案2-2 random⽅式
即每次请求redis的实例是随机的,⼀部分客户端负责push数据,⼀部分客户端负责消费数据,这样的场景可以适⽤于消息队列。
⽅案2-3 ketama⽅式
这种⽅式是通过⼀致性Hash算法(没有取模),规划成⼀个环形,环形上有很多虚拟节点,每次选择的实例通过hash算法对应到具体的⼀个节点。模型如下:
Client1~Client4通过Hash分别到了环上A~B四个点
image
这种⽅式的优点在于:增加节点的时候可以分担其他节点的压⼒,不会造成全局洗牌。
缺点在于:新增节点造成⼀⼩部分数据不能命中,会使得缓存击穿,压到mysql
解决⽅案:取离我最近的2个物理节点
modula,random和ketama⽅式都是从客户端⼊⼿,因为每个客户端都需要与redis实例建⽴连接,所以,这种情况会导致连接的成本很⾼。如何解决这个问题呢?
我们可以在客户端和Redis之间增加⼀个代理层,通过代理层去实现原先在客户端要实现的三个⽅案。
image
此时,代理层就容易成为⼀个单点故障。所以代理可以做集,然后最前端通过LVS来做负载均衡,防⽌LVS挂掉,可以通过KeepAlived 来调配LVS,同时,KeepAlived也可以作为代理层健康检查的⼯具。整个架构图如下:
image
这三种模式的弊端都在于:只能让Redis做缓存,⽆法做数据库。(因为数据会丢失)
可以通过redis-cluster 模式(⽆主模型)来解决。
image
客户端随机地请求任意⼀个redis实例,然后由Redis将请求转发给正确的Redis节点。Redis Cluster实现了⼀种混合形式的查询路由,但并不是直接将请求从⼀个redis节点转发到另⼀个redis节点,⽽是在客户端的帮助下直接redirected到正确的redis节点。
但是数据分治的时候,会带来⼀个问题,⽆法做聚合操作,怎么解决呢?
我们可以使⽤hash tag,让同⼀组key打到同⼀个redis实例上⾯,并且对同⼀hash tag下的key可以进⾏聚合操作。
Twemproxy实战
Twemproxy 也叫 nutcraker。是 Twitter 开源的⼀个 Redis 和 Memcache 代理服务器,主要⽤于管理 Redis 和 Memcached 集,减少与Cache 服务器直接连接的数量。
启动3个redis服务实例:假设为:
6379
6381
6380
image
在/usr/local/src⽬录下,下载最新的twemproxy的源码包
cd /usr/local/src
下载源码
解压
tar xf v0.4.
重命名
mv twemproxy-0.4.1/ twemproxy/
接下来按照官⽅步骤编译安装
最新论坛网站源码yum install automake libtool -y
cd /usr/local/src/twemproxy/
autoreconf -fvi
./configure --enable-debug=full
make
src/nutcracker -h
安装成服务
cp nutcracker.init /etc/init.d/nutcracker
chmod +x /etc/init.d/nutcracker
mkdir /etc/nutcracker
cp /usr/local/src/twemproxy/conf/* /etc/nutcracker/
cp /usr/local/src/twemproxy/src/nutcracker /usr/bin
接下来修改twemproxy的配置⽂件
vi /etc/l
修改为:
alpha:
listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama
auto_eject_hosts: true redis: true
server_retry_timeout: 2000 server_failure_limit: 1 servers:
127.0.0.1:6379:1
127.0.0.1:6380:1
127.0.0.1:6381:1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论