Suche senden
Hochladen
排隊應用開發
•
Als PPTX, PDF herunterladen
•
18 gefällt mir
•
4,493 views
建興 王
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 47
Jetzt herunterladen
Empfohlen
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
建興 王
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene
建興 王
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統
建興 王
執行緒與並行API
執行緒與並行API
Justin Lin
輸入輸出
輸入輸出
Justin Lin
Javascript进阶编程
Javascript进阶编程
iflytek
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
imShining @DevCamp
Empfohlen
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
建興 王
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene
建興 王
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統
建興 王
執行緒與並行API
執行緒與並行API
Justin Lin
輸入輸出
輸入輸出
Justin Lin
Javascript进阶编程
Javascript进阶编程
iflytek
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
imShining @DevCamp
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
Microsoft recommendation solution on azure
Microsoft recommendation solution on azure
Duran Hsieh
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
guestf4730f1
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
Jou Chen
第一次準備病例報告就上手
第一次準備病例報告就上手
人瑋 劉
住院病歷書寫 錄音檔
住院病歷書寫 錄音檔
Pei-chun Kuo
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
建興 王
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
建興 王
在雲端上啜飲爪哇
在雲端上啜飲爪哇
建興 王
Mahout資料分析基礎入門
Mahout資料分析基礎入門
Jhang Raymond
REST to RESTful Web Service
REST to RESTful Web Service
家弘 周
How I learned to stop worrying and love the cloud
How I learned to stop worrying and love the cloud
Shlomo Swidler
第09章 排序(java版)
第09章 排序(java版)
Yan Li
排队论及其应用浅析
排队论及其应用浅析
frogd
Chapter2
Chapter2
Fang-Ling Lin
Simple Rule Agile China 2009
Simple Rule Agile China 2009
JohnnLi
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
drewz lin
Elastic stack day-1
Elastic stack day-1
YI-CHING WU
Weitere ähnliche Inhalte
Was ist angesagt?
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
Microsoft recommendation solution on azure
Microsoft recommendation solution on azure
Duran Hsieh
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
Was ist angesagt?
(6)
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
資料永續與交換
資料永續與交換
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Microsoft recommendation solution on azure
Microsoft recommendation solution on azure
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Andere mochten auch
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
guestf4730f1
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
Jou Chen
第一次準備病例報告就上手
第一次準備病例報告就上手
人瑋 劉
住院病歷書寫 錄音檔
住院病歷書寫 錄音檔
Pei-chun Kuo
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
建興 王
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
建興 王
在雲端上啜飲爪哇
在雲端上啜飲爪哇
建興 王
Mahout資料分析基礎入門
Mahout資料分析基礎入門
Jhang Raymond
REST to RESTful Web Service
REST to RESTful Web Service
家弘 周
How I learned to stop worrying and love the cloud
How I learned to stop worrying and love the cloud
Shlomo Swidler
Andere mochten auch
(10)
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
C:\Documents And Settings\User\桌面\Sciece Talk投影片\Science Talk 100111 陸行
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
《搶救珊瑚大作戰》新北市專題寫作比賽決賽PPT
第一次準備病例報告就上手
第一次準備病例報告就上手
住院病歷書寫 錄音檔
住院病歷書寫 錄音檔
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
在雲端上啜飲爪哇
在雲端上啜飲爪哇
Mahout資料分析基礎入門
Mahout資料分析基礎入門
REST to RESTful Web Service
REST to RESTful Web Service
How I learned to stop worrying and love the cloud
How I learned to stop worrying and love the cloud
Ähnlich wie 排隊應用開發
第09章 排序(java版)
第09章 排序(java版)
Yan Li
排队论及其应用浅析
排队论及其应用浅析
frogd
Chapter2
Chapter2
Fang-Ling Lin
Simple Rule Agile China 2009
Simple Rule Agile China 2009
JohnnLi
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
drewz lin
Elastic stack day-1
Elastic stack day-1
YI-CHING WU
求职经验分享 by Henry Ma
求职经验分享 by Henry Ma
prancema
Sth. about Job Hunting in IT by Henry Ma
Sth. about Job Hunting in IT by Henry Ma
prancema
01_智慧英文評分系統 Evaluate Student Summaries
01_智慧英文評分系統 Evaluate Student Summaries
IttrainingIttraining
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
柏亨 盧
一淘广告机器学习
一淘广告机器学习
Shaoning Pan
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
Will Huang
從乙方PM的角度看敏捷
從乙方PM的角度看敏捷
KC Liu
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
Shuyong Lin
服务计算:现状,思考与建议
服务计算:现状,思考与建议
IBM
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practices
FEG
美团前端架构简介
美团前端架构简介
pan weizeng
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
RolfZhang
Ähnlich wie 排隊應用開發
(20)
第09章 排序(java版)
第09章 排序(java版)
排队论及其应用浅析
排队论及其应用浅析
Chapter2
Chapter2
Simple Rule Agile China 2009
Simple Rule Agile China 2009
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
Elastic stack day-1
Elastic stack day-1
求职经验分享 by Henry Ma
求职经验分享 by Henry Ma
Sth. about Job Hunting in IT by Henry Ma
Sth. about Job Hunting in IT by Henry Ma
01_智慧英文評分系統 Evaluate Student Summaries
01_智慧英文評分系統 Evaluate Student Summaries
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
一淘广告机器学习
一淘广告机器学习
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
從乙方PM的角度看敏捷
從乙方PM的角度看敏捷
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min 中文
服务计算:现状,思考与建议
服务计算:现状,思考与建议
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
2023 Decision Tree analysis in business practices
2023 Decision Tree analysis in business practices
美团前端架构简介
美团前端架构简介
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
Mehr von 建興 王
Introduction to C++ over CLI
Introduction to C++ over CLI
建興 王
開放原始碼的回收與再利用
開放原始碼的回收與再利用
建興 王
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
建興 王
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
建興 王
Dev307
Dev307
建興 王
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式
建興 王
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
建興 王
Mehr von 建興 王
(7)
Introduction to C++ over CLI
Introduction to C++ over CLI
開放原始碼的回收與再利用
開放原始碼的回收與再利用
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
Dev307
Dev307
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
排隊應用開發
1.
排隊應用開發 王建興 qing.chwang@gmail.com
2.
排隊在生活中無所不在
3.
講者簡介 • 現職 – 聖藍科技技術長 •
興趣 – 網路應用系統開發 • 譯作 – Thinking in Java 4th Edition, 正體中文版 – Thinking in Java 2nd Edition, 正體中文版 – Essential C++, 正體中文版 • 專欄 – iTHome 電腦報程式人專欄 • 連絡方式 – qing at gmail.com – qing_wang at twitter
4.
綱要 • 何謂佇列 • 為什麼需要佇列 •
排隊理論 • 佇列的應用 • 案例探討 • 高效工作佇列beanstalk • 結論
5.
何謂佇列(Queue)? • 佇列(Queue)是一種能依序存取其中元素 的抽象資料結構 – FIFO
Queue – Priority Queue • 在佇列上的典型操作 – Enqueue(塞進佇列中) – Dequeue(自佇列中取出) – *Peek(窺看佇列中的第一個元素)
6.
Java內建的Queue • java.util.Queue – 典型先進先出的FIFO
Queue – 尾進頭出 • java.util.PriorityQueue – 非FIFO存取原則 – 依照物件的 “natural ordering” 或自定排序方式 決定優先序的佇列 – 自定排序透過Java的Comparator介面指定
7.
Java中Queue的變形 • Blocking – BlockingQueue –
PriorityBlockingQueue • Double Ended Queue – Deque • Delay – DelayQueue – 儲存java.util.concurrent.Delayed • Synchronous – SynchronousQueue
8.
In-Process Queue • Queue
和 Queue 的客戶端程式位在同一個 行程中 • 客戶端程式毋需透過任何通訊協定或IPC的 方式來對Queue做操作 • 儲存於Queue中的資料,通常不需要做 serialization和deserialization • 像Java collection API中的Queue族系都是屬 於In-Process 的 Queue
9.
In-Process Queue的應用優缺 • 優 –
低額外負擔:不需要額外的傳輸、不需要跨行 程的資料處理負擔 – 單純:沒有獨立的伺服器需要管理 • 缺 – 較難擴展規模 – 受限在單一機器的資源(CPU, RAM, Network, …)
10.
Network-based Queue • Queue
和 Queue 的客戶端程式不位在同一 個行程中 • 客戶端程式需透過特定的通訊協定或IPC的 方式來對Queue做操作 • 儲存於Queue中的資料,需要做serialization 和deserialization
11.
Network-based Queue的應用優缺 • 優 –
有機會透過增加 Queue 的數量來擴展規模(增 加 CPU, RAM, Network, …) – 多個 Queue 之間可相互備援,以容忍系統異常 及錯誤 • 缺 – 額外負擔較大 – 系統複雜度較高
12.
為什麼需要佇列? • 演算法中需要儲存資料的資料結構 • 資源的最佳化配置 •
跨行程的通訊
13.
做為演算資料結構的Queue • Queue是演算法中十分常用的資料結構 • Graph
Traversal – BFS (Breadth First Search) – FIFO Queue • Prim’s Algorithm for Minimal Spanning Tree – Priority Queue
14.
用於資源最佳化的Queue • Queue 是一種在提供服務的成本以及使用擁 塞的代價之間取捨達成平衡的機制 •
例:Job Queue – 工作在Queue中排隊等待可用資源 • Queue提供緩衝的作用 • 因為資源的使用有高有低,透過Queue可緩 衝對資源的使用,使資源運用最佳化 • Queue提供排程的機制,可依重要性運用資 源
15.
Producer-Consumer *http://vichargrave.com/multithreaded-work-queue-in-c/producer-consumer-model/ • Producer 可以是
client request,而 Consumer 就成了可以處理 request 的 server 了
16.
Producer-Consumer • 用FIFO Queue來解決生產及消費速率不匹配 的問題 *http://blog.eyasranjous.info/2013/04/14/using-the-producer-consumer-java/
17.
用於跨行程通訊的Queue • 位在不同行程、甚至是不同機器上的程式 ,可以透過Queue來交換訊息
18.
用於跨行程通訊的Queue • 即使主要目的是跨行程的通訊,但是這還 是個 Producer-Consumer
的模型
19.
排隊理論(Queuing Theory) • 排隊理論是用數學的方式研究等候線或佇 列的排隊 •
排隊理論透過建構模型的方式來預測佇列 的長度、排隊所需的等候時間、以及排隊 的公平性
20.
排隊模型的參數 • 服務請求到達的規則 – 像是請求到達的機率分布方式 –
簡單的例子,像是平均多久一個請求到達 • 完成請求之服務時間的規則 – 像是完成請求之服務時間的機率分佈方式 – 簡單的例子,像是平均多久完成一個請求 • 總共有幾個伺服器 • 總共有幾個佇列 • 決定服務請求的方式 – 先到先服務、後到先服務、隨機服務、高優先權者先 服務…
21.
22.
排隊模型示意 *http://www.cmg.org/measureit/issues/mit58/m_58_15.html
23.
資源配置及服務品質 • 前言:Queue 是一種在提供服務的成本以及 使用擁塞的代價之間取捨達成平衡的機制 •
想要提升服務品質,即降低擁塞的代價 – 增加 Server 的個數 • 想要降低提供服務的成本 – 減少 Server 的個數 • 相衝突的目標之下,只能取捨一個平衡點
24.
佇列在系統上的應用 • 當資源有限時,利用佇列來更妥善的運用 資源,平衡資源配置量及服務品質 – Job
Queue • 透過佇列的機制,來簡化跨行程之系統組 成的溝通 – Message Queue
25.
Job Queue • 在軟體系統中,所謂的
Job Queue (工作佇 列)是一個由工作排程器(Job Scheduler) 所維護的資料結構,其中內含待執行的工 作 *http://zeroproductionincidents.wordpress.com/category/web-architecture/process-model/page/3/
26.
Message Queue • 所謂的Message
Queue(訊息佇列)是一種 用於以下用途的軟體元件 – 跨行程通訊 – 同行程中跨執行緒的通訊 • Message Queue 中所儲存的就是用來通訊的 訊息內容 • Message Queue 的通訊本質是非同步,所以 訊息的發送者和接收者毋需在同時間連線 方能進行互動
27.
Message Queue *http://docs.wso2.org/wiki/display/MB201/Queues
28.
Queue 的本質 • 非同步 –
Producer/Consumer 或 Sender/Receiver 不需要 同步互動 • 緩衝 – 提供一個緩衝空間來暫存 • 標準化的溝通界面
29.
Decupling System Components •
Message Queue/Job Queue 衍生出來的好處 • 透過Message Queue/Job Queue 溝通系統中 的不同組成 • 各組成可跨行程、跨主機 • 各組成可跨語言 • 容易擴展規模
30.
案例探討 Event Log 的收集及分析系統
31.
Event Log 的收集及分析 •
有一些系統,有大量的客戶端需要向系統 回報數量龐大的log資訊 • 例-:行車記錄系統 – 不斷的向系統回報車速GPS座標甚至是即時上 傳車上攝影機所拍下的照片 • 例二:廣告使用者行為追蹤系統 – 收集使用者在頁面上的行為,以便分析使用者 的偏好,進而做廣告投放呈現的參考
32.
可能的系統架構 httpd EvetLogServlet Log
Datastore LogAnalyzer
33.
可能會有的效能問題 • 同時太多並行的請求時,會有大量的執行 緒被產生出來以執行 Servlet
的處理程式 • 對資料庫的寫入動作會是重要的瓶頸 – 每秒一萬筆的資料更新? • 太多執行緒在等待資料庫可寫入 – 執行緒存在時間拉長,資源佔用時間拉長,佔 用更多的資料(CPU, Memory, Socket, …) – 客戶端的請求等待回應的時間也變長
34.
嘗試擴展規模? httpd EvetLogServlet Log
Datastore LogAnalyzer … … Load Balancer
35.
導入Job Queue … … EvetLogServlet DatastoreJob
Queue Worker
36.
多層的緩衝 … Raw DatastoreJob Queue Worker
Worker Report Datastore
37.
多層緩衝的實作 … Cassandrabeanstalkd Java Worker Java Worker MySQL
38.
同事的惡搞 • 同事:這比較像這兩年流行的架構
39.
beanstalk • Beanstalk 是個簡單、快速的工作佇列 •
許多需要執行耗時、緩慢工作的 Web 應用 程式都利用它來在背景執行這些工作 • 使用libevent,而在server-client之間師法 memcached的通訊協定,藉以得到很高的 性能 • 將任務儲存在主記憶體中
40.
beanstalk的效能 *http://adam.heroku.com/past/2010/4/24/beanstalk_a_simple_and_fast_queueing_backend/
41.
beanstalk 的特性 • 輕量化、高效 –
輕量化的通訊協定 – 將工作資訊儲存在記憶體中 • 工作具有優先序 – 支援 32 bits 的優先序表示 • 可將工作永續化 • 分散式容錯能力 • 逾時工作的控制 – 若consumer逾時無法完成工作,則工作會被從 RERSEVED狀態移回READY,供其他consumer繼續處理
42.
beanstalk 中工作的狀態
43.
beanstalk 的 Java
Client • beanstalk 有支援多種語言的客戶端 • Java 版客戶端TrendrrBeanstalk – https://github.com/dustismo/TrendrrBeanstalk
44.
選擇 Queue 實作的考量因素 •
傳輸的額外負擔 • 儲存的媒介 – 是否具備永續性 • 安全性 – 傳輸的安全性 – 儲存的安全性 • 容錯能力 • 擴展規模的能力
45.
設計就是在做取捨 • 使用beanstalk就是求快 • 選擇犧牲 –
安全性 – 容錯能力 – 永續性 • 對於一個處理關鍵交易工作的工作佇列, 你或許不會考慮使用beanstalk
46.
結論 • Queue 是系統設計時不可或缺的要素 •
透過 Queue 可以得到若干好處,尤其是改 善資源的利用效率
47.
Thanks
Jetzt herunterladen