阿里巴巴開源服務框架 Dubbo 2.0.9 發布

openkk 12年前發布 | 33K 次閱讀 Dubbo

Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫集成。
主要核心部件:
  • Remoting: 網絡通信框架,實現了 sync-over-async 和 request-response 消息機制.
  • RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集群功能
  • Registry: 服務目錄框架用于服務的注冊和服務事件發布和訂閱

Dubbo工作原理

阿里巴巴開源服務框架 Dubbo 2.0.9 發布

  • Provider
    • 暴露服務方稱之為“服務提供者”。
    </li>
  • Consumer
    • 調用遠程服務方稱之為“服務消費者”。
    • </ul> </li>
    • Registry
      • 服務注冊與發現的中心目錄服務稱之為“服務注冊中心”。
      • </ul> </li>
      • Monitor
        • 統計服務的調用次調和調用時間的日志服務稱之為“服務監控中心”。
        • </ul> </li> </ul>

          (1) 連通性:

          • 注冊中心負責服務地址的注冊與查找,相當于目錄服務,服務提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉發請求,壓力較小
          • 監控中心負責統計各服務調用次數,調用時間等,統計先在內存匯總后每分鐘一次發送到監控中心服務器,并以報表展示
          • 服務提供者向注冊中心注冊其提供的服務,并匯報調用時間到監控中心,此時間不包含網絡開銷
          • 服務消費者向注冊中心獲取服務提供者地址列表,并根據負載算法直接調用提供者,同時匯報調用時間到監控中心,此時間包含網絡開銷
          • 注冊中心,服務提供者,服務消費者三者之間均為長連接,監控中心除外
          • 注冊中心通過長連接感知服務提供者的存在,服務提供者宕機,注冊中心將立即推送事件通知消費者
          • 注冊中心和監控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表
          • 注冊中心和監控中心都是可選的,服務消費者可以直連服務提供者

          (2) 健狀性:

          • 監控中心宕掉不影響使用,只是丟失部分采樣數據
          • 數據庫宕掉后,注冊中心仍能通過緩存提供服務列表查詢,但不能注冊新服務
          • 注冊中心對等集群,任意一臺宕掉后,將自動切換到另一臺
          • 注冊中心全部宕掉后,服務提供者和服務消費者仍能通過本地緩存通訊
          • 服務提供者無狀態,任意一臺宕掉后,不影響使用
          • 服務提供者全部宕掉后,服務消費者應用將無法使用,并無限次重連等待服務提供者恢復

          (3) 伸縮性:

          • 注冊中心為對等集群,可動態增加機器部署實例,所有客戶端將自動發現新的注冊中心
          • 服務提供者無狀態,可動態增加機器部署實例,注冊中心將推送新的服務提供者信息給消費者

           

          阿里巴巴開源服務框架Dubbo2.0.9版本發布了,該版本增加了簡易監控中心界面,以及修復了一些BUG。

          Dubbo首頁:http://code.alibabatech.com/wiki/display/dubbo/Home
          下載地址:http://code.alibabatech.com/wiki/display/dubbo/Download#Download-Releases
          發行說明:http://code.alibabatech.com/wiki/display/dubbo/Release+Notes#ReleaseNotes-ReleaseNotes2.0.9

          新特性:

          [DUBBO-91] - dubbo-monitor-simple增加服務提供者和消費者列表及JFreeChart統計報表查看

          Bug修復:

          [DUBBO-58] - 解決dubbo spring配置文件初始化時死鎖,導致線程池占滿
          [DUBBO-63] - Serialization對final字段的處理出錯
          [DUBBO-72] - RMI protocol 中調用了javassist高版本中方法 導致在低版本環境中出現的NoSuchMethodError錯誤
          [DUBBO-73] - ExecutorUtil類關閉線程池問題
          [DUBBO-76] - 注冊中心使用vip(域名)的情況下,不能正常切換到注冊中心的實際地址
          [DUBBO-77] - ExceptionFilter在拋出RpcException時應在服務提供方打印出錯日志
          [DUBBO-78] - JVM之間共享長連接(Provider和Consumer的連接策略與Dubbo1不一樣)
          [DUBBO-82] - http協議的server缺省值與舊版本不兼容
          [DUBBO-83] - JettyContainer擴展點配置錯誤
          [DUBBO-84] - 調整ConfigUtils的mergeValue使得自定義value在默認value之后加載
          [DUBBO-86] - ReferenceBean導致autowire失效,還原ReferenceBean的afterPropertiesSet
          [DUBBO-89] - Log4jContainer沒有修改所有Appender的路徑,并錯誤的將日志輸出到了user.home目錄
          [DUBBO-90] - RMI的連接失敗重建Stub
          [DUBBO-94] - ReferenceBean的getObjectType()依賴于getObject()初始化,而AOP&autowire會先調getObjectType(),導致類型不匹配
          [DUBBO-95] - spring bean 加載getBeanByType 與webx 出現循環依賴問題
          [DUBBO-96] - 服務端與客戶端的線程池參數設置沒有區分開
          [DUBBO-97] - 事件(例如heartbeat)運行在業務線程池
          [DUBBO-100] - method oninvoke在spring解析器中沒有做解析,此功能失效
          [DUBBO-102] - Classpath有多個dubbo.properties文件(加載到不期望的dubbo.properties則會出各種提示不清楚的錯誤)
          [DUBBO-105] - fix ReflectUtils cache 失效
          [DUBBO-112] - Hession反序列化沒有傳入返回值類型導致類型轉換失敗
          [DUBBO-114] - 服務容器的status頁面沒有返回OK,導致服務容器啟動時一直不OK
          [DUBBO-115] - SimpleRegistry在服務提供者重啟時,注冊不上
          [DUBBO-127] - 注冊中心ondisconnect回調事件在某些情況下沒有被正確回調
          [DUBBO-128] - consumer通過配置成域名方式訪問注冊中心訂閱時拋出異常

          改進:

          [DUBBO-10] - hession反序列化 沒有傳入返回值類型 導致 類型轉換失敗。
          [DUBBO-71] - Graceful shutdown-半關閉狀態
          [DUBBO-79] - RMI的配置方式便利性加強(如果Java啟動參數已設RMI超時參數就不再使用dubbo的timeout配置)
          [DUBBO-88] - Remoting模塊中Client重連失敗拋出的異常不能判定關聯的服務
          [DUBBO-98] - dubbo-registry-zookeeper增加consumers的存儲
          [DUBBO-99] - 所有container參數都加上dubbo.前綴
          [DUBBO-103] - Remoting異常轉換成RpcException異常時沒有附加上Service信息(拋出異常后不便于排錯)
          [DUBBO-104] - RmiInvoker的doInvoke方法出java.rmi.RemoteException異常時,會Wrap兩次RpcException
          [DUBBO-106] - Container加載properties統一使用ConfigUtils
          [DUBBO-107] - 將RpcContext.isClientSide和isServerSide改成isConsumerSide和isProviderSide
          [DUBBO-109] - demo放到trunk管理,與trunk同發布
          [DUBBO-110] - 統一startup和shutdown腳本
          [DUBBO-111] - MonitorService的cluster改為failsafe
          [DUBBO-117] - registry notify 防御性容錯
          [DUBBO-118] - client reconnect 發布過程中reconnect會報太多的錯誤,導致生產環境報警。
          [DUBBO-121] - 的filter和listener屬性,進行合并,而不是覆蓋
          [DUBBO-129] - 增加heartbeat屬性設置心跳間隔


          資訊來源:http://code.alibabatech.com

           本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
           轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
           本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!