Web开发实战2—商品详情页

本文档介绍了如何搭建Web项目,重点是商品详情页的数据存储和前端展示。首先,讲解了使用SSDB和Redis作为数据存储,配置了主从集群和Twemproxy实现分布式缓存。接着,讨论了动态服务实现,模拟假数据以简化子系统交互。最后,阐述了项目结构,前端展示的实现,包括基础组件、商品介绍和JSONP技术的使用。
摘要由CSDN通过智能技术生成

 

 

 

项目搭建

项目部署目录结构。

/usr/server/chapter7

  nginx_chapter7.conf

  nutcracker.yml

  nutcracker.init

  item.html

  header.html

  footer.html

  item.lua

  desc.lua

  lualib

    item.lua

    item

      common.lua

  webapp

WEB-INF

   lib

   classes

   web.xml

 

相关命令:

 

 

 

 

数据存储实现

分布式缓存层

可选技术:Twemproxy , redis Cluster , codis
实践技术:Twemproxy
安排:B:edu-mysql_192.168.1.121 、edu-mysql2_192.168.1.122、edu-mysql3_192.168.1.123、edu-mysql4_192.168.1.124
思想要点:Twemproxy做一致性Hash,即便某台机器宕机,丢失的只是少数信息,无论主从;
分片到122,123,124,构建从集群针对6660端口
等完成:Twemproxy的高可用性

 

Redis安装配置

 

SSDB安装配置:

SSDB介绍与使用

 

规划设计:

商品基本信息SSDB集群

主集群-写:

192.168.1.122 7770

192.168.1.123 7770

192.168.1.124 7770从集群-读:

192.168.1.122 7771

192.168.1.123 7771

192.168.1.124 7771

 

商品介绍SSDB集群配置

主集群-写:

192.168.1.122 8880

192.168.1.123 8880

192.168.1.124 8880从集群-读:

192.168.1.122 8881

192.168.1.123 8881

192.168.1.124 8881

 

其他信息Redis配置

主集群-写:

192.168.1.122 6660

从集群-读:

192.168.1.122 6661

192.168.1.123 6661

192.168.1.124 6661

 

设计图:和上面的配置不一致部分,因为我采用的是多机器配置

 

1.整体架构为主从模式,写数据到主集群,读数据从从集群读取数据,

2.这样当一个集群不足以支撑流量时可以使用更多的集群来支撑更多的访问量;

3.集群分片使用Twemproxy实现。

 

注:以下配置文件,可以编辑好上传

 

商品基本信息SSDB集群配置

分别在122 123 124上配置# cp /usr/local/ssdb-master/ssdb.conf  /usr/local/ssdb-master/ssdb_basic_7770.conf

# vi  /usr/local/ssdb-master/ssdb_basic_7770.conf

 

 

work_dir = /usr/data/ssdb_7770
pidfile = /usr/data/ssdb_7770.pid

server:
        ip: 0.0.0.0
        port: 7770
        allow: 127.0.0.1
        allow: 192.168

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
logger:
        level: error
        output: /usr/data/ssdb_7770.log
        rotate:
                size: 1000000000

leveldb:
        cache_size: 500
        block_size: 32
        write_buffer_size: 64
        compaction_speed: 1000
        compression: yes
 
分别在122 123 124上配置

# cp /usr/local/ssdb-master/ssdb.conf  /usr/local/ssdb-master/ssdb_basic_7771.conf

# vi  /usr/local/ssdb-master/ssdb_basic_7771.conf

 

脚本代码:

work_dir = /usr/data/ssdb_7771
pidfile = /usr/data/ssdb_7771.pid

server:
        ip: 0.0.0.0
        port: 7771
        allow: 127.0.0.1
        allow: 192.168

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
                type: sync
                ip: 127.0.0.1
                port: 7770

logger:
        level: error
        output: /usr/data/ssdb_7771.log
        rotate:
                size: 1000000000

leveldb:
        cache_size: 500
        block_size: 32
        write_buffer_size: 64
        compaction_speed: 1000
        compression: yes
 

配置文件使用Tab而不是空格做缩排(复制到配置文件后请把空格替换为Tab)。主从关系:7770(主)-->7771(从)配置文件如何配置请参考https://github.com/ideawu/ssdb-docs/blob/master/src/zh_cn/config.md。  

 

