42 张图带你揭秘后端技术都要学啥?( 五 )


互联网的存在让你和我隔着屏幕都知道你多帅 。当然,每个网页中都会存在很多其他网页的超链接,这样构成了庞大的网络 。
对于搜索引擎而言,目标为解析这些网页获取超链接,下载链接内容(过滤),具体一些说 。
将URL存放于池子中,从池子中取出URL模拟请求,下载对应的html,并存放于服务器上,解析HTML内容时如果有超链接URL,检测是否已经爬取过,如果没有暂存队列,后面再依次爬取 。架构图如下:

42 张图带你揭秘后端技术都要学啥?

文章插图
爬虫常规方法
将获取的所有网页进行编号并得到网页集合 。然后通过分词技术获得每一个单词,组成矩阵如下所示:
42 张图带你揭秘后端技术都要学啥?

文章插图
分词
就这样按照单词-文档的方式组织起来就叫做倒排索引了 。
42 张图带你揭秘后端技术都要学啥?

文章插图
倒排索引
google通过建立<单词,地址>这样的文档,主要搜索到单词就能定位到文档的地址列表,然后根据列表中文档的编号就展现文档信息从而实现快速的检索 。
如果搜索出来结果很多,Google是如何能更精准的将我们需要的信息呈现给我们呢 。它很明显有个排序功能,那是如何排序的?
Google使用了一种叫做"PageRank"的算法,通过计算每个网页的权重,并按照权重排序,权重高的自然就在显示在前面,那问题来了,为啥权重高的,排在前面的通常就是用户所需要的呢?这就得了解下pagerank算法了 。
在pagerank中,如果网页A包含网页B说明A认可B,即投一票 。如下图ABCD四个网页所示,箭头代表超链接的方向,比如A->B代表A网页包含B的超链接
42 张图带你揭秘后端技术都要学啥?

文章插图
pagerank
怎么计算的?
ABCD 初始值都为1,然后根据关系计算权重 。比如此时B包含了AD两个网页,那么权重1被分为两个1/2分别给A和D,此时A包含BCD,那么此时A页面新的权重为1/2 + 1/3 + 1 = 11/6 。
pagerank 值越受推荐,代表用户越想看到 。基于每个网页的 pagerank 值对倒排索引中的文档列表排序,靠前者则是用户想看到的文档 。
这种是因为超链接,引入权值的方式排序 。还有其他诸如对于商品售卖次数排序或者电影点赞或评价分数排序 。
还有通过关键字查找,希望找到和搜索词相关,这个时候可能就会采用词频TF进行排序,词频代表所查词和文档的相关程度 。
42 张图带你揭秘后端技术都要学啥?

文章插图
词频TF
比如我们搜索"Java后端"出现的结果以"后端"的相关技术 。
在大部分的应用中都会涉及到搜索引擎技术,技术庞大且复杂,希望各位老铁根据自身情况搜索相关所需学习,校招面试中不出现盲点即可 。
42 张图带你揭秘后端技术都要学啥?

文章插图
 
微服务
技术的引进一定是想解决某个痛点 。我不希望在一个系统中,一小点改动就影响到全局,希望各个功能模块拆分清晰,不管是测试还是运维都能节省更多的时间 。
那么单体的架构出现了哪些问题?
  • 代码分支管理困难
各个部门分别完成各自的任务,但是最后需要 merge 在一起成为整个系统,merge过程经历的人都知道,问题是真XX多 。所以不再是996
  • 新增功能麻烦
随着项目的效益越来越好,用户的需求也更多,招聘的人可能更多,对于新手来说上来是一脸懵逼的,老员工忙的要死,新员工成为了摸鱼专家
  • 耗尽连接
用户的增多,每个应用都得和数据库连接,给数据库的连接造成太大的压力甚至耗尽连接
微服务
“微"-------微微一笑很倾城,微笑,微小 。顾名思义,讲一个大的系统,拆分为一个个小的服务,分别对各个小服务进行管理 。这样说感觉太不专业了,专业点
  • 大应用拆分为小模块
  • 小模块不属于集群中
  • 通过远程调用的方式依赖各个独立的模块完成业务的处理
这些小的模块就叫做------微服务,整体也就是所谓的微服务架构 。
既然拆分成了小服务,这么多小服务怎么协调成为一个问题,甚至都不知道怎么掉这个服务,所以在微服务的整体架构中出现了注册中心,谁需要调用使用提供的接口即可 。如下图所示:


推荐阅读