欢迎来到天天文库
浏览记录
ID:57146889
大小:1004.00 KB
页数:48页
时间:2020-08-01
《高性能网站架构课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、高性能网站架构总体架构数据中心(数据库切分、搜索引擎、文件存储)业务层(内部通信、缓存)前端负载均衡页面优化大纲高可用性(HighAvailability)可伸缩性(Scalability)高性能(HighPerformance)网站架构的目标Consistency一致性Availability可用性PartitionTolerance分区耐受性在任意时刻,只有两项能同时成立不要浪费精力可能突破上面限制CAP原则可用性一致性分区耐受性CA:传统关系数据库AP:key-value数据库网站的系统分层架构5网站的物理架构网络拓扑结
2、构RAC(RealApplicationClusters):高可用(HA)的负载均衡集群(LB)的技术双机热备:通过数据库服务器冗余来提供的解决方案数据库集群8数据库读写分离MasterwSlaverSlaverMySQLProxy(数据库读写分离)loadbalancingfailoverqueryanalysisR/WSplitting水平切分:2*N(如定单,购买者与网店各一份)N/n(按日期或ID范围分区)hash(N)%n(按hash分)查找表垂直分区按功能分(用户,新闻)数据Sharding针对系统业务数据的特点,
3、没有一致通用的解决方案结合M-S结构解决库表扩充思考:满足1亿条记录量的论坛应用数据层设计方案面向系统层解决方案:独立的DALProxy服务器MySQL:Amoeba、Mysql_proxyPostgreSQL:PL/Proxy(Skype)面向应用层解决方案:DALAPIJava:HibernateShard,IbatisShard,HiveDBPython:Pyshards透明的软件层中间件12什么是全文索引?为了快速搜索大量的文本文件为一本书建立关键词的索引“书签”什么是全文搜索?在索引中查找关键字的过程,找到关键字在哪
4、些地方出现全文搜索引擎高性能、可扩展的信息检索工具库为应用程序添加索引/搜索功能一个典型的应用:开源搜索引擎——LuceneLucene索引过程的核心类IndexWriter:提供对索引的写入操作Directory:描述了索引存放的位置Analyzer:对文本进行分析,提取词汇(token),剔除无用的信息Document:虚拟的文档Field:每个Document包含一个或多个不同命名的Field,每个Field对应一段数据,这些数据在搜索过程中可能会被查询或在索引中被检索Lucene索引代码示例Directorydir=F
5、SDirectory.getDirectory(indexDir);Analyzeranlyzer=newSimpleAnalyzer();IndexWriterwriter=newIndexWriter(dir,analyzer,true);Documentdoc=newDocument();doc.add(Field.Keyword(“id”,“1000”);doc.add(Field.UnIndexed(“name”,“YaoMing”);doc.add(Field.UnStored(“intro”,“YaoMingis
6、aplayerofHousetonRockets.”);writer.addDocument(doc);writer.close();Lucene搜索过程的核心类IndexSearcher:用于搜索IndexWriter创建的索引Term:用于搜索的一个基本单元包括了一对字符串元素,与Field相对应Query:抽象的查询类TermQuery:最基本的查询类型,用来匹配特定Field中包含特定值的文档Hits:存放有序搜索结果指针的简单容器Lucene搜索代码示例IndexSearchersearcher=newIndexSe
7、archer(directory);Termt=newTerm(“intro”,“Yao”);Queryquery=newTermQuery(t);Hitshits=searcher.search(query);assertEquals(“JUnittest”,1,hits.length());Lucene的线程安全性不允许使用多个IndexWriter或IndexReader实例同时对一个索引进行修改IndexWriter和IndexReader是线程安全的,可以被多线程共享paoding:“庖丁解牛”PaodingAnal
8、ysisimdict:imdict智能词典所采用的智能中文分词程序mmseg4j:用Chih-HaoTsai的MMSeg算法实现的中文分词器ik:采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式Lucene开源中文分词器SolrLucene仅仅是一个全文检索包,不
此文档下载收益归作者所有