西加加语言 微信号 XJJ267 功能介绍 我个人感受,分布式和高可用是随着最近这些年阿里的双11活动火起来的,放眼全球,好像没有哪个公司的系统会在瞬间承接这么大的流量,并且还是绝对不能出错的交易流量,所以阿里确实积累了全球最丰富的高可用和分布式的经验,再加上各种技术大会一分享,这两个词就变成一个互联网公司技术系统的标配了。 可能很多人并不是很理解分布式和高可用,我们简单来说一下。 高可用其实是一直在IT行业中存在的,最典型的就是异地灾备系统了,这就是一个标准的高可用系统。 再次提示,请耐心读完本篇,请耐心 代码做的事情就是给一个数据作为函数的输入,然后通过函数,给出一个数据作为输出,在这个过程中可能需要存储一些数据到外部存储器中供以后使用。 所有的服务,最后都可以抽象成下面的样子 好,我们以搜索引擎为例来说一下,上面的y= f(g(h(u(x)))对应出来以后 如果是数据更新过程的话,x就是新增的那个文档,y就是更新是否成功,u函数就是分词,h就是更新内存倒排,g就是写磁盘。 所以说,一个服务,必定可以拆分成一个一个子服务,子服务还可以继续拆,拆到最后必定变成一个函数,而如果把一个或者一组函数拆出去单独变成一个服务的话,那这个服务就变成一个分布式的服务了,用时下比较流行的说法就是微服务。 4.为什么要分布式 只有当我们发现由于排序算法变复杂了,或者数据量增多了,每次返回数据的时间由10ms变成500ms了,这个时候只能把服务给拆成多个服务才能满足业务需求了,这才叫分布式。 5.如何进行分布式设计 一是服务的功能分布式,对应到代码也就是把一个1000行的函数变成两个500行的函数。 正好,搜索引擎的分布式这两个方面都可以涉及到,检索的时候需要对功能进行分布式,而索引本身需要对数据进行分布式,我们一个一个来说。 6.服务功能的分布式拆分 如果我们直接把这个服务分成上面四个单独的服务,完成服务的分布式,行不行呢?可以,但并不好,因为设计一个分布式的服务还是有一些东西需要考虑的,对于分布式的服务,一般需要注意以下三个关键点。 6.1 尽量减少网络开销 6.
Read full article from 分布式搜索引擎设计
No comments:
Post a Comment