专栏首页零基础自学Java【微服务】165:Feign的最佳使用方式

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

在此之前做一个强调

这段时间因为临近国庆,工作上的事情变多,再加上自己国庆要回家,可支配的时间和网络都是一个大问题。

学习效率、学习进度会受到很大的影响,甚至极有可能会断更。

虽然自己之前做了其它方面的准备,存了一些素材,但显然还远远不够。

这种状态会持续到国庆之后,希望自己到时候能早日调整过来而不是一直就这样了…

学习计划安排如下:

  • 昨天在商品微服务中整合了搜索需要的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客户端调用对应的方法查询数据,并导入到索引库中即可。

因为其实现起来比较复杂,代码量太多了,没有做完。

本文分享自微信公众号 - 刘小爱(liuxiaoai946),作者:刘小爱

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【微服务】158:Elasticsearch的使用

    而默认的中文分词是将每个字看成一个词,会被分为“我”,“是”,"中","国","人"。

    刘小爱
  • 【微服务】131:最好用的框架SpringBoot

    SpringBoot是Spring项目中的一个子工程,Spring大家族中的一员。

    刘小爱
  • 【微服务】141:后台管理系统微服务搭建

    父工程:liuxiaoai,用来管理依赖及其版本,注意是创建project,而不是module。

    刘小爱
  • MySQL 聚簇索引 二级索引 辅助索引(上两期中奖名单)

    MySQL中每个表都有一个聚簇索引( clustered index ),除此之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引( secondary ind...

    java乐园
  • 性能优化-什么情况下,使用索引了

    数据库使用索引以找到特定值,然后顺指针找到包含该值的行。在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速...

    cwl_java
  • 面试中有哪些经典的数据库问题?

    1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯...

    java思维导图
  • 24 个MySQL面试题,Java 程序员又知道多少呢?

    1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。

    lyb-geek
  • Java面试中常问的数据库方面问题

    B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

    lyb-geek
  • Java面试中常问的数据库方面问题

    B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

    Spark学习技巧
  • Java面试中常问的数据库方面问题

    B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

    Java团长

扫码关注云+社区

领取腾讯云代金券