创建工作目录mkdir -p /usr/data/ssdb_777{ 0,1}

 

启动

nohup /usr/local/ssdb-master/ssdb-server  /usr/local/ssdb-master/ssdb_basic_7770.conf &
nohup /usr/local/ssdb-master/ssdb-server  /usr/local/ssdb-master/ssdb_basic_7771.conf & 
 

通过ps -aux | grep ssdb命令看是否启动了,tail -f nohup.out查看错误信息。

 

商品介绍SSDB集群配置

分别在122 123 124上配置# cp /usr/local/ssdb-master/ssdb.conf  /usr/local/ssdb-master/ssdb_desc_8880.conf

# vi  /usr/local/ssdb-master/ssdb_desc_8880.conf

 

work_dir = /usr/data/ssdb_8880
pidfile = /usr/data/ssdb_8880.pid

server:
        ip: 0.0.0.0
        port: 8880
        allow: 127.0.0.1
        allow: 192.168

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
logger:
        level: error
        output: /usr/data/ssdb_8880.log
        rotate:
                size: 1000000000

leveldb:
        cache_size: 500
        block_size: 32
        write_buffer_size: 64
        compaction_speed: 1000
        compression: yes
 分别在122 123 124上配置

# cp /usr/local/ssdb-master/ssdb.conf  /usr/local/ssdb-master/ssdb_desc_8881.conf

# vi  /usr/local/ssdb-master/ssdb_desc_8881.conf

 

脚本代码:

work_dir = /usr/data/ssdb_8881
pidfile = /usr/data/ssdb_8881.pid

server:
        ip: 0.0.0.0
        port: 8881
        allow: 127.0.0.1
        allow: 192.168

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
                type: sync
                ip: 127.0.0.1
                port: 8880

logger:
        level: error
        output: /usr/data/ssdb_8881.log
        rotate:
                size: 1000000000

leveldb:
        cache_size: 500
        block_size: 32
        write_buffer_size: 64
        compaction_speed: 1000
        compression: yes
 

配置文件使用Tab而不是空格做缩排(复制到配置文件后请把空格替换为Tab)。主从关系:8880(主)-->8881(从)配置文件如何配置请参考https://github.com/ideawu/ssdb-docs/blob/master/src/zh_cn/config.md。  

 

创建工作目录mkdir -p /usr/data/ssdb_888{ 0,1}

 

启动

nohup /usr/local/ssdb-master/ssdb-server  /usr/local/ssdb-master/ssdb_desc_8880.conf &
nohup /usr/local/ssdb-master/ssdb-server  /usr/local/ssdb-master/ssdb_desc_8881.conf & 
 

通过ps -aux | grep ssdb命令看是否启动了,tail -f nohup.out查看错误信息。

 

其他信息Redis配置

 

在122:

# mkdir /usr/local/redis/conf

# vi /usr/local/redis/conf/redis_6660.conf

 

 

port 6660
pidfile "/var/run/redis_6660.pid"
#设置内存大小,根据实际情况设置,此处测试仅设置20mb
maxmemory 20mb
#内存不足时,所有KEY按照LRU算法删除
maxmemory-policy allkeys-lru
#Redis的过期算法不是精确的而是通过采样来算的,默认采样为3个,此处我们改成10
maxmemory-samples 10
#不进行RDB持久化
save “”
#不进行AOF持久化
appendonly no
 
在122 123 124

 

# vi /usr/local/redis/conf/redis_6661.conf

 

port 6661
pidfile "/var/run/redis_6661.pid"
#设置内存大小,根据实际情况设置,此处测试仅设置20mb
maxmemory 20mb
#内存不足时,所有KEY按照LRU算法进行删除
maxmemory-policy allkeys-lru
#Redis的过期算法不是精确的而是通过采样来算的,默认采样为3个,此处我们改成10
maxmemory-samples 10
#不进行RDB持久化
save “”
#不进行AOF持久化
appendonly no
#主从
slaveof 192.168.1.122 6660
 

 

如上配置放到配置文件最末尾即可;此处内存不足时的驱逐算法为所有KEY按照LRU进行删除(实际是内存基本上不会遇到满的情况);主从关系:6660(主)-->6661(从)

 

启动

 

/usr/lo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值