高性能网站架构详解.ppt
文本预览下载声明
IndexWriter:提供对索引的写入操作 Directory:描述了索引存放的位置 Analyzer:对文本进行分析,提取词汇(token),剔除无用的信息 Document:虚拟的文档 Field:每个Document包含一个或多个不同命名的Field,每个Field对应一段数据,这些数据在搜索过程中可能会被查询或在索引中被检索 Directory dir = FSDirectory.getDirectory(indexDir); Analyzer anlyzer = new SimpleAnalyzer(); IndexWriter writer = new IndexWriter(dir, analyzer, true); Document doc = new Document(); doc.add(Field.Keyword(“id”, “1000”); doc.add(Field.UnIndexed(“name”, “Yao Ming”); doc.add(Field.UnStored(“intro”, “Yao Ming is a player of Houseton Rockets.”); writer.addDocument(doc); writer.close(); IndexSearcher:用于搜索IndexWriter创建的索引 Term:用于搜索的一个基本单元包括了一对字符串元素,与Field相对应 Query:抽象的查询类 TermQuery:最基本的查询类型,用来匹配特定Field中包含特定值的文档 Hits:存放有序搜索结果指针的简单容器 IndexSearcher searcher = new IndexSearcher(directory); Term t = new Term(“intro”, “Yao”); Query query = new TermQuery(t); Hits hits = searcher.search(query); assertEquals(“JUnit test”, 1, hits.length()); Lucene的线程安全性 不允许使用多个IndexWriter或IndexReader实例同时对一个索引进行修改 IndexWriter和IndexReader是线程安全的,可以被多线程共享 Memcache应用 Linux操作系统优化 Tomcat服务器优化 Apache服务器优化 Nginx服务器的优化 生产环境软件优化 增大连接数及TCP/IP的超时设置 在/etc/sysctl.conf配置文件中增加如下内核参数: net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 5 Linux操作系统优化 基于DNS的负载均衡——一个域名绑定多个IP 通过硬件四层交换实现负载均衡 通过软件四层交换实现负载均衡 通过反向代理服务器实现负载均衡 Apache + Tomcat集群实现负载均衡 前端负载均衡 通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web 服务器,从而达到负载均衡的目的。 落后淘汰的技术 基于DNS的负载均衡 知名产品有:Alteon、F5 成本较高 硬件四层交换实现负载均衡 LVS(Linux Virtual Server) 典型的应用策略:在软件或者硬件四层交换的基础上搭建squid集群 软件四层交换实现负载均衡 又称WEB 加速服务器,充当WEB服务的内容缓存器 典型代表产品: Nginx、Squid 反向代理服务器实现负载均衡 worker_processes:该参数的值最好跟cpu核数相等,能够发挥最大性能,如果nginx所在服务器为2颗双核cpu,则建议设定为4。 Nginx服务器的优化 Apache + Tomcat集群实现负载均衡 加大并发数量和关闭不需要的模块。因为apache非常消耗内存,尽量轻量化。 Apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率 同时配置apache和tomcat的组合使之能作到动静分离,apache处理静态页面,tomcat处理动态页面。 在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache,它提供了更轻量级和更高效的处理能力 Apache
显示全部