原创 SOA如何設計傳輸模塊(二)-Netty的實現

上一遍介紹了設計傳輸模時接口的定義(http://blog.csdn.net/csujiangyu/article/details/51761479) 這裏用了主流的框架netty來實現。 首先設計NettyServer,主要功能

原创 Redis統計某個時間段訂單數量(用Guava緩存輔助解決)

簡介 公司有這麼個需求,需用統計店鋪某個時間段(按自然天計算,不超過24小時)類的訂單數量。因爲這些統計數據不用持久化,考慮到性能問題,準備用Redis做統計。 - 設計思路:用Reids的一個有序集合實現。店鋪Id作爲有序集合

原创 SOA如何設計傳輸模塊(一)-接口的設計

SOA都離不開網絡,現在的框架都集成了自己網絡傳輸模塊。但如果要自己寫框架的時候,就需要思考如何設計了?出於這種好奇,嘗試一下自己設計。 首先要考慮遠端傳輸需要滿足什麼,一般有哪些抽象實體,一般傳輸過程是怎麼樣的。既然面向對象思想

原创 SOA研究-用zookeeper實現服務的註冊和發現

註冊中心 一般具有以下功能: 註冊服務 訂閱服務 失敗重新註冊和訂閱 本地緩存服務信息列表 大體過程如下: 1.服務提供者暴露服務後向註冊中心註冊,如果多個註冊中心的話,需要分別註冊到多個註冊中心;註冊信息包含自己主機名,

原创 關於中臺化一些思考

有個同事問了我一個架構問題,大概是這樣的:組裝某業務的VO的對象邏輯放到哪層,感覺放到service層好像不太合適。我感覺問的非常好,這種問題非常典型,值得分享一下。目前來說,我們在前臺層(Controller)直接調用一個下層大

原创 軟件中組件拆合原則

三個拆合的指導原則:REP(複用/發佈等同原則),CCP(共同閉包原則)和CRP(共同複用原則)。 組件聚合原則張力圖 REP(複用/發佈等同原則):軟件複用的最小粒度應該等同於其發佈的最小粒度(注:只有那些通過版本追蹤系統發

原创 思考複雜的系統

原创 Java優化考慮構建器創建對象

最近在做項目的時候,需要新建一個對象叫CartMessage。CartMessage只作爲方法參數,如果要構建一個CartMessage,沒有重構之前的做法是類似這樣的: CartMessage msg = new CartMes

原创 Spring事務源碼分析

事務屬性定義接口 TransactionDefinition是事務屬性定義接口,保存事務定義的各種屬性,如超時時間、隔離級別、傳播屬性等。 public interface TransactionDefinition {

原创 Mac編譯OpenJDK7(8)和Eclipse調試Hotspot

一、前言 Java是我主要的生產語言,但對JVM不是很瞭解,最近也在看《深入理解Java虛擬機 第二版》,所以想親手編譯OpenJDK和調試HotSpot虛擬機系統是15年的Mac OS X(10.11.5),而OpenJDK7卻

原创 Redis在集羣環境中生成唯一ID

概述 設計目標:每秒最大生成10萬個ID,ID單調遞增且唯一。Reidis可以不需要持久化ID。 要求:集羣時鐘不能倒退。 總體思路:集羣中每個節點預生成生成ID;然後與redis的已經存在的ID做比較。如果大於,則取節點生成

原创 dubbo間歇性超時問題解決

之前dubbo每隔十分鐘左右會出現以下超時情況 Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeou

原创 淺談軟件設計原則

通用原則 OCP(開閉原則) 架構設計的主導原則。設計良好的軟件應該易於擴展,同時抗拒修改。這是我們進行架構設計的主導原則,其他的原則都爲這條原則服務。 USB接口滿足OCP原則,各個廠商可以擴展接口實現,但是不能修改接口定義

原创 聊聊JVM常用參數設置

整體考慮堆大小 -Xms3550m, 初始化堆大小。通常情況和-Xmx大小設置一樣,避免虛擬機頻繁自動計算後調整堆大小。 -Xmx3550m,最大堆大小。 考慮分代設置堆大小 首先通過jstat等工具查看應用程序正常情況下需要堆

原创 面向對象設計原則

最近在重構老系統的代碼,感覺有些疑惑,故重新看了《敏捷開發軟件開發:原則、模式和實踐》,記錄一下。 面向對象設計要遵守下面幾個原則: 類單一職責原則(SPR) 每個類承擔的職責應該單一,實現高內聚。如果這個類承擔太多,那麼它變動