漫談高鐵訂票系統的結構分析—觀念篇
我在網路上看了諸多評論「高鐵訂票系統」重複訂位相關問題的文章與討論串,大部分的 IT 人,謾罵聲不斷,認為該檢討承包系統開發的廠商;也有一小部份人提出自己的看法與建議的解決方案。這非常好,系統的不穩定性造成民眾的不便,本來就該有人監督,廠商也應該虛心接受眾多人所給予的建議。個人並不打算批判,以擔任軟體架構顧問的角度來看此事件時,先找出根本的問題是什麼,然後再提出具體的解決方案。我打算分兩篇文章論述,一篇為觀念篇;另一為實作篇。觀念部分,希望能就系統的結構性來探討;實作部分則會提出整個系統分析設計的過程與實作碼的產出,同時也打算模擬數千至數萬人同時訂票的情境與意外的處理,應該是盡量會接近原廠商所使用的平台(J2EE Solution)。當然,個人更是歡迎,若有機會,原廠商可以找我們過去聊聊,我們絕對很樂意效勞,也願意更進一步說明我們所診斷出來的問題,並且提供開出的處方為何。
一般看待高鐵訂票系統之所以出問題,原因有二:
- 經營者的看法與實際使用有落差:
持這種觀點的人,主要是著眼在經營者提出利用「飛機訂票系統」的觀念來實做高鐵的訂位,實際上並不恰當,飛機的訂位主要是預定「航班」,而實際的劃位則必須在各自的機場櫃臺進行Check-in,這與高鐵的座位預售,明顯有相當大的差距。 - 實做平台的考量上,未考慮到分散式交易:
這種看法大多是資訊專業人員的看法,也就是說,由於未考慮到各售票單位(包括櫃臺以及售票機)對於某一個已訂位的位置的交易,造成在同一時間內,多個售票單位可以販售同一個位置的現象,這主要是屬於「Transaction Lock」的問題。
事實上,這兩個問題都是存在的,然而,這卻不是造成高鐵訂票系統出問題的「主要原因」! 無論是持哪種看法,其實都是「見樹不見林」,忽略了整體軟體設計最重要的核心 – 「軟體結構」的問題。
先從第一個觀點說起:
使用者需求本來就是會不斷地變動,然而,身為軟體設計人員,在開始進行系統分析設計時,本來就應該要想到「使用者需求」是「暫時」的,然而,重點應該是在於軟體結構本身,能不能夠充分地配合使用者需求的變動而有所彈性;因此,把系統出問題怪罪到使用者需求的變動,是軟體設計人員的「墮落」!
從上述的例子來說,使用者雖然在一開始就提出了不正確的需求,但是,當管理者在上線前一、兩個月就發現了這個「重複訂位」的問題,軟體設計人員卻沒有辦法在這段期間內修復這個問題,這很明顯地,並非是單純的「需求變動」而已,勢必是整體的軟體結構發生了大問題,造成了「地基不穩」,以致於「挖東牆補西牆」,永遠沒有辦法確實解決這個問題。
再從第二個觀點來看:
Transaction 的問題,其實是資訊系統管理面「最基本」的問題,套用前述的觀點,怎麼有可能在一、兩個月前發現這個問題,卻拖了一、兩個月都沒有辦法解決,這也很明顯地,勢必是在結構上出了嚴重的問題,以致於根本沒有辦法對症下藥。
那麼,軟體結構究竟是出了什麼問題呢? 以下,我們就上述兩個現象分別來說明:
第一個現象主要是軟體的整體結構不夠穩定,而且缺乏彈性,因此,當使用者的「企業規則」(Business Rule)有所變動時,系統沒有辦法快速因應。
這很明顯地,是設計人員在設計系統時,並沒有針對企業的應用系統結構進行良好的分析,致使在捕捉系統的「本質性物件(Essential Object)」時,出了大問題。本質性物件沒有辦法捕捉好,自然而然對於整體系統的未來彈性,就很容易出嚴重的問題。什麼叫「本質性物件」呢? 其實就是無論企業的作業流程(Process Flow)或是企業的使用者需求(User Requirement)如何變動,但是其基本的結構都不會輕易改變的那些重要概念(Essential Concept),就是所謂的本質性物件。
我們以高鐵訂票系統為例,其本質性物件其實非常單純,我們以 UML 標準的 類別圖(ClassDiagram)來表達:
從這張圖中,其實就可以看出個端倪:
左下角的兩個物件:Seat 與 班次,主要是由高鐵人員自行維護的相關基本資料,然而,所有的重點應該在於「訂票交易」與「訂票Demand」這兩個物件上。
從訂票交易來說,其只要能夠提供起站及下車站給「訂票Demand」的物件,不管究竟是像飛機的依班次決定是否有空位;或是像現在高鐵實際營運的依特定座位決定是否有空位,其實,該訂票Demand物件只要回答「可不可以訂位」就可以了!
至於其實做的相關細節,應該都被隱藏在「Specific 班次」以及「SpecificSeat」兩個子型態(SubType)的物件中。
這樣設計的結構最大的好處是:
當我們發現未來高鐵的軟硬體設施真的如同飛機一樣,可以讓乘客先行訂位,之後才在各自搭乘的櫃臺進行「Check-in」以確認其真實的位置,此時,我們只要再重新「Plug-in」「Specific 班次」的物件到高鐵的訂票系統中就可以了!
至於第二個問題,則是整體 IT 結構規劃的問題。也就是說,由於沒有對整體的系統結構作一個有效的區分,而導致 系統面 與實際 問題領域(ProblemDomain) 面糾纏不清,大幅增加了整體應用系統的複雜度與管理成本。這個部分的問題,其實可以用 “Boundary-Control-Entity” 的 分析層次的設計框架 來予以解決。關於實作的相關設計議題,我們留待實作篇再來討論。
賴建宏
先前台灣IBM搞砸台灣高鐵的訂票系統, 我被公司外派過去替他們收爛攤的時候, 那些Marty Hsu、Simon Chen、Archer Hwang做不出來還每天都吠給一堆人聽, 說他們叫做IBMer如何怎樣, 都不做最後搞砸了整套系統, 還把責任亂推, 為了要封我嘴還找全勝文化、凌群、水啟動、耐特普羅的人來圍事, 才被我把他們最後簽收的文件、函給影印寄給一大堆公司、國內外政府, 比如 :
院首長電子民意信箱答復第100002246號
您好:台端陳述意見,本部已錄案參處。感謝您的來信。
部長 毛治國
如有任何疑問請回信至以下信箱:交通部民意信箱並可點選下方連結針對該陳情案填寫滿意度調查表:
http://pub.motc.gov.tw/public/intereyes/eyes00ee.nsf/0/6652258BF977F6274825785300305752?editdocument
我不清楚台灣的IT軟體業有什麼資格對著我這個非IT軟體工程師大放厥詞的, 反正現在都已經寄到不知道哪些國外機構政府去了, 就看台灣人的IT軟體業叫做什麼臉!!!
Kenming Wang
Hi, 您太激動了些,我也不太清楚您想表達的是? !^^
Kenming Wang
Hello Chen Youn Nan:
我是不會去區分何謂業務 or 技術;理論 or 實務的,真理是在哪裡,就看我們怎麼去認識、體認它而已。
學品管、學 CMMI/PMP 等,我更會憂心,因為軟體的那個 “根本” 都越來越少人重視啦,而反而從管理著手? 這不是很奇怪嗎?
Chen Youn Nan
Hello Kenming Wang:
真巧剛好有個女兒也讀小四,也很愛美術,射手座人緣好.
首先要感謝貴公司勇於提供許多資訊,讓我獲益良多,也要跟Wang老師承認,我是壞學生,觀念仍停留在上一代LKK的”結構式分析設計”.
所以UML等到現在都只局限畫看看,沒有實際運用,去年我也購買EA6.1,但就是沒去用,真的很對不起!
我原本計劃要學UML課程,今年先去上東海大學張文貴教授的”軟體專案核心技術文件”兩天,發覺自己欠缺更多軟體專業知識,依舊不會寫文件,
於是9月就參加26期的軟體品質保證師課程(SQA),發現同學不到12個,老師都感到台灣軟體界沒希望.
許多非常優秀的講師都飛到大陸去當講師,門庭若市滿坑滿谷的學員.學CMMI,學PMP,學SE一大堆.
祈望自己明年能順利考到生平第一張軟體品保師執照,好好救一救我們公司,不過課程中也沒有教如何寫文件.
知道有PMP/SDP/SRS/SDD/SQA/STP/SUM/STR….以及IEEE XXXX 與ISO….的龐大規範!還真難.
我並非技術出身,而是軟體業務(當年被許多同仁瞧不起的Sale),加上多年公司管理的失敗經驗,目前仍舊在努力學習中.
[以下是我們公司最近要去臺北醫學院某場次演講的大綱,供應平台是由”慧智達”公司設計 ]
預定2007/12/09發表,我代表公司支持慧智達公司產品與服務,同時更希望政府能大力參與並支持開發者的立場.
我的主題是:”社區藥局的資訊管理”,以我個人的內容公怖給後輩優秀的軟體從業人員,祈望能對台灣軟體業保持希望,
軟體產品能更上一層樓.
————————————————————————————————————————————————-
“社區藥局藥品供應平台及最佳服務模式試辦計劃成果發表會”-2007/12/09 下午3:00-先勁陳勇男經理發表”社區藥局的資訊管理” 大綱
壹.前言
感謝廖處長,王處長,王理事長,在座藥業前輩先進,讓我們先勁公司有機會參與這次成果發表會,同時也祝福試辦計劃能持續發展與擴大影響力,
幫助更多藥局與用戶達成計劃最終目標.
貳.先勁簡介
先勁公司成立於1996年,主要客戶以國內連鎖藥局,社區藥局為主,客戶群達1千餘家,遍佈台灣本島與金門澎湖.
自我介紹:
1991年當國喬電腦公司軟體銷售業務/主任/副理
1993年到龍王科技業務部當經理,推銷當時最熱門的通關自動化報關系統
1994年離職,當年又結婚,到處打工.
1995年母親生病住院,每天都在醫院照顧順便寫程式,進而成立個人工作室,第一個月營業額2840元賣出一張電腦辦公桌,
一年只賣兩套軟體共9萬多元收入,老婆在外當會計小姐月薪1萬8,養我一年.母親年底過逝.
1996年3月成立先勁資訊有限公司,年底客戶數超過百家
2007年客戶數已達千家
最慘的一次在2000年網際網路泡沫化,員工相繼離開,解散一家網路公司,借錢度日,好不容易苦撐過來.
參.市場現狀
1.傳統藥房逐漸淘汰,現代化藥局經營模式掘出.
2.重視藥師專業領域與企業管理.
3.以大吃小,以快吃慢,藥業財團化.
4.違反商業或道德,游走法律邊緣中南部地下電台與非法藥品.
5.藥師法規與健保問題,強烈影響藥局生計.
肆.資訊管理的角色
1.目前社區藥局的資訊管理開發商超過10家,搶食5000家藥局中的3000家(2000家仍未電腦化).
2.資訊系統以三大功能為主,分別為庫存,門市銷售,健保申報.
3.資訊系統演進早期以正確(庫存,毛利,營業額)為主,進化到精確(分析周轉率,目標達成率),到策略性RFM/CRM/最優化模式or 即時反應系統.
4.資訊系統要滿足使用者或老闆,進而服務顧客會員,金錢防弊預防員工犯罪,更高層次為協助增加藥師專業減少藥害,為社區民眾用藥安全把關.
5.資訊系統品質與服務,以ISO的PDCA為政策,重視軟體工程與風險,有永續經營的態度,用最高道德為用戶把關.
肆.願景
1.金門823砲戰之後,有一位服役在軍醫院的藥師,在太陽下山前用力地踩著腳踏車,急忙對巷弄的門牌號碼,一心一意要把中午醫官開錯劑量的患者找出來,免得出人命.
2.2003年的桃園某家地區醫院當月有個糊塗的藥師連續在一個月內包錯藥給3個患者,害老闆買水果出面道歉,嚇得在半年內結束藥局外包營業.
3.2007年更O醫院醫師給小孩用藥開錯劑量,超過N倍,讓醫院院長親自招開記者會道歉.
4.2007年11月,桃園某藥局,使用先勁系統,在調劑完印藥袋前,2微秒內畫面出現”藥品交互作用2級警告”,藥師印出要求患者至診所投訴改藥,免得出人命.
資訊系統願景是要學習英國,早已在2000年左右,在醫師與藥師的操作系統上加上專業的藥物調劑警示系統,經由年齡,體重,溫度,身份(小孩/孕婦/老人),藥品交互作用等,
成功把開錯藥,開錯劑量,包錯藥等錯誤率降至最低.而且有經費不斷改良精進.
肆.建言
1.希望政府相關單位不同計劃(一致性)能夠服務最終顧客,即是民眾.
2.開放醫療藥業資訊系統或資料庫等專案申請,以利專業開發公司能夠協助政府服務最終顧客,即是民眾.例如:藥品交互作用資料/藥袋警語外觀等網站資源.
3.把資訊服務另外給予相關業者實質或實際獎勵措施,讓業者能更投入更多資源與資金,為藥業服務.
Kenming Wang
Hello Chen Youn Nan:
正因為個人相當注重軟體的品質,甚至我可能比一般人重視的程度還更甚者呢。
也因為如此,我才花了如此多的時間花在軟體結構的設計思考上—它正是影響軟體品質的最根本所在。但因為它是隱性,使得軟體人員,包括 PM,看不出它的精髓,而以為影響軟體品質好壞在於專案管理上。
對於什麼是架構、結構,設計文件、專案管理等議題,個人倒是也有一番研究,若您有興趣,我倒是很願意與擔任資深系統開發的您交換心得。 畢竟,我們應該理念都是一樣的—軟體的滿意度與品質有關,個人深表贊同的。而這也是我為什麼花了如此多的時間在架構、結構等設計思考上。可惜,一般系統分析與專案管理者對此知之甚微,這要花上太多時間來研究、學習、體悟等,業界太過重視速食文化了,包括一般表象專案管理。
您真的有興趣討論此議題,真的我很樂意與您見面與您討論的,甚至,若有貴單位可以提出的系統分析或者您所提的承包商品保設計文件等,我倒是可以提供一些看法的,我想我應該分辨得出該設計文件的假設點、好壞甚而真偽的。
非討論空談而已,若您認為我這邊是可以經過 “Certified” ,當然,見面對談就可以得知這一點的。我更是樂意有機會能與您一起合作的,我相信,既然我們都重視品質的話,應該是能開發出高品質的系統。 🙂
Chen Youn Nan
高鐵的售票系統另一面見解:
聽說當初高鐵歐洲顧問公司要求高鐵的售票系統承包廠商,要寫許多文件,其中包括{軟體品質保證計劃書 },
但該公司外包給國內某家顧問公司撰寫英文版的品保書,所以歐洲顧問很滿意這份品保計劃書,首先第一個通過,
接下來國內顧問公司問高鐵的售票系統承包廠商是否要導入此軟體品保流程,卻被高層拒絕!
敝人開發系統長達13年之久,一直在追求最新的技術與架構,最新才去上軟體品質保證的課程,
發現過去常常因為時程問題趕工,沒有留下必要的文件,沒有充分的測試,更沒有品質計畫….,
讓bug一直存在且曾經造成3套軟體上市失敗,讓公司損失金額達五六百萬,產品推出時間延宕長達3年,
由此可見軟體開發不僅是技術或架構層次,也是軟體工程所謂:品質成本,當預防成本與鑑定成本=0,則將來的失敗成本就是個災難!
您的見解也許專注在技術面,但是忽略一點,軟體的設計仍然忽略不了品質,高鐵的問題,損失的金額應該超過千萬以上,
如果您是老闆,或是高層主管是否更需知道,軟體的滿意度是跟品質有關.
anita
網路訂票爛透了
不知怎麼能弄到這麼爛
同樣是網路訂票
台鐵的系統用起來順暢人性
這個高鐵真不知如何去形容
訂了半個多鐘頭都顯示系統忙碌
要這些人幹什麼???
還不如給國家省點錢算了!!!!!!!!!!!!!!!!!
stevenchen
I will be there.
Adempiere
http://sourceforge.net/forum/forum.php?forum_id=629818
Welcome Adempiere Multi-Language forum…
Chinese forum
Adempiere
Please google key word
[Sourcefroge][Adempiere]
sourceforge.net/projects/adempiere
我們是Sourcefroge中最閃耀的開放源碼專案
Then chek forum Language chinese
這是我們JavaBase SOA-ERP/CRM 的家
全球視野的溫馨小館
我們有十多國的語系
歡迎你共同探討
熱烈歡迎
StevenChen 大師
管理科學在資訊應用領域
哲學家
亞伯.陳
敬上
SourceForge.net: ADempiere Bazaar-
Adempiere is an ERP Bazaar for Open Source Developers that contribute improvements of Compiere, CRM, Shopfloor, POS, Helpdesk, Financials Accounting, Supply Chain, Knowledge and Business apps in an open and unabated fashion. …
stevenchen
To Adempiere:
如果您還有興趣繼續討論的話,找個其它專業的討論區,或者貴公司有沒有什麼討論的平台,post出來,我們再來討論,比較不受打擾
Kenming Wang
Hi stevenchen and Adempiere:
沒想到我也不自覺地捲入兩位的爭論中,這可非我所願。
stevenchen 可能不覺得這是筆戰,若是言之有理,也不需要捍衛自己的觀點。說起來有道理。不過,我也說過,文字很容易引起片段式的誤解,還有,我很清楚討論的主題早已失焦了,這點 stevenchen 可能也是不以為然。
我其實也不是認同 Adempiere 所提的 SOA,不是不能使用 SOA,但會是 Web-Service 與 實體系統虛與實的互補,但是這以幾百個字來說明並不好解釋。而至於拿 SOA 與 Thread 來比較,這我覺得很奇怪,兩者完全是不同的層級,不同的觀點,實在無法相提並論的。
我曾經邀請 stevenchen 面對面的討論,不過沒有得到任何回應,我也希望 Adempiere 可以一起與會,大家可以就自己的想法、建議與解決方案彼此交換心得,我會覺得這會是更正面有助益的事,否則落於文字的辯論,實在很抱歉,我個人是比較覺得意義不會太大。
至於兩位的討論,我真的希望能轉移至:
http://www.hsdc.com.tw/modules/newbb/viewtopic.php?topic_id=260&forum=10
讓更多的網友們參與討論。 🙂
Adempiere
我們喜歡溫文儒雅的爭辯
我們會說對你的用心有高度的讚賞
我們會說對你的天賦有高度的景仰
我們會說對你的方向有參考的價值
我們會說對你的細節有不同的方法
機械工程師需要機械製圖師來展現機械工程的方向
軟件工程師需要UML製圖師來展現軟件工程的方向
向 RationalRose 致敬
向 UML製圖師 致敬
以前系統是 Client端的ㄧ個session
去新增與更新 ㄧ至多個Table
SOA 是 Client端的ㄧ個session
只登錄他的 Request 在 專屬的前台伺服器上
後台主動服務主機會依序服務每一個前台伺服器
需注意的是
每一個物件(Table)的Update(更新)
僅屬於一個主機的一個Thread
========================
請參照提款機的方法
更新台新銀行的存款餘額
請問可以由中華銀行的提款機
專屬的前台伺服器系統來做嗎 ?
stevenchen
==>我並不喜歡筆戰,也不喜歡就各自的觀點去捍衛與辯論,從文字對談當中,太容易引起誤會與不必要的不愉快了。
呵呵
討論到最後何時開始變成筆戰了!?…
每個人都有自己不同的觀點
這些觀點大家不一定一樣
所以才要提出來大家交換意見
這是大家就事論事討論,
只要是
===================
“言之有理”,”言之有物”
===================
自然就不用去捍衛與辯論什麼
如果提出的觀點是要用捍衛與辯論來維護的話
那可能就是這個觀點很難讓人認同吧…
至於我列的那四點,是從您的文章中節錄下來的,不是”我”的期望,我是沒有什麼期望啦,所以您的實作自然就不是照著”我”的期望去做的,所以不要想太多,您能暢所欲言就好了
這
就是我真正的想法
Kenming Wang
Hi stevenchen:
我並不知道你真正的想法是什麼。我在文中提出會有具體的實做產出,不過,那並不是為了別人,是我們認為該做的,如是而已,所以,是否有哪些內容,那並可不一定要照你所列出的期望。
我會以為,stevenchen 你個人有自己的想法,有自己關心的實做議題,那相當好。我更會建議其實 stevenchen 可以提出自己的見解與解決方案,那會是好事。
我並不喜歡筆戰,也不喜歡就各自的觀點去捍衛與辯論,從文字對談當中,太容易引起誤會與不必要的不愉快了。
不過,若是 stevenchen 你真的有高度興趣於此話題,不妨可以約在研討會結束後,可以相互交換一些看法與觀念,這我個人是相當歡迎,因為,直接從面對面的對談當中,比較容易可以知道對方的假設點與觀點,也比較不致容易引起誤解。
stevenchen
不知實作篇何時出爐?
在觀念篇中有提到,原文如下:
==>”實作部分則會提出整個系統分析設計的過程與實作碼的產出,同時也打算模擬數千至數萬人同時訂票的情境與意外的處理”
所以實作篇中應該會有這些內容:
1.整個系統分析設計的過程
2.實作碼的產出
3.打算模擬數千至數萬人同時訂票的情境
4.意外的處理
不知道我這樣有沒有斷章取義,至少我是照原文copy的…
相當令人期待的內容,引領期盼中…
Kenming Wang
Hi stevenchen:
>說實在,我不認為這是屬於”系統層級底層”的議題,這主要是server端的軟體架構與程式實作相關的議題
yes, 你說的沒有錯,這是 server 端的軟體結構與實做相關的議題。不過,這與我所說 “系統層級底層” 的實做與設計議題,好像沒有衝突喔。 🙂
後述你所提的,當然更是在實做最為嚴肅與實在的現實問題了,個人可從來沒有輕忽與會給簡單帶過的。
但是,需求、軟體結構(請注意,是源自 domain concept)、實做這三環,是缺一不可,我這一篇文章,旨在凸顯軟體結構的重要性,這點我在諸多 IT 人員的論述中,都不容易看得到。
非常歡迎 stevenchen 有機會參與我們所舉辦的研討會時見面討論,畢竟,片段式的文章太容易引起誤解了。
stevenchen
==>We call web-service is from Clinet-Side
==>can be a c++GUI/ javaGUI /dotNetGUI / ==>Point of Sale / Browser
這就應該有救了…
==>Yes, we do.
==>(Not me only, web server is our ==>product,base on JBOSS with IBM’s American ==>RD after our world-wide team work we ==>revolution and extend for SOA)
既然這是你們的產品,那就更有救了
就看你們的功力了….
==>I know you must a SMART Profesor
錯!! 我是一個退休多時的工友了….
==>To stevenchen:
==>這是屬於系統層級底層的細部設計思考議題…
說實在,我不認為這是屬於”系統層級底層”的議題,這主要是server端的軟體架構與程式實作相關的議題
==>才能達成彈性應變、穩定、效能等諸多需求。
以實作的觀點來看,這是何等沉重的用語,而且是一個比一個沉重,真的是”說時簡單作時難”阿…
不過真的是不錯,有人能提出這樣的議題,就待您的大作詳解了,期待中….
Kenming Wang
Hello stevenchen and Adempiere:
我在 HSDc 的論壇,也放了同樣一篇的文章,兩位的意見,可以至:
http://www.hsdc.com.tw/modules/newbb/viewtopic.php?topic_id=260&forum=10
讓更多的網友們參與討論。 🙂
To Adempiere:
可以思考看看,高鐵是否是 OLTP 性質的系統? 若是,那麼它適合 “loose” or “tight” coupling 的連結方式? 再來看, “web service” 是屬於 “loose” or “tight” 的性質呢?
To stevenchen:
這是屬於系統層級底層的細部設計思考議題,在細部設計的議題,是需要考量到所使用的平台特性與如何 “善用” 其特性;而個人這篇文章,是偏向於高階設計的議題,也就是結構性的設計可量。
兩個層次的設計,在實做的議題中,必須要能互補,才能達成彈性應變、穩定、效能等諸多需求。
Adempiere
We call web-service is from Clinet-Side
can be a c++GUI/ javaGUI /dotNetGUI / Point of Sale / Browser
這樣web server肯定是更忙,
最後造成的是一個惡性循環,
直到web server掛掉為止…
You are Right..
或許你可以改善web server的硬體與參數的微調,
但終究效果有限,這只是隔靴搔癢而已,
總之web server的performance不是你能左右的,
除非這個web server是你寫的,
不過這就更不可能了…
Yes, we do.
(Not me only, web server is our product,base on JBOSS with IBM’s American RD after our world-wide team work we revolution and extend for SOA)
I know you must a SMART Profesor.
stevenchen
==>有你真好
這是謬讚了…
==>We have many site’s WebService accept ==>Regist and Insert Request table…
==>Each train’s SOA check Request allocate ==>seats table.
==>Then client call WebService again check ==>allocated seats…
web service 是個非同步的做法,用這樣的做法來處理這種”有點”需要即時的東西(其實這種系統離真正即時還差遠了),基本上會有兩個地方會有performance的issue,如果client所call的web service是藉由網頁的話,那提供這個web service的提供者應該就是web server,web server的performance就是第一道難關要過,系統一忙,response time越久,client端就越不耐煩,越不耐煩就一直按reload再次發出request,這樣web server肯定是更忙,最後造成的是一個惡性循環,直到web server掛掉為止…
或許你可以改善web server的硬體與參數的微調,但終究效果有限,這只是隔靴搔癢而已,總之web server的performance不是你能左右的,除非這個web server是你寫的,不過這就更不可能了…
所以說實在,以我的觀點,web service並不太適合做這樣的事情,這就有點像要用腳踏車上高速公路,實在是太冒險了…
Adempiere
Dear Stevenchen :
You are a really good partner for SYSTEM revolution…
Welcome Skype AdempiereTaiwan
有你真好
We have many site’s WebService accept Regist and Insert Request table…
Each train’s SOA check Request allocate seats table.
Then client call WebService again check allocated seats…
stevenchen
==>Each Train total seats is fix, why can ==>get more work…
==>No.Busy
1.忙不忙”最主要”不是決定在request(在此是座位)的多寡或者固定,而是”會不會同時發生”!!
這就是即時系統與一般非即時系統的差別!!!!
一節車箱大概有30幾個位置吧?那一輛火車10個車箱,就有3百多個位置可以賣,那如果全省有三百多個人”同時”來搶買這班火車的的座位,一個thead同時service 300多個request,忙不忙?
所以平常系統不是都好好的,只是”每逢佳節必當機”,不是嗎?
============================================
這個才是真正考驗系統架構與程式實作技巧之決勝點!!!
============================================
2.這樣的做法,thread”可能”的忙碌程度會隨著一輛火車所加掛的車箱數增加而提高,會有這樣的問題.
3.同樣的一個thread就代表一台火車,thread的數目會隨著火車的數目增加,在擴充性是個可能的隱憂.
==>Use SOA Please Don’t Lock data
==>Because each train belong one SOA thread,
==>Only this thread can update this table,
==>Why need Lock table,
==>You know data-lock is heavy duty for a ==>database…….
1.這樣的做法只是把lock的動作從database拿出來,拿到thread這個地方來控制同步的動作,這是對的,因為需要同步的系統總是要有一個地方在控制同步的動作,而這個動作交給database是最不明智的選擇,只是交給SOA的thread是否是明智的選擇,這我就不知道了,因為我沒有”操過”SOA的thread….
同步的這個動作,交給database與交給SOA thread來控制,對我來說,其實都一樣
==>反正就不是我在控制的,換句話說,它們的performance也不是我所能左右的,而那這樣重要的東西交給別人…
會不會太冒險了一點….
Adempiere
精細的流程展現
無法解決錯誤的架構
錯誤的高速公路交流道規劃
無法用施工品質來解決錯誤的規劃
十哩路程才ㄧ出口/入口(Highway Exit/Entrance)
因為不是到處有
出口/入口車潮ㄧ定長又長
假如到處有出口
簡易下坡出口何需大S
錯誤的高速公路交流道規劃
無法用施工品質來解決錯誤的規劃
SOA 不是 WebService + XML + UML
是
車次座位起訖張數登錄 WebService Function
等待SOA 主動分配
取得分配 WebService Function
等待收現/刷卡/轉帳 Client Work-Station
收款確認登錄 WebService Function
SOA 主動將分配中轉到收款確認
Adempiere
Use SOA Please Don’t Lock data
Because each train belong one SOA thread,
Only this thread can update this table,
Why need Lock table,
You know data-lock is heavy duty for a database…….
祝你年年賺大錢
Adempiere
那班自強號,某個server的某個thread一定會很忙吧
No,
Each Train total seats is fix, why can get more work…
No.Busy
Sir..
stevenchen
我覺得自從這次高鐵的售票系統出包之後,網路上就有不少IT的業者就軟體的觀點提出它們的見解,不過我覺得大家好像都沒有真正切中問題的核心:
系統為什麼當掉?
很多人想到database Transaction Lock 與 loading 的 issues? 對,多數人都只看到這一層,Transaction Lock 的確是會讓系統看起來好像是當掉,但事實上一開始只是不會動,最後因為積了一大堆的Transaction程式才有可能當掉,問題是Transaction Lock解決了之後系統就不會當了嗎?是嗎?
database loading 太重時,系統看起來反應慢到好像當掉,最後真的有可能會因為這樣的原因真的當掉,那怎麼辦?
換更快的機器?
調database的參數?
如果這樣loading還是太大!? 那怎麼辦?
Adempiere提到:
Where is AP Server – SOA each Server for each Day and each thread for each train….
那負責除夕那天下班後的那班自強號,某個server的某個thread一定會很忙吧? 會不會忙到反應也像是當掉一樣的慢呢?
不過至少算是看到另一層面的解法了…
Adempiere
Do right thing better than
Do thing right
機械製圖無法指導汽車工程的方向
UML製圖無法指導軟件工程的方向
昆蟲 你想太多了….
錄音師無法取代歌手
好好畫圖
容易溝通
不然 Rose 早幹掉 BEA / SAP / Oracle
Kenming Wang
Hi 昆蟲先生:
我這一張 UML 結構圖是表達的 “單純”,但本身並不簡單喔。光是這個: 班次 – Specific班次, 其深意您倒是可以思考解讀看看,看看是否能用實際的 instance(個體) 來解釋。
還有,當然也不是用那麼四個類別就可以解決訂票的結構問題,該系統可能會需要有上百個類別。但問題是,若最核心的部分都有問題的話,其它的還用談嗎?
我到很希望,只要就這四個類別,來確認高鐵是否也有類似於此的結構?(我的推測應該是沒有)。至於其它的衍生類別,說真的,要長出來百來個不是什麼難事的。
昆蟲
我看了一下 UML 圖,老實說,英文有句話 The Devil is in the Detail. 要用一個簡單的 UML 去找出高鐵軟體問題是不可能的。(何況他們的 UML 可能會完全不同於你的圖)
高鐵不是六個月完成的,但是發現訂票軟體的問題像是「一覺醒來,什麼都不對了。」
硬體做得那麼好,訂票軟體做得那麼爛,不是很奇怪嗎?
Adempiere
We are the first place of
JavaBase OpenSource SOA-ERP/CRM
in SourceFroge……………..
用UML畫出Client主動更新車次座次表
哪是想要提款機想主動更新銀行主機帳戶金額
會死得很慘
不是 Data Lock Only
Where is AP Server – SOA each Server for each Day and each thread for each train….
Make right thing better than
Make thing right
Kenming Wang
Hi PiPPen:
是否採用 Cluster & MQ,在測試的實作,其實沒那麼必要,那算是效能上測試的範疇。而現在最為重要的,反而是驗證結構與交易處理機制的測試。
不要一次把所有的議題全給考量進來,那反而會失焦,而沒有真正凸顯出重點來。