1.硬件客戶端是TCP/IP協(xié)議上報數(shù)據(jù),在測試時服務端用text協(xié)議的時候,用TCP模擬工具請求時,我在onMessage回調中打印數(shù)據(jù)沒有反應,換成裸tcp協(xié)議就可以,不用工具用telnet又可以打印出發(fā)送的數(shù)據(jù)
如果硬件接口數(shù)據(jù)是如下格式
send 200,123456789,00001,AA000000,0005,00,0818031611,,,,0000,\r\n我是否可以直接使用TEXT協(xié)議,在服務端接收數(shù)據(jù)時根據(jù)分割符處理好數(shù)據(jù)即可
3.假設我有3000個設備同時連接,每個設備每秒會上報100條數(shù)據(jù),我是否需要在服務端建立異步任務比如存入redis去處理這些上報的數(shù)據(jù),然后另外一個任務去處理redis數(shù)據(jù)入MYSQL
剛接觸硬件通訊這塊,比較小白,希望老大解答,感謝
1、text協(xié)議要求每個包結尾是一個換行符,沒有換行符text協(xié)議認為消息沒收全,就不會觸發(fā)onMessage
2、可以直接用text協(xié)議。但是注意text協(xié)議里是以換行符\n為結束,\n是換行符,一個字符,而不是\和n兩個字符
3、不清楚你的是什么場景,每個設備每秒要上報100條這么多數(shù)據(jù)。3000個設備那就是每秒30萬個請求。
30萬個請求都要操作數(shù)據(jù)庫或者redis 數(shù)據(jù)庫和redis是扛不住的,數(shù)據(jù)庫你要想辦法主從+分庫分表,redis要想辦法運行個集群去處理。workerman這邊也需要用多臺服務器??梢耘獋€rabbitmq隊列慢慢去寫數(shù)據(jù)庫和redis。
謝謝解答,問題我在補充說明下
1.第一點我用TCP模擬工具發(fā)送的數(shù)據(jù)就
send 200,123456789,00001,AA000000,0005,00,0818031611,,,,0000,\r\n 這樣直接提交到服務器的,理論上text協(xié)議是\n結束應該觸發(fā)onMessage回調的吧,測試中沒有觸發(fā),這個估計是我自己的問題稍后換工具在測試下
2.第三點實際場景中應該沒有這么大多數(shù)據(jù),我只是隨口打了個比方^-^,主要是想問下這個思路是不是可行?意思就是用2個異步任務服務 分別去處理數(shù)據(jù)到redis和redis數(shù)據(jù)到mysql這樣