今天是刘小爱自学Java的第165天。
在此之前做一个强调:
这段时间因为临近国庆,工作上的事情变多,再加上自己国庆要回家,可支配的时间和网络都是一个大问题。
学习效率、学习进度会受到很大的影响,甚至极有可能会断更。
虽然自己之前做了其它方面的准备,存了一些素材,但显然还远远不够。
这种状态会持续到国庆之后,希望自己到时候能早日调整过来而不是一直就这样了…
学习计划安排如下:
昨天在商品微服务中整合了搜索需要的7个业务,今天就在商品微服务中调用这些,使用feign客户端完成。
创建索引库以及数据映射。
一、feign客户端的使用
feign即伪装的意思,使用它后就好像是在处理具体的业务了,但是实际上是在调用别人,也就是我们昨天编写的具体的实现。
BrandClient对应了昨天品牌的一个业务:根据id查询品牌。
CategoryClient对应昨天商品分类的一个业务:根据商品分类id查询商品分类。
GoodsClient对应昨天商品的三个业务:分页查询spu、根据spuId查询sku、根据spuId查询spuDetail。
SpecClient对应昨天规格参数的一个业务:规格参数的查询。
关于feign的使用在第135天的笔记中有说明,简单来说就和Controller层代码是非常类似的。
二、feign客户端的优化
一般来说微服务有两类:
需要被调用的微服务
比如说我们写过的商品微服务,它是最核心的一个服务,其有一个特点就是经常需要被其它微服务调用。
不需要被调用的微服务
比如说现在正在实现的搜索微服务,它就不需要被调用,而是调用别人。
一般来说但凡是经常需要被调用的微服务都要优化,优化如下:
以前的结构
lxa-item-pojo:实体类相关的子工程。
lxa-item-service:业务相关的子工程。
现在的结构
lxa-item-interface:接口相关的子工程。
也就是说,搜索微服务要调用商品微服务直接调用lxa-item-interface这个子工程就好了。
为什么不调用lxa-item-service?
因为这里面有具体的业务逻辑是如何实现的,如果允许被调用,等于是所有的源码都被其它微服务知道了,出于安全考虑,不会这样做。
而调用lxa-item-interface,别人就只知道调用了什么,至于具体是怎么实现的?不清楚。
三、创建索引库
利用kibana创建一个商品索引库,根据前几天学的知识很简单地就能实现:
索引库中的字段也就是前天分析的数据。
注意:all这个字段当初的理解有点问题,该字段是包含了用户在搜索框中输入的数据,包含标题、分类甚至是品牌这些。
好,索引库创建完毕后,就需要向索引库中导入对应的数据了。
事实上就是去数据库中查询到对应的数据,再将这些数据添加到索引库中。
说来说去都是为了实现这一步。
在搜索微服务中通过上述编写好的四个fegin客户端调用对应的方法查询数据,并导入到索引库中即可。
因为其实现起来比较复杂,代码量太多了,没有做完。
最后
行有不得反求诸己,我是@刘小爱
一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。
领取专属 10元无门槛券
私享最新 技术干货