深藍色心情

          過來聊聊~~~~

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            31 Posts :: 0 Stories :: 46 Comments :: 0 Trackbacks
          我們主要是web應用,web規模也不能確定,有可能一天幾千萬甚至上億的PV,也有可能根本沒人用。最初設計guzz的目的就是讓大型網站和小型網站一樣設計編寫,因為誰也不知道這個應用上去以后有多少人用,同時解決系統被要求頁面天天改來該去的問題。 

          使用guzz以來的效果: 

          1. 框架性能上沒有看得出的快慢區別。我覺得不會比hibernate和biatis慢,我看過他們的一些代碼,流程挺復雜的。guzz很簡單,整個持久化過程需要轉手的類至少要比這兩個少很多。 

          2. 以前我們用hibernate較多,一般數據庫設計就是一個庫,讀寫全部做。現在在設計時大家腦子里面直接就是分出3個數據庫(可能部署在1臺mysql上)--業務主庫,臨時信息庫,日志庫,然后把表分到不同的庫中。然后數據庫安裝時直接主從安裝,主從使用。雖然看起來庫復雜了,但程序上沒有任何成本代價,基本上已經形成一種設計流程。這種模式感覺可以作為最佳實踐。 

          3. 編程上,一開始開發人員還是建個spring action類 + 在dao和manager中增加需要的方法 + 修改dispatcher-servlet.xml配置映射 + jsp實現view。但現在很多功能都是直接jsp,用taglib直接讀庫,基本上后臺的讀數據庫操作頁面已經看不到action的影子了。java代碼比先前的工程,同樣的功能少了大概60%-70%。 

          4. 我們的系統一般后臺功能比較復雜,以往編輯要改點東西大家都很郁悶。不過現在抵制少了很多,基本上就是改改jsp或者在復制1個新的jsp改改,然后傳到服務器上,一大堆集群機器的重啟工作都免了,無論是開發還是部署都很省事。和php差不多。 

          guzz1.2.7分表和自定義表的應用實例: 

          我們有1套調查系統,使用了這項技術,也是第一個線上測試。每個調查都不太一樣,需要網友填一些東西,需要填什么,填的個數類型都不定。一個調查進行過程中,或者結束后要求對數據進行統計報表。統計的內容可能也包括那些自定義的填空題。 

          在1.2.7之前,我們解決方案是:將所有自定義的調查項,按照key-value生成一個xml字符串,存儲到數據庫大字段中(Mysql text字段)。需要統計時,根據mysql5.1對xml支持的新特性使用ExtraValue函數解析這個xml生成一個新表(create table xxxx select ExtraValue(xx) as a, .....from 主調查記錄表),然后在根據新的xxxx表統計。每次都要手工來弄,非常繁瑣。 

          1.2.7,使用切表和自定義屬性后,現在的解決方案:每次創建投票并建立好自定義調查項(自定義調查項存儲在數據庫中),根據這些自動生成一個mysql create table的語句,創建好需要的表。在配置CustomTableView動態的映射用戶提交的數據存儲到對應的表中。完全自動,后續處理簡化了很多。 

          而且由于整個過程是實時的,以前的過程是手工的,所以很多線上的報表功能也可以開發了。開發也非常簡單,我們用guzz jsp tablib直接讀庫,像操作普通java屬性一樣操作自定義屬性,一個類型的表報1個jsp。特殊調查的特殊報表也就是往服務器上放1個特殊處理的jsp,應用都不用重啟,非常方便。 

          guzz1.2.7分表和自定義表的下一個應用計劃: 

          這是一個計劃,還沒有做,不過我們準備很快就開始做。 

          我們的所有系統對日志都有要求,日志必須記錄!但日志的開發很煩人,全是沒有技術含量的重復工作。我們準備開發一個日志服務,所有系統以后就不用開發日志了,直接使用這個服務。日志服務分為服務器端和客戶端。 

          服務器端: 

          一個標準的java web系統,有日志數據庫,用來存儲所有系統的日志信息,并提供查詢和統計等界面。如果有人需要查日志,就到這個系統來查。 

          服務器端有1個應用數據庫,用來創建和管理授權的應用系統。1個新的應用上線的時候,在這里創建一個應用和他的授權碼,然后錄入他的個性日志字段和數據類型(類似上面提到調查的個性選項),服務器自動在數據庫中給他創建1個日志表,用來存儲這個應用的日志數據。我們準備按季度分表,讓每個日志表1個季度分成1張子表。 

          客戶端: 

          實現一個標準的guzz service,提供日志插入接口 
          Java代碼 
          1. public void log(UserLog log) ;  

          每個系統開發時,將日志服務的jar包放到工程中,并在guzz.xml中聲明此服務,代碼直接調用就OK了。 

          這樣以后就不用為每個系統開發日志管理模塊了。并且還能獲取到統計某一個用戶在所有系統中活動記錄的額外增強(例如我們可以在服務器端將日志記錄兩份,一份按應用系統,一份按操做者記錄)~~ 

          posted on 2010-04-09 14:52 深藍色心情 閱讀(3418) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 洪雅县| 博罗县| 政和县| 丽水市| 庆城县| 洛扎县| 凤凰县| 克什克腾旗| 大厂| 平安县| 抚松县| 青海省| 遵化市| 江北区| 沛县| 内乡县| 南涧| 讷河市| 修武县| 赫章县| 竹山县| 长丰县| 商都县| 邢台县| 惠州市| 娄烦县| 东丽区| 铁力市| 共和县| 津市市| 滨州市| 河间市| 临城县| 蒲江县| 浪卡子县| 安化县| 吴旗县| 芜湖县| 汨罗市| 团风县| 株洲县|