Open DDS的那些坑

對使用Open DDS過程發現的問題點或待優化項目,記錄如下:

問題點:

  1. Windows平臺上,vs2005、vs2010編譯的dll不能相互調用,出現異常崩潰的問題;Linux平臺上,內核差距比較大時,glibc的版本不一致,也可能導致ACE+DDS需要重新編譯;
  2. debug版和release版的表現,不一致,不能互通用;
  3. 某些調用方法,導致內存泄漏;
  4. 編譯過程中,Windows和Linux系統都可能需要人工干預,如編輯Makefile、拷貝某些不能自動產生的java文件等;
  5. 特性支持比較複雜,如dds4ccm_opendds、xerces、QOS_xml;
  6. 不同版本間的使用模式有區別,否則會失敗或崩潰,如3.8和3.13間的差別;
  7. 日誌文件只有一個,不支持輪轉和文件大小特性;部分日誌,可讀性不強,不能有效反應整個生命週期的關鍵線索;
  8. 如在MFC、Qt中,不使用ACE_TMAIN時,需要單獨調用某個邏輯方法;
  9. 多domain的配置文件;
  10. UDP的可靠性,不是那麼可靠;
  11. Windows上單播發現不成功;
  12. Linux平臺,TCP協議傳輸時,sub方停止重啓不能重建連接;
  13. TCP協議,7*24小時發送失敗;
  14. DW的write失敗後,導致內存增長;
  15. 組播傳輸時,多個訂閱者有時接收不到數據的問題;

定製項:

  1. Qos定製,如BatchDataQos;
  2. 大包轉小包、小包轉大包的傳輸控制;
  3. 雲環境的發現和傳輸;

優化項:

  1. Monitor監視內容的豐富和完善(原始monitor功能和RTI差的不是一點半點);DW的report連軸調用;
  2. TCP協議時,解除必須配置host文件的限制;
  3. Linux平臺下,使用epoll模型;
  4. 優化domainparticipate超時後的清理策略——立即清理,而不是以schedule_timer、schedule_cancletimer方式10秒鐘延遲清理;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章