学习笔记(15)商品详情
程序员文章站
2022-06-06 08:06:20
...
学习笔记(15)商品详情
商品详情是一个高并发访问的功能
我们需要考虑缓存、考虑性能、考虑机器压力。
京东商城:一个请求过去,所有数据都来了。
1)、服务拆分查询
查询商品基础信息
查询sku组合信息
点击sku组合查询商品基础信息+sku信息(特别是库存)
商品的所有属性信息
大数据不可以联表(数据太多)。
1)、禁用联表。
2)、MySQL表有极限。大数据表分表;
2)、做好容错。
如果sku组合查询库存以及售价出现问题,返回兜底数据。
分表:
数据量更大时,还会采用分库:
sahrding-jdbd 能分表,用其存数据,但是不能用其查数据库,数据异构的统一解决方案 es
如何知道一号商品有哪些属性且对应的值是哪些?
用es检索一号商品,再在es的属性索引下检索一号商品有哪些属性,es还有值索引,再去检索es对应的哪些值。es只需要做好集群,所有数据进入es。
三写:
1)、给数据库存东西
1)、给缓存一份(用id查的快)
2)、给es一份(用其他字段查的快)
复杂查询,es先查出商品id,再直接从缓存中拿。
商品详情页请求:http://localhost:8081/detail/28
@Override
public EsProduct productAllInfo(Long id) {
EsProduct esProduct = null;
//按照id查出商品
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.termQuery("id",id));
Search build = new Search.Builder(builder.toString())
.addIndex(EsConstant.PRODUCT_ES_INDEX)
.addType(EsConstant.PRODUCT_INFO_ES_TYPE)
.build();
try {
SearchResult execute = jestClient.execute(build);
List<SearchResult.Hit<EsProduct, Void>> hits = execute.getHits(EsProduct.class);
esProduct = hits.get(0).source;
} catch (IOException e) {
}
return esProduct;
}
@Override
public EsProduct produSkuInfo(Long id) {
EsProduct esProduct = null;
//按照id查出商品
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.nestedQuery("skuProductInfos",QueryBuilders.termQuery("skuProductInfos.id",id), ScoreMode.None));
Search build = new Search.Builder(builder.toString())
.addIndex(EsConstant.PRODUCT_ES_INDEX)
.addType(EsConstant.PRODUCT_INFO_ES_TYPE)
.build();
try {
SearchResult execute = jestClient.execute(build);
List<SearchResult.Hit<EsProduct, Void>> hits = execute.getHits(EsProduct.class);
esProduct = hits.get(0).source;
} catch (IOException e) {
}
return esProduct;
}
数据成功检索,只不过前端没有解析
//8s 2.5s; 需要速度快。 开启异步化 最多1s,取决最长的服务调用。
//高并发系统的优化
//1、加缓存
//2、开异步
下一篇: discuz 帖子排字显示出错
推荐阅读
-
Kali学习笔记15:防火墙识别、负载均衡识别、WAF识别
-
python学习笔记:第15天 初识面向对象
-
笔记-JavaWeb学习之旅15
-
Vue + Django2.0.6 学习笔记 6-3,在Vue中展示商品分类数据
-
Vue + Django 2.0.6 学习笔记 6.1-6.2 商品类别数据接口
-
Vue + Django 2.0.6 学习笔记 8.2 热卖商品展示
-
Vue + Django 2.0.6 学习笔记 8.1 商品详情页的API接口
-
PyTorch学习笔记(15)权值初始化
-
Mule ESB 学习笔记(15)CXF SOAP基于JKS的验证的配置
-
荐 opencv学习笔记15: 梯度运算之sobel算子及其函数使用