分布式搜索引擎设计



分布式搜索引擎设计

西加加语言 微信号 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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts