# 176. 商品详情页动态渲染系统:完成多级缓存全链路的测试多个 bug 修复
这里就是之前写好的逻辑进行测试,我这里也不测了,因为 nginx 没有实现,之前在每章写完都测试过。
# bug 1:无法连接 twemproxy
这里唯一需要注意的就是,上一章节的数据直连服务这里测试下。
访问地址:http://localhost:9110/product/1
,但是发现无法连接上 twemproxy。
原因如下,listen 中监听的是 127.0.0.1 ,所以不是在本机的时候是连接不上的,只需要修改成局域网 ip 即可
[root@eshop-detail01 twemproxy-0.4.0]# vi conf/nutcracker.yml
redis-master: # 配置一个逻辑名称
# listen: 127.0.0.1:1111
listen: 192.168.99.11:1111
hash: fnv1a_64
distribution: ketama
redis: true
servers:
- 192.168.99.11:6401:1 redis01 # 指向两个主集群
- 192.168.99.11:6402:1 redis02
redis-slave: # 从集群
listen: 127.0.0.1:1112
hash: fnv1a_64
distribution: ketama
redis: true
servers:
- 192.168.99.11:6403:1 redis01
- 192.168.99.11:6405:1 redis02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
重启 twemproxy
cd /usr/local/twemproxy/twemproxy-0.4.0
[root@eshop-detail01 twemproxy-0.4.0]# ps -ef | grep nutcracker
root 7606 1 0 Jul28 ? 00:00:00 ./src/nutcracker -d -c conf/nutcracker.yml
root 31766 26460 0 02:17 pts/0 00:00:00 grep nutcracker
[root@eshop-detail01 twemproxy-0.4.0]# kill 7606
[root@eshop-detail01 twemproxy-0.4.0]# ./src/nutcracker -d -c conf/nutcracker.yml
1
2
3
4
5
6
2
3
4
5
6
# bug 2:获取商品属性返回的应该是一个列表
String productPropertyJsonStr = eshopProductService.findProductPropertyByProductId(productId);
if (StringUtils.isNotBlank(productPropertyJsonStr)) {
product.put("productProperty", JSON.parseArray(productPropertyJsonStr));
}
String productSpecificationJsonStr = eshopProductService.findProductSpecificationByProductId(productId);
if (StringUtils.isNotBlank(productSpecificationJsonStr)) {
product.put("productSpecification", JSON.parseArray(productSpecificationJsonStr));
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
获取 ProductProperty 与 ProductSpecification ,一个商品都有多个属性和规格,所以这里也需要修改成数组, 那么同样的,我觉得数据聚合里面,维度数据这里之前也是错误的,也应该修改成数组
# bug 改完,测试
访问地址:http://localhost:9110/product/1
然后查看 redis 中是否有维度数据
[root@eshop-detail01 src]# ./redis-cli -h 192.168.99.11 -p 1111
192.168.99.11:1111> get dim_product_1
1
2
2