首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【微服务】165:Feign的最佳使用方式

今天是刘小爱自学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后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200924A01HBU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券