對使用Open DDS過程發現的問題點或待優化項目,記錄如下:
問題點:
- Windows平臺上,vs2005、vs2010編譯的dll不能相互調用,出現異常崩潰的問題;Linux平臺上,內核差距比較大時,glibc的版本不一致,也可能導致ACE+DDS需要重新編譯;
- debug版和release版的表現,不一致,不能互通用;
- 某些調用方法,導致內存泄漏;
- 編譯過程中,Windows和Linux系統都可能需要人工干預,如編輯Makefile、拷貝某些不能自動產生的java文件等;
- 特性支持比較複雜,如dds4ccm_opendds、xerces、QOS_xml;
- 不同版本間的使用模式有區別,否則會失敗或崩潰,如3.8和3.13間的差別;
- 日誌文件只有一個,不支持輪轉和文件大小特性;部分日誌,可讀性不強,不能有效反應整個生命週期的關鍵線索;
- 如在MFC、Qt中,不使用ACE_TMAIN時,需要單獨調用某個邏輯方法;
- 多domain的配置文件;
- UDP的可靠性,不是那麼可靠;
- Windows上單播發現不成功;
- Linux平臺,TCP協議傳輸時,sub方停止重啓不能重建連接;
- TCP協議,7*24小時發送失敗;
- DW的write失敗後,導致內存增長;
- 組播傳輸時,多個訂閱者有時接收不到數據的問題;
定製項:
- Qos定製,如BatchDataQos;
- 大包轉小包、小包轉大包的傳輸控制;
- 雲環境的發現和傳輸;
優化項:
- Monitor監視內容的豐富和完善(原始monitor功能和RTI差的不是一點半點);DW的report連軸調用;
- TCP協議時,解除必須配置host文件的限制;
- Linux平臺下,使用epoll模型;
- 優化domainparticipate超時後的清理策略——立即清理,而不是以schedule_timer、schedule_cancletimer方式10秒鐘延遲清理;