<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    牙牙窩

    BlogJava 聯(lián)系 聚合 管理
      8 Posts :: 21 Stories :: 10 Comments :: 0 Trackbacks
        今年真的是郁悶透頂了。項目組居然叫我去做我從來沒有做過的接口方面的編程,搞得我焦頭爛額。

        因為沒有經(jīng)驗,寫的代碼亂七八糟,出了好多問題,不過,也學(xué)了不少東西。

        首先就是Socket的編程,我只是在學(xué)習(xí)JAVA時寫了一些socket方面的例子,從來就沒有仔細研究過,組長居然叫我設(shè)計一個JAVA的接口平臺。胡弄了一通之后,系統(tǒng)上線了。但是問題就來了。

        首先第一個問題,長連接必須有心跳。因為之前協(xié)議中沒有定義心跳協(xié)議,而我又沒有經(jīng)驗,所以等真正上線之后才發(fā)現(xiàn),如果長連接沒有心跳,很容易導(dǎo)致在Socket連接中,長時間沒有通訊的話,就會導(dǎo)致連接雖然保持,但不能正常通訊的問題。

        第二個問題,必須加入流量控制。這個問題出現(xiàn)在業(yè)務(wù)高峰期時,會接收到大量請求,這時業(yè)務(wù)系統(tǒng)的處理速度跟不上請求發(fā)起方,導(dǎo)致大量請求積壓在Socket服務(wù)器端,導(dǎo)致JVM崩潰。這個問題我之前是使用了JAVA5中所帶的ExecutorService,通過設(shè)置固定的線程池數(shù)量的方式做流量控制,后來發(fā)現(xiàn)不行,線程會不斷增加,導(dǎo)致JVM崩潰。不知道是我代碼問題還是ExecutorService本身的問題。建議使用BlockingQueue來做隊列,我目前用起來還是比較穩(wěn)定。

        第三個問題,是由上面的問題衍生出來的一個問題,就是效率問題。我之前的線程處理方式是每接到一個請求,會在主線程實例化一個線程實例,再把線程放到線程池中運行,這個方式除了導(dǎo)致上面的問題以外,而且效率很慢,我稱之為“推”的方式。現(xiàn)在經(jīng)過改良后,在服務(wù)起來之后,先事先運行固定數(shù)量的線程,然后所有線程都從同一個BlockingQueue中獲取指令,我稱之為“拉”的方式。這種方式讓程序效率提高了很多,省去了每次生成對象的過程。而且這個設(shè)計本身也實現(xiàn)了處理量的控制。

        第四個問題,就是指令的返回問題。在處理每個異步指令的過程時,對于返回指令,通常的做法是將返回結(jié)果指令放入隊列中,然后再逐一返回。這個做法就存在了一個隱患,就是當服務(wù)器的進程core掉,或者因其它原因中斷,所有的返回指令都會丟失。建議的做法是在得到返回指令之后,將要返回的結(jié)果指令持久化,通常是放入數(shù)據(jù)表或者緩存文件中,然后再操作,這樣的話,當重啟進程,也可以重新讀取返回指令,最大可能保證接口的數(shù)據(jù)準確性。

        第五個問題,其實跟上面有一些接近,就是做接口程序,有一個大原則,就是一切有跡可尋。在受理時要寫日志,執(zhí)行業(yè)務(wù)時要記錄、返回結(jié)果時要入庫。總之讓運維人員可以很方便的定位問題,排除問題。否則,只能麻煩自己啦!

        至于其它錯誤我就不一一羅列了,總之在錯誤中進步,還是學(xué)到不少知識。呵呵~~


    posted on 2007-12-19 10:43 大牙 閱讀(480) 評論(2)  編輯  收藏

    Feedback

    # re: 接口開發(fā)一些自己的失誤、經(jīng)驗和總結(jié) 2010-05-07 16:08 寶貝兔
    可不可以把您現(xiàn)在實現(xiàn)的客戶端長連接的代碼給我貼一段出來,我現(xiàn)在都不知道怎么在客戶端建立長連接?  回復(fù)  更多評論
      

    # re: 接口開發(fā)一些自己的失誤、經(jīng)驗和總結(jié) 2010-06-13 09:47 444
    @寶貝兔
    - -保留socket不就可以了嗎??  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产午夜精品理论片| 久久亚洲2019中文字幕| 亚洲精品福利网泷泽萝拉| 久久中文字幕免费视频| 亚洲色婷婷综合久久| 香蕉免费在线视频| 亚洲成AV人片在| 日韩人妻无码精品久久免费一| 亚洲情a成黄在线观看动漫尤物| 免费人妻无码不卡中文字幕系| 亚洲成人午夜在线| 无码国产精品一区二区免费式直播| 亚洲国产综合人成综合网站00| 69成人免费视频无码专区| 亚洲人成自拍网站在线观看| 国产一区在线观看免费| 亚洲免费视频一区二区三区| 国产亚洲综合一区柠檬导航| 欧洲精品99毛片免费高清观看| 亚洲春色另类小说| 国产高清在线精品免费软件| 无人视频在线观看免费播放影院 | 亚洲av无码专区在线观看下载| 国产成人精品男人免费| 久青草国产免费观看| 亚洲成在人线av| 99热在线精品免费全部my| 亚洲AV永久无码天堂影院| 亚洲精品一级无码中文字幕| 久久免费线看线看| 亚洲无mate20pro麻豆| 亚洲不卡AV影片在线播放| 免费观看91视频| 亚洲变态另类一区二区三区 | 国产成人在线免费观看| 三上悠亚在线观看免费| 亚洲无成人网77777| 亚洲av成人一区二区三区在线观看| 国产好大好硬好爽免费不卡| 久久综合久久综合亚洲| 亚洲中文字幕日产乱码高清app|