apache演算法
① apache開源項目有哪些
這個多了去了 ,apache 絕對是 開源裡面的領頭羊
for example:
分類 項目名 說明 開發語言
伺服器
(共20) Apache HTTP Server 全球第一HTTP伺服器 C/C++
Tomcat java的Web伺服器 Java
James 郵件伺服器 Java
SpamAssassin 反垃圾郵件 C/C++
Perl Apache的Perl編程語言支持 C/C++
Tcl TCL腳本語言 C/C++
Directory Server 超級目錄伺服器 Java
Axis WebServic伺服器 Java
Kanla Axis中WS-Coordination、WS-AtomicTransaction、WS-BusinessActivity協議的實現 Java
Muse Axis中WS-ResourceFramework (WSRF), WS-BaseNotification (WSN), and WS-DistributedManagement (WSDM) 標準的實現(該項目Logo是個不認識的古漢字) Java
Pubscribe Web Services Notification (WSN) 標准實現 Java
Sandesha WS-ReliableMessaging 標准實現 Java
WSS4J WS-Security 標准實現 Java
WSRF Web Services Resource Framework 標准實現 Java
Addressing WebService的WS-Addressing標准(IBM、微軟、BEA發布)實現 Java
XML Security XML簽名與加密標準的Java、C++實現 Java/C++
jUDDI UDDI的Java實現 Java
XML-RPC XML-RPC實現 Java
Derby 純Java做的關系資料庫 Java
Xindice XML資料庫 Java
開發工具(共5) Ant 自動編譯 Java
Maven 項目管理工具,比Ant強大,支持插件開發 Java
Gump 每日集成工具,支持Ant、Maven Python
JMeter Web應用性能測試 Java
DdlUtils 用XML來定義DDL Java
Web開發框架(共19) Struts MVC的Web開發框架 Java
Cocoon Web開發框架,基於可運行的XML管道語言 Java
FOP XSL-FO 列印與輸出解決方案,基於Java Java
AxKit 基於XML的Web發布 Java
Tapestry Web開發框架 Java
Turbine Web開發框架 Java
Shale 基於JSF的Web開發框架 Java
MyFaces 第一個開源的JSF實現 Java
Beehive 基於Structs的J2EE框架,簡化J2EE編程;含Web界面、WebService開發框架 Java
Velocity 模板引擎 Java
Portals 門戶解決方案 Java
Cactus Web開發測試框架 Java
Forrest 基於Cocoon的Web發布解決方案 Java
Slide 內容管理,支持WebDAV Java
Jackrabbit 內容庫,用於內容管理 Java
Lenya 內容管理,支持版本管理、工作流、所見所得編輯器 Java
Xang 基於JavaScript進行動態Web開發 Java
Xindice 純XML資料庫 Java
JCS 分布式Cache系統(Java Caching System) Java
容器(共7) Geronimo J2EE容器,類似JBoss Java
iBATIS 簡單OR映射,有.NET版本 Java/C#
Torque OR映射 Java
ORB ObjectRelationalBridge,OR映射 Java
JDO JDO標準的一個實現 Java
HiveMind 類似Spring的東西,微內核DI容器 Java
Excalibur IoC容器 Java
組件(共82) APR 不同操作系統間可移植運行時庫 C/C++
Regexp Java正則表達式 Java
ORO Perl風格的正則表達式 Java
Xerces XML解析,Java/C兩種版本 Java/C++
Crimson XML解析器 Java
AXIOM 更高效的DOM實現 Java
Lucene 全文檢索,有.NET版本 Java/C#
Logging 不僅Log4j,各個語言的版本都有了 Java/C++/Perl/C#
XMLBeans XML轉對象 Java
JaxMe Java/XML綁定的實現 Java
Taglibs JSP Tag庫 Java
HttpComponents HTTP訪問控制項 Java
ECS 輔助生成標簽(Element Construction Set) Java
WSIF WebService調用(Web Services Invocation Framework) Java
SOAP SOAP標准實現 Java
Woden WSDL書寫工具 Java
Tuscany 簡化SOA開發 Java
MIRAE 讓手機支持基於XML的服務 Java
BSF 腳本語言框架(Bean Scripting Framework),支持JavaScript等多種腳本語言 Java
BCEL 用於直接生成位元組碼(Byte Code Engineering Library) Java
POI 存取Office文檔 Java
Batik JAVA的SVG實現 Java
Attributes 訪問Java 1.5語言中定義的meta 這些項目都在jakarta commons中,都是Java的
BeanUtils 反射支持
Betwixt XML/JavaBean轉換
Chain 職責鏈模式實現
CLI 命令行參數解析
Codec 通用加密/加密演算法
Collections Java容器類完善擴充
Configuration 各種來源配置文件存取
Daemon Java模擬Unix的Daemon
DBCP 數據鏈連接池
DbUtils JDBC輔助類
Digester XML到Java對象映射工具
Discovery 根據名稱來查找資源
EL JSP 2.0 表達式標准實現
Email 發送Email類
FileUpload 文件上傳輔助類
HttpClient HTTP客戶端
IO IO操作輔助類
Jelly 基於XML的腳本引擎
Jexl JSTL 表達式語言擴展
JXPath 用XPath語言來操作對象的輔助類
Lang java.lang.類擴充
Launcher 跨平台Java應用啟動器
Logging 不同Log實現的封裝
Math 數學、統計輔助類
Modeler 創建兼容JMX標準的MBeans
Net 各種網路協議實現
Pool 對象池
Primitives 很小的Java原始對象類型操作輔助類
SCXML 狀態圖XML標准實現
Transaction 多層次容器、文件操作事務支持
Validator 用XML定義校驗器和校驗規則
VFS 虛擬文件系統用於操作FTP、SMB、Zip等
Compress tar、zip、bzip2壓縮格式文件操作 這些項目都在jakarta commons中的Sandbox中
CSV CSV文件格式支持
Exec 外部進程執行和環境設置輔助類
Finder 模擬Unix find命令
I18n 國際化輔助類
Id 生成ID輔助類
Javaflow 應用狀態管理
JCI Java編譯器介面
OpenPGP OpenPGP封裝
Pipeline 管道輔助類用於並行或者順序操作數據
Proxy 動態代碼生成輔助類
Cache 對象緩存服務 這些項目都在jakarta commons中的Dormant(睡眠)中
Clazz class操作和反射操作
Contract 契約編程用到Java中
Convert Java對象類西轉換輔助類
Events 事件管理容器
Feedparser RSS和Atom實現
Functor 用對象方式來操作函數
JJar Jar操作
Latka HTTP功能測試
Mapper 簡單封裝後可以選擇不同的對象映射實現
Messenger JMS用於Web開發中的輔助類
Resources 國際化資源信息查找
Scaffold Web應用開發工具
ThreadPool 線程池
Workflow 工作流管理系統框架
XMLIO XML配置快速簡便導入
② 大數據分析界的「神獸」Apache Kylin有多牛
1.Apache Kylin是什麼?
在現在的大數據時代,越來越多的企業開始使用Hadoop管理數據,但是現有的業務分析工具(如Tableau,Microstrategy等)
往往存在很大的局限,如難以水平擴展、無法處理超大規模數據、缺少對Hadoop的支持;而利用Hadoop做數據分析依然存在諸多障礙,例如大多數分析
師只習慣使用SQL,Hadoop難以實現快速互動式查詢等等。神獸Apache Kylin就是為了解決這些問題而設計的。
Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop動物園的重要成員。Apache
Kylin是一個開源的分布式分析引擎,最初由eBay開發貢獻至開源社區。它提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支持大
規模數據,能夠處理TB乃至PB級別的分析任務,能夠在亞秒級查詢巨大的Hive表,並支持高並發。
Apache
Kylin於2014年10月在github開源,並很快在2014年11月加入Apache孵化器,於2015年11月正式畢業成為Apache頂級項
目,也成為首個完全由中國團隊設計開發的Apache頂級項目。於2016年3月,Apache
Kylin核心開發成員創建了Kyligence公司,力求更好地推動項目和社區的快速發展。
Kyligence是一家專注於大數據分析領域創新的數據科技公司,提供基於Apache
Kylin的企業級智能分析平台及產品,以及可靠、專業、源碼級的商業化支持;並推出Apache Kylin開發者培訓,頒發全球唯一的Apache
Kylin開發者認證證書。
2.Kylin的基本原理和架構
下面開始聊一聊Kylin的基本原理和架構。簡單來說,Kylin的核心思想是預計算,即對多維分析可能用到的度量進行預計算,將計算好的結果保
存成Cube,供查詢時直接訪問。把高復雜度的聚合運算、多表連接等操作轉換成對預計算結果的查詢,這決定了Kylin能夠擁有很好的快速查詢和高並發能
力。
上圖所示就是一個Cube的例子,假設我們有4個dimension,這個Cube中每個節點(稱作Cuboid)都是這4個dimension
的不同組合,每個組合定義了一組分析的dimension(如group
by),measure的聚合結果就保存在這每個Cuboid上。查詢時根據SQL找到對應的Cuboid,讀取measure的值,即可返回。
為了更好的適應大數據環境,Kylin從數據倉庫中最常用的Hive中讀取源數據,使用
MapRece作為Cube構建的引擎,並把預計算結果保存在HBase中,對外暴露Rest
API/JDBC/ODBC的查詢介面。因為Kylin支持標準的ANSI
SQL,所以可以和常用分析工具(如Tableau、Excel等)進行無縫對接。下面是Kylin的架構圖。
說到Cube的構建,Kylin提供了一個稱作Layer Cubing的演算法。簡單來說,就是按照dimension數量從大到小的順序,從Base
Cuboid開始,依次基於上一層Cuboid的結果進行再聚合。每一層的計算都是一個單獨的Map Rece任務。如下圖所示。
MapRece的計算結果最終保存到HBase中,HBase中每行記錄的Rowkey由dimension組成,measure會保存在
column
family中。為了減小存儲代價,這里會對dimension和measure進行編碼。查詢階段,利用HBase列存儲的特性就可以保證Kylin有
良好的快速響應和高並發。
有了這些預計算的結果,當收到用戶的SQL請求,Kylin會對SQL做查詢計劃,並把本該進行的Join、Sum、Count Distinct等操作改寫成Cube的查詢操作。
Kylin提供了一個原生的Web界面,在這里,用戶可以方便的創建和設置Cube、管控Cube構建進度,並提供SQL查詢和基本的結果可視化。
根據公開數據顯示,Kylin的查詢性能不只是針對個別SQL,而是對上萬種SQL 的平均表現,生產環境下90%ile查詢能夠在在3s內返回。在上個月舉辦的Apache Kylin
Meetup中,來自美團、京東、網路等互聯網公司分享了他們的使用情況。例如,在京東雲海的案例中,單個Cube最大有8個維度,最大數據條數4億,最
大存儲空間800G,30個Cube共占存儲空間4T左右。查詢性能上,當QPS在50左右,所有查詢平均在200ms以內,當QPS在200左右,平均
響應時間在1s以內。
北京移動也在meetup上展示了Kylin在電信運營商的應用案例,從數據上看,Kylin能夠在比Hive/SparkSQL在更弱的硬體配置下獲得更好的查詢性能。 目前,有越來越多的國內外公司將Kylin作為大數據生產環境中的重要組件,如ebay、銀聯、網路、中國移動等。大家如果想了解更多社區的案例和動態,可以登錄Apache Kylin官網或Kyligence博客進行查看。
3.Kylin的最新特性
Kylin的最新版本1.5.x引入了不少讓人期待的新功能,可擴展架構將Kylin的三大依賴(數據源、Cube引擎、存儲引
擎)徹底解耦。Kylin將不再直接依賴於Hadoop/HBase/Hive,而是把Kylin作為一個可擴展的平台暴露抽象介面,具體的實現以插件的
方式指定所用的數據源、引擎和存儲。
開發者和用戶可以通過定製開發,將Kylin接入除Hadoop/HBase/Hive以外的大數據系統,比如用Kafka代替Hive作數據源,用
Spark代替MapRece做計算引擎,用Cassandra代替HBase做存儲,都將變得更為簡單。這也保證了Kylin可以隨平台技術一起演
進,緊跟技術潮流。
在Kylin
1.5.x中還對HBase存儲結構進行了調整,將大的Cuboid分片存儲,將線性掃描改良為並行掃描。基於上萬查詢進行了測試對比結果顯示,分片的存
儲結構能夠極大提速原本較慢的查詢5-10倍,但對原本較快的查詢提速不明顯,綜合起來平均提速為2倍左右。
除此之外,1.5.x還引入了Fast
cubing演算法,利用Mapper端計算先完成大部分聚合,再將聚合後的結果交給Recer,從而降低對網路瓶頸的壓力。對500多個Cube任務
的實驗顯示,引入Fast cubing後,總體的Cube構建任務提速1.5倍。
目前,社區正在著手准備Apache Kylin 1.5.2版本的發布,目前正處於Apache Mailing list投票階段,預計將會在本周在Kylin官網發布正式下載。
在本次的1.5.2版本中,Kylin帶來了總計
36個缺陷修復、33個功能改進、6個新功能。一些主要的功能改進包括對HyperLogLog計算效率的提升、在Cube構建時對Convert
data to hfile步驟的提速、UI上對功能提示的體驗優化、支持hive view作為lookup表等等。
另一個新消息是Kylin將支持MapR和CDH的Hadoop發行版,具體信息可見KYLIN-1515和KYLIN-1672。相應的測試版本是MapR5.1和CDH5.7。
UI上提供了一個重要更新,即允許用戶在Cube級別進行自定義配置,以覆蓋kylin.properties中的全局配置。如在cube中定義kylin.hbase.region.count.max 可以設置該cube在hbase中region切分的最大數量。
另
一個重要的功能是Diagnosis。用戶經常會遇到一些棘手的問題,例如Cube構建任務失敗、SQL查詢失敗,或Cube構建時間過長、SQL查詢時
間過長等。但由於運維人員對Kylin系統了解不深,很難快速定位到root cause所在地。我們在mailing
list里也經常看到很多用戶求助,由於不能提供足夠充分的信息,社區也很難給出一針見血的建議。
當用戶遇到查詢、Cube/Model管理的問題,單擊System頁面的Diagnosis按鈕,系統會自動抓取當前Project相關的信息並打包成
zip文件下載到用戶本地。這個包會包含相關的Metadata、日誌、HBase配置等。當用戶需要在mailing
list求助,也可以附上這個包。
③ 如何設置apache openssl 的加密演算法
使用VS2005下的Visual Studio 2005 Command Prompt進入控制台模式(這個模式會自動設置各種環境變數)
、解壓縮openssl的包,進入openssl的目錄
、perl configure VC-WIN32
盡量在這個目錄下執行該命令,否則找不到Configure文件,或者指定完整的Configure文件路徑。
、ms\do_ms
在解壓目錄下執行ms\do_ms命令
、nmake -f ms\ntdll.mak編譯後在openssl解壓目錄下執行,完成編譯後。輸出的文件在out32dll裡面,包括應用程序的可執行文件、lib文件和dll文件
注意:在運行第五步時,cl編譯器會抱怨說.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推薦的),建議使用_read。呵呵,我可不想將OpenSSL中的所有的read函數修改為_read。再看cl的錯誤代碼 error C2220,於是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由於設置了/WX選項,將所有的警告都作為錯誤對待,所以。。。
於是打開OpenSSL目錄下的MS目錄下的ntdll.mak文件,將CFLAG的/WX選項去掉,存檔。
④ apache做負載均衡的均衡演算法可以修改嗎(不用自帶的)
可以直接買一台負載均衡交換機啊,何必要浪費1台伺服器呢。
應該是每台都會有一個IP地址 外網 訪問連接到的那個IP地址 是你的負載均衡交換機的IP地址 他隨機把你的訪問請求分配到你的3台伺服器上
無主從關系,負載均衡交換機它會沒2秒左右!
⑤ 如何設置Apache伺服器的緩沖區大小
你說的是緩存大小吧
Apache的緩存方式有兩種,一種是基於硬碟文件的緩存,由mod_disk_cache實現,另一種是使用內存緩存,由mod_mem_cache實現,不過它們都是依賴mod_cache模塊的,mod_cache模塊提供了一些緩存配置的指令供它們使用,而mod_file_cache模塊是搭配mod_mem_cache模塊使用的,下面分別進行介紹。
1、基於硬碟文件的緩存
基於硬碟文件存儲的緩存由mod_disk_cache模塊實現,先看個簡單的配置例子:
<IfMolemod_cache.c>
CacheDefaultExpire86400
<IfMolemod_disk_cache.c>
CacheEnabledisk/
CacheRoot/tmp/apacheCache
CacheDirLevels5
CacheDirLength4
CacheMaxFileSize1048576
CacheMinFileSize10
</IfMole>
</IfMole>
把上面的配置加到Apache的httpd.conf文件中,如果緩存相關的模塊都已經編譯進了Apache的核心,則無需載入模塊,直接就能使用上面的指令。指令的詳細說明如下:
CacheDefaultExpire:設定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設置過期時間或最後修改時間時這個指令才會生效
CacheEnable:啟用緩存,第1個參數是緩存類弄,這里當然是disk了,第2個參數是緩存路徑,指的是url路徑,這里是緩存所有的東西,直接寫上「/」即可,如「/docs」則只緩存/docs下的所有文件
CacheRoot:緩存文件所在的目錄,運行Apache的用戶(如daemon或nobody)要能對其進行讀寫,如果不清楚的話可以直接設置成777,請手動建立該目錄並設置好訪問許可權
CacheDirLevels:緩存目錄的深度,默認是3,這里設置為5
CacheDirLength:緩存目錄名的字元長度,默認是4,這里設置為5
CacheMaxFileSize和CacheMaxFileSize:緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設置為1M和10bytes
基於硬碟文件存儲的文件基本上就這些內容,設置好後重啟Apache應該就能使用了。一切正常的話,可以在緩存目錄下看到Apache自動建立的一些目錄和緩存的數據文件。
2、基於內存的緩存
基於內存的緩存主要由mod_mem_cache模塊實現,還是看個簡單的配置吧,這樣比較直觀:-)
<IfMolemod_cache.c>
<IfMolemod_mem_cache.c>
CacheEnablemem/
MCacheMaxObjectCount20000
MCacheMaxObjectSize1048576
MCacheMaxStreamingBuffer65536
MCacheMinObjectSize10
MCacheRemovalAlgorithmGDSF
MCacheSize131072
</IfMole>
</IfMole>
簡單說一下上面一些指令的意思:
CacheEnable:啟用緩存,使用基於內存的方式存儲
MCacheMaxObjectCount:在內存中最多能存儲緩存對象的個數,默認是1009,這里設置為20000
MCacheMaxObjectSize:單個緩存對象最大為1M,默認是10000bytes
MCacheMaxStreamingBuffer:在緩沖區最多能夠放置多少的將要被緩存對象的尺寸,這里設置為65536,該值通常小於100000或MCacheMaxObjectSize設置的值
MCacheMinObjectSize:單個緩存對象最小為10bytes,默認為1bytes
MCacheRemovalAlgorithm:清除緩存所使用的演算法,默認是GDSF,還有一個是LRU,可以查一下Apache的官方文檔,上面有些介紹
MCacheSize:緩存數據最多能使用的內存,單位是kb,默認是100kb,這里設置為128M
保存重啟Apache基於內存的緩存系統應該就能生效了,根據需要可以使基於內存的存儲或硬碟文件的存儲方式一起使用,只要指明不同的URL路徑即可。
3、注意事項
使用緩存需要注意如下事項:
要使用緩存,必須使用指令CacheEnable啟用它,目前可用的緩存類型為disk或mem,禁止緩存可以使用CacheDisable,如CacheDisable/private
待緩存的URL返回的狀態值必須為:200、203、300、301或410
URL的請求方式必須是GET方式
發送請求時,頭部中包含「Authorization:」的字元串時,返回的內容將不會被緩存
URL包含查詢字元串,如問號?後的那些東西,除非返回的內容包含「Expires:」,否則不會被緩存
如果返回的狀態值是200,則返回的頭部信息必須包含以下的一種才會被緩存:Etag、Last-Modified、Expires,除非設置了指令CacheIgnoreNoLastModOn
如果返回內容的頭部信息「Cache-Control:」中包含「private」,除非設置了指令CacheStorePrivateOn,否則不會被緩存
如果返回內容的頭部信息「Cache-Control:」中包含「no-sotre」,除非設置了指令CacheStoreNoStoreOn,否則不會被緩存
如果返回內容的頭部信息「Vary:」中包含了「*」,不會被緩存
⑥ 如何使用Apache伺服器配置負載均衡集群
Internet 的快速增長,特別是電子商務應用的發展,使Web應用成為目前最重要最廣泛的應用,Web伺服器動態內容越來越流行。目前,網上信息交換量幾乎呈指數增長,需要更高性能的Web伺服器提供更多用戶的Web服務,因此,Web伺服器面臨著訪問量急劇增加的壓力,對其處理能力和響應能力等帶來更高的要求,如果Web 伺服器無法滿足大量Web訪問服務,將無法為用戶提供穩定、良好的網路應用服務。
由於客觀存在的伺服器物理內存、CPU 處理速度和操作系統等方面的影響因素,當大量突發的數據到達時,Web伺服器無法完全及時處理所有的請求,造成應答滯後、請求丟失等,嚴重的導致一些數據包因延時而重發,使傳輸線路和伺服器的負擔再次增加。傳統的方法是提高Web 伺服器的CPU 處理速度和增加內存容量等硬體辦法但無論如何增加Web 伺服器硬體性能,均無法滿足日益增加的對用戶的訪問服務能力。
面對日漸增加的Web 訪問服務要求,必須對Web 伺服器按一定策略進行負載分配。利用負載均衡[1]的技術,按照一定策略將Web 訪問服務分配到幾台伺服器上,負載處理對用戶透明,整體上對外如同一台Web 伺服器為用戶提供Web服務。
2 Web負載均衡結構
2.1 負載均衡
負載是一個抽象的概念,是表示系統繁忙程度,系統在一段時間空閑,該系統負載輕,系統在一段時間空忙,該系統負載重,影響系統負載的各種因數較多如果存在很多的數據包同時通過網路連向一台Web伺服器,也就是網路的速度比網路所連接的設備速度快的情況下,系統負載不斷增加,直到最大。
目前提高Web 伺服器性能,使其具有較強負載能力,主要有兩種處理思想[2]:
1)單機思想
不斷升級伺服器硬體性能,每當負載增加,伺服器隨之升級。這隨之將帶來一些問題,首先,伺服器向高檔升級,花費資金較多;其次,升級頻繁,機器切換造成服務中斷,可能會導致整個服務中斷;最後,每種架構的伺服器升級總有一個極限限制。
2)多機思想
使用多台伺服器提供服務,通過一定機制使它們共同分擔系統負載,對單一的伺服器沒有太高的性能要求,系統負載增加,可以多增加伺服器來分擔。對用戶而言,整個系統彷彿是一台單一的邏輯伺服器,這樣的系統能夠提供較強的可擴展性和較好的吞吐性能。
為了適應當前急劇增長的Web訪問,有別於傳統的單機思想,解決單機思想帶來的一系列問題,本文提出了一種基於權值的策略分配負載。
2.2 負載均衡實現設備[2]
目前實現負載均衡需要兩類的設備:伺服器和分配器。
1)伺服器(Server)
為用戶提供真正的服務,也就是指給用戶提供負載均衡服務的計算機設備,有關該設備的一些性能數據是負載均衡的主要依據之一。
2)分配器(Dispatcher)
由用戶瀏覽器、Web 伺服器組成兩層結構Web 系統[2],如所示,實際是基於客戶端的負載均衡。
負責給用戶服務分配伺服器,分配器的主要功能是根據客戶和伺服器的各種情況(這些情況要能反映伺服器的負載狀況或性能狀況)通過一定的演算法進行調動和分配工作,從而提高由伺服器整體構成的網站的穩定性、響應能力。它主要是集中所有的HTTP 請求,然後分配到多台Web伺服器上處理,來提高系統的處理效率。
2.3 負載均衡系統結構
2.3.1 兩層結構的負載均衡系統
在伺服器上運行一個特定的程序,該程序相當一個客戶端,它定期的收集伺服器相關性能參數,如CPU、I/O、內存等動態信息,根據某種策略,確定提供最佳服務的伺服器,將應用請求轉發給它。如果採集負載信息程序發現伺服器失敗,則找其它伺服器作為服務選擇。這是一種動態負載均衡技術,但是每台伺服器上必須安裝特定的客戶端程序,同時,為保證應用程序的透明性,需要對每個應用進行修改,能夠將訪問請求通過該客戶端程序轉發到其它伺服器上,重定向方式進行,修改每一個應用程序,工作量十分大。
2.3.2 三層結構的負載均衡系統
由用戶瀏覽器、負載均衡和Web伺服器組成三層結構Web系統[2],如所示。實際是基於伺服器的負載均衡。如果將基於客戶端的負載均衡中客戶端的負載均衡部分移植到一個中間平台,形成一個應用伺服器,構成請求、負載均衡和伺服器的三層結構,客戶端應用不需要做特殊修改,透明的中間層將請求均衡的分布到不同的伺服器。
據伺服器直接連到Internet 與否有兩種多Web 伺服器結構:隔離式(Separation) 和非隔離式(Unseparation)。隔離式是伺服器不直接連到Internet,如所示,非隔離式是伺服器直接連到Internet,如所示。 隔離式中只有負載均衡器對外有一個IP 地址,所有的請求由負載均衡器分配到不同的Web Server,所有Web Server 的返回結果也經過負載均衡器傳回給用戶。非隔離式中每一台Web Server 都有一個IP地址,用戶請求經過負載均衡器分配到Web Server,而請求的應答不經過負載均衡器,直接傳回用戶。為了減輕均衡器的負載,本文中採用了三層結構中的隔離方式。
2.4 負載均衡實現的方法
Web 負載均衡常見演算法有[3]:循環調度演算法(Round-Robin Scheling)、加權循環調度演算法(Weighted Round-Robin Scheling) 、最小連接調度演算法(Least-Connection Scheling)、目標地址散列調度演算法(Destination Hashing Scheling)、源地址散列調度演算法(Source Hashing Scheling)。
本文採用基於權值的調度演算法,也就是說權值大的伺服器優先得到調度,本文在實現時是基於靜態的權值,就是在開始的時候給每一個伺服器配置一個默認的權值。當然也可以根據實際運行情況再對每一個伺服器的權值進行調整。但是這需要實時的搜集每一個伺服器的信息,如伺服器的內存實用情況,響應速度等一些信息。
⑦ 大數據分析Apache Spark的應用實例
在考慮Hadoop生態系統中的各種引擎時,重要的是要了解每個引擎在某些用例下效果最佳,並且企業可能需要使用多種工具組合才能滿足每個所需的用例。話雖如此,這里是對Apache Spark的一些頂級用例的回顧。
一、流數據
Apache Spark的關鍵用例是其處理流數據的能力。由於每天要處理大量數據,因此對於公司而言,實時流傳輸和分析數據變得至關重要。Spark Streaming具有處理這種額外工作負載的能力。一些專家甚至認為,無論哪種類型,Spark都可以成為流計算應用程序的首選平台。提出此要求的原因是,Spark Streaming統一了不同的數據處理功能,從而使開發人員可以使用單個框架來滿足其所有處理需求。
當今企業使用Spark Streaming的一般方式包括:
1、流式ETL –在數據倉庫環境中用於批處理的傳統ETL(提取,轉換,載入)工具必須讀取數據,將其轉換為資料庫兼容格式,然後再將其寫入目標資料庫。使用Streaming ETL,在將數據推送到數據存儲之前,將對其進行連續的清理和聚合。
2、數據充實 –這種Spark Streaming功能通過將實時數據與靜態數據相結合來充實實時數據,從而使組織能夠進行更完整的實時數據分析。在線廣告商使用數據充實功能將歷史客戶數據與實時客戶行為數據結合起來,並根據客戶的行為實時提供更多個性化和針對性的廣告。
3、觸發事件檢測 – Spark Streaming使組織可以檢測到可能對系統內部潛在嚴重問題的罕見或異常行為(「觸發事件」)並做出快速響應。金融機構使用觸發器來檢測欺詐性交易並阻止其欺詐行為。醫院還使用觸發器來檢測潛在的危險健康變化,同時監視患者的生命體征-向正確的護理人員發送自動警報,然後他們可以立即採取適當的措施。
4、復雜的會話分析 –使用Spark Streaming,與實時會話有關的事件(例如登錄網站或應用程序後的用戶活動)可以組合在一起並進行快速分析。會話信息還可以用於不斷更新機器學習模型。諸如Netflix之類的公司使用此功能可立即了解用戶在其網站上的參與方式,並提供更多實時電影推薦。
二、機器學習
許多Apache Spark用例中的另一個是它的機器學習功能。
Spark帶有用於執行高級分析的集成框架,該框架可幫助用戶對數據集進行重復查詢,這從本質上講就是處理機器學習演算法。在此框架中找到的組件包括Spark的可擴展機器學習庫(MLlib)。MLlib可以在諸如聚類,分類和降維等領域中工作。所有這些使Spark可以用於一些非常常見的大數據功能,例如預測智能,用於營銷目的的客戶細分以及情感分析。使用推薦引擎的公司將發現Spark可以快速完成工作。
網路安全是Spark 機器學習功能的一個很好的商業案例。通過使用Spark堆棧的各種組件,安全提供程序可以對數據包進行實時檢查,以發現惡意活動的痕跡。在前端,Spark Streaming允許安全分析人員在將數據包傳遞到存儲平台之前檢查已知威脅。到達存儲區後,數據包將通過其他堆棧組件(例如MLlib)進行進一步分析。因此,安全提供商可以在不斷發展的過程中了解新的威脅-始終領先於黑客,同時實時保護其客戶。
三、互動分析
Spark最顯著的功能之一就是其互動式分析功能。MapRece是為處理批處理而構建的,而Hive或Pig等SQL-on-Hadoop引擎通常太慢,無法進行互動式分析。但是,Apache Spark足夠快,可以執行探索性查詢而無需采樣。Spark還與包括SQL,R和Python在內的多種開發語言介面。通過將Spark與可視化工具結合使用,可以交互地處理和可視化復雜的數據集。
下一版本的Apache Spark(Spark 2.0)將於今年的4月或5月首次亮相,它將具有一項新功能- 結構化流 -使用戶能夠對實時數據執行互動式查詢。通過將實時流與其他類型的數據分析相結合,預計結構化流將通過允許用戶針對Web訪問者當前會話運行互動式查詢來促進Web分析。它也可以用於將機器學習演算法應用於實時數據。在這種情況下,將對舊數據進行演算法訓練,然後將其重定向以合並新的數據,並在其進入內存時從中學習。
四、霧計算
盡管大數據分析可能會引起廣泛關注,但真正激發技術界想像力的概念是物聯網(IoT)。物聯網通過微型感測器將對象和設備嵌入在一起,這些微型感測器彼此之間以及與用戶進行通信,從而創建了一個完全互連的世界。這個世界收集了大量數據,對其進行處理,並提供革命性的新功能和應用程序供人們在日常生活中使用。但是,隨著物聯網的擴展,對大量,種類繁多的機器和感測器數據進行大規模並行處理的需求也隨之增加。但是,利用雲中的當前分析功能很難管理所有這些處理。
那就是霧計算和Apache Spark出現的地方。
霧計算將數據處理和存儲分散化,而不是在網路邊緣執行這些功能。但是,霧計算為處理分散數據帶來了新的復雜性,因為它越來越需要低延遲,機器學習的大規模並行處理以及極其復雜的圖形分析演算法。幸運的是,有了Spark Streaming等關鍵堆棧組件,互動式實時查詢工具(Shark),機器學習庫(MLib)和圖形分析引擎(GraphX),Spark不僅具有霧計算解決方案的資格。實際上,隨著物聯網行業逐漸不可避免地融合,許多行業專家預測,與其他開源平台相比,Spark有可能成為事實上的霧基礎設施。
現實世界中的火花
如前所述,在線廣告商和諸如Netflix之類的公司正在利用Spark獲得見識和競爭優勢。其他也從Spark受益的著名企業是:
Uber –這家跨國在線計程車調度公司每天都從其移動用戶那裡收集TB級的事件數據。通過使用Kafka,Spark Streaming和HDFS構建連續的ETL管道,Uber可以在收集原始非結構化事件數據時將其轉換為結構化數據,然後將其用於進一步和更復雜的分析。
Pinterest –通過類似的ETL管道,Pinterest可以利用Spark Streaming即時了解世界各地的用戶如何與Pins互動。因此,當人們瀏覽站點並查看相關的圖釘時,Pinterest可以提出更相關的建議,以幫助他們選擇食譜,確定要購買的產品或計劃前往各個目的地的行程。
Conviva –這家流媒體視頻公司每月平均約有400萬個視頻供稿,僅次於YouTube。Conviva使用Spark通過優化視頻流和管理實時視頻流量來減少客戶流失,從而保持一致的流暢,高質量的觀看體驗。
何時不使用Spark
盡管它具有通用性,但這並不一定意味著Apache Spark的內存中功能最適合所有用例。更具體地說,大數據分析Apache Spark的應用實例Spark並非設計為多用戶環境。Spark用戶需要知道他們有權訪問的內存對於數據集是否足夠。添加更多的用戶使此操作變得更加復雜,因為用戶必須協調內存使用量才能同時運行項目。由於無法處理這種類型的並發,用戶將需要為大型批處理項目考慮使用備用引擎,例如Apache Hive。
隨著時間的流逝,Apache Spark將繼續發展自己的生態系統,變得比以前更加通用。在大數據已成為規范的世界中,組織將需要找到最佳方式來利用它。從這些Apache Spark用例可以看出,未來幾年將有很多機會來了解Spark的真正功能。
隨著越來越多的組織認識到從批處理過渡到實時數據分析的好處,Apache Spark的定位是可以在眾多行業中獲得廣泛而快速的採用。
⑧ 詳細全面介紹什麼是 Apache伺服器
Apache,一種開放源碼的HTTP伺服器,可以在大多數計算機操作系統中運行,由於其多平台和安全性(注1)被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴展,Perl/Python等解釋器可被編譯到伺服器中。
歷史
Apache 起初由 Illinois 大學 Urbana-Champaign 的國家高級計算程序中心開發。此後,Apache 被開放源代碼團體的成員不斷的發展和加強。Apache 伺服器擁有牢靠可信的美譽,已用在超過半數的網際網路站中-特別是幾乎所有最熱門和訪問量最大的網站。
開始,Apache只是Netscape網頁伺服器(現在是Sun ONE)的之外的開放源代碼選擇。漸漸的,它開始在功能和速度。超越其他的基於Unix的HTTP伺服器。1996年4月以來,Apache一直是Internet上最流行的HTTP伺服器: 1999年5月它在 57% 的網頁伺服器上運行;到了2005年7月這個比例上升到了69%。
作者宣稱因為這個名字好記才在最初選擇它,但是流傳最廣的解釋是(也是最顯而易見的):這個名字來自這么一個事實:當Apache在1995年初開發的時候,它是由當時最流行的HTTP伺服器NCSA HTTPd 1.3 的代碼修改而成的,因此是「一個修補的(a patchy)」伺服器。然而在伺服器官方網站的FAQ中是這么解釋的:「『Apache』這個名字是為了紀念名為Apache(印地語)的美洲印第安人土著的一支,眾所周知他們擁有高超的作戰策略和無窮的耐性」。無論怎麼樣,Apache 2.x 分支不包含任何 NCSA 的代碼。
特性
Apache支持許多特性,大部分通過編譯的模塊實現。這些特性從伺服器端的編程語言支持到身份認證方案。一些通用的語言介面支持Perl,Python, Tcl, 和 PHP。流行的認證模塊包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持 (mod_ssl), proxy 模塊,很有用的URL重寫(由 mod_rewrite 實現),定製日誌文件 (mod_log_config),以及過濾支持(mod_include 和 mod_ext_filter)。Apache日誌可以通過網頁瀏覽器使用免費的腳本AWStats或Visitors來進行分析。
2.x版本
Apache 的2.x版本核心在Apache 1.x版本之上作出了重要的加強。這包括:線程,更好的支持非UNIX平台(例如Windows),新的 Apache API,以及IPv6支持。
評價
《PC Magazine》2004年8月評出了近30年以來的10款最佳軟體產品。他們其中或者是有過最輝煌的歷史,或者是最具創意。其對apache的評價是:第三名:Apache(阿帕奇,1995年推出)Apache目前已經演變成了「LAMP」,即linux、Apache、MySQL和PHP的聯合體。這是一個開放源代碼軟體項目,已經對微軟的「.NET」戰略構成嚴重威脅。尤其是Apache網路伺服器,讓用戶充分體驗到開發源碼軟體的穩定性、可靠性和可定製性。
Apple.com評價apache時說:Apache是伺服器軟體始終不斷進化的大塊部件,它免費但又是無價之寶。Apache 是在資源開放運動中出現的絕對珍品,因為不屬於個人專利而是對公共免費。一旦擁有這些源碼,程序員能夠自由完成所想——能在其它程序員接替工作時被賦予同樣的許可權來改變和修改自己的源代碼。
注釋
盡管不斷有新的漏洞被發現,但由於其OpenSource的特點,漏洞總能被很快修補。因此總的來說,其安全性還是相當高的。
() [#page_#][#page_#]AddHandler cgi-script .cgi
AddHandler server-parsed .shtml
Sethandler cgi-script
AddHandler定義了何種擴展名用那一個字元串進行描述.
SetHandler把一個目錄下的文件都指定用這一個字元串描述.
我在這里提到的命令都是與其結構密切相關的. Handler和Type的關系在下面會描述的. 許多的東東從外面是看不清楚的, 下面, 我們從裡面看.
三 程序的基本結構
-----------------
Apache有非常好的跨平台性. 為了實現這一目標和簡化模塊編寫者的負擔,Apache完成了許多基本的功能如IO, 內存分配等, 這些介面都是與具體平台無關的. 還有一些很有用的常式如: hash table, array 等. 在整個體系中, Apache有一個基本點, 它盡可能的使用簡單的結構和演算法, 這不僅易於理解和維護, 還提高了它的穩定性.
在UNIX系統上, Apache採用了多進程模型, 在Window上採用了多線程模型.多進程模型中, 其子進程處理客戶請求, 父進程用於管理子進程. 當系統過載時父進程會再啟動幾個子進程, 當系統空閑時, 父進程會殺掉幾個子進程. 子進程的數目在"MinSpareServers"和"MaxSpareServers"之間. 而且, 每個子進程處理的請求個數也是有限制的, 這可以解決諸如內存泄漏等問題. 所有的進程狀態都被記錄在share memory中. 由於每個進程的狀態記錄在其中的一小塊內存上, 它通常也只讀寫這一塊內存, 因此, Apache沒有使用什麼同步機制.
在Richard Steve的書上說到的幾種多進程伺服器模型, Apache都使用了,在不同的系統上根據其特點選擇使用不同的方法:
1. accept :
在accept處阻塞, 只有在accept是在內核級實現的才行.
2. select :
在select處阻塞.
3. mutex/lock_file :
使用mutex或lock_file來進行對accpet進行互斥.
三種方法都要求進行阻塞, 區別在於阻塞與不同的地方. 前兩種方法都會由所謂的巨群問題: 多個阻塞在同一個資源上的進程被同時喚醒引發再次競爭. 不過, 按Richard Steve 的評測, 第一種方法最快, 第二種其次, 第三種最慢. 其實, 在linux上第三種方法也會有巨群問題.
Apache雖然並不強調性能, 這並不意味著他們不重視性能. 而是Apache認為在Server端realiable才是第一位的. 但Apache的性能還是不錯的.
⑨ Apache Flink是什麼
Flink其實就是Apache Flink,是一款業內非常火的大數據產品,由Apache軟體基金會開發,核心是用Java和Scala編寫的分布式流數據流引擎。Apache Flink是個旨在提供『一站式』 的分布式開源數據處理框架。
Flink以數據並行和流水線方式執行任意流數據程序,Flink的流水線運行時系統可以執行批處理和流處理程序。
此外,Flink的運行時本身也支持迭代演算法的執行。
雖然,spark和storm的計算框架非常成熟,但是Flink仍然占據了一席之地。
主要在於flink在設計event time處理模型上比較優秀:watermark的計算實時性高,輸出延遲低,而且接受遲到數據沒有spark那麼受限。
另外,Flink提供的window programming模型非常的靈活,不但支持spark、storm沒有的session window,而且只要實現其提供的WindowAssigner、Trigger、Evictor就能創造出符合自身業務邏輯的window,flink可謂功能非常強大。