Home / ?????? ??????? ??? / 榫嶇瑳鐗硅壊 / 寰炲鎴剁鐨勮搴︿締(l谩i)璜�?w霉)鍕旇嬁?d貌ng)绔疘M鐨勬秷鎭彲闈犳€у拰閫侀仈(d谩)姗�(j墨)鍒�

寰炲鎴剁鐨勮搴︿締(l谩i)璜�?w霉)鍕旇嬁?d貌ng)绔疘M鐨勬秷鎭彲闈犳€у拰閫侀仈(d谩)姗�(j墨)鍒�

IM App 鏄垜鍋氶亷(gu貌) App 椤�(l猫i)鍨嬮噷寰�(f霉)闆滃害鏈€楂樼殑涓€椤�(l猫i)锛岄噷闈㈠彲渚涙繁绌舵帰瑷庣殑鎶€琛�(sh霉)闆i粸(di菐n)闈炲父涔嬪銆傞€欑瘒鏂囩珷鍜屽ぇ瀹惰亰涓嬪緸绉诲嫊(d貌ng)绔鎴剁鐨勮搴︽墍闂�(gu膩n)娉ㄧ殑IM娑堟伅鍙潬鎬у拰閫侀仈(d谩)姗�(j墨)鍒讹紙鍥�?y脿n)妲茶鈧�(g猫)浜哄皪(du矛)绉诲嫊(d貌ng)瀹㈡埗绔殑缍�(j墨ng)椹�(y脿n)绌嶇疮鐨勬瘮杓冭睈瀵屽槢锛夈€�

TCP鍗�(xi茅)璀扮殑鍙潬鎬т箣澶栭倓鏈�(hu矛)鍑虹従(xi脿n)娑堟伅涓熷け锛�

濡備綍纰轰繚 IM 涓嶄笩娑堟伅鏄€�(g猫)鐩稿皪(du矛)寰�(f霉)闆滅殑瑭遍锛屽緸瀹㈡埗绔櫦(f膩)閫佹暩(sh霉)鎿�(j霉)鍒版湇鍕�(w霉)鍣�锛屽啀?g貌u)濮嗩?w霉)鍣ㄦ姷閬�(d谩)鐩(bi膩o)瀹㈡埗绔�锛屾渶绲傚湪 UI 鎴愬姛灞曠ず锛屽叾闁撴秹鍙婄殑鐠�(hu谩n)绡€(ji茅)寰堝锛岄€欓噷鍙彇鍏朵腑涓€鐠�(hu谩n)銆屾帴鏀剁濡備綍纰轰繚娑堟伅涓嶄笩澶便€嶄締(l谩i)鎺㈣◣锛岀矖鐣ヨ亰涓嬫垜鎺ヨЦ閬�(gu貌)鐨勫叐绋ō(sh猫)瑷�(j矛)鎬濊矾銆�

瑾�(shu艒)鍒板彲闈犳姷閬�(d谩)锛岀涓€鍙嶆噳(y墨ng)鏈�(hu矛)鑱�(li谩n)鎯冲埌 TCP 鐨� reliability銆傛暩(sh霉)鎿�(j霉)鍙潬鎶甸仈(d谩)鏄€�(g猫)閫氱敤鎬х殑鍟�(w猫n)椤�锛岀劇(w煤)璜栨槸缍�(w菐ng)绲�(lu貌)浜岄€�(j矛n)鍒舵祦鏁�(sh霉)鎿�(j霉)锛岄倓鏄笂灞ょ殑妤�(y猫)鍕�(w霉)鏁�(sh霉)鎿�(j霉)锛岄兘鏈夊彲闈犳€т繚闅滃晱(w猫n)椤�锛孴CP 浣滅偤缍�(w菐ng)绲�(lu貌)鍩虹(ch菙)瑷�(sh猫)鏂藉崝(xi茅)璀�锛屽叾鍙潬鎬цō(sh猫)瑷�(j矛)鐨勫彲闈犳€ф槸姣嬪焊缃枒鐨�锛屾垜鍊戝氨寰� TCP 鐨勫彲闈犳€ц(shu艒)璧枫€�

鍦� TCP 閫欎竴灞�锛屾墍鏈� Sender 鐧�(f膩)閫佺殑鏁�(sh霉)鎿�(j霉)锛屾瘡涓€鍊�(g猫) byte 閮芥湁妯�(bi膩o)铏�(h脿o)锛圫equence Number锛�锛屾瘡鍊�(g猫) byte 鍦ㄦ姷閬�(d谩)鎺ユ敹绔箣鍚庨兘鏈�(hu矛)琚帴鏀剁杩斿洖涓€鍊�(g猫)纰鸿獚(r猫n)淇℃伅锛圓ck Number锛夛紝 浜岃€呴棞(gu膩n)绯荤偤 Ack = Seq + 1銆傜啊(ji菐n)鍠締(l谩i)瑾�(shu艒)锛屽鏋� Sender 鐧�(f膩)閫佷竴鍊�(g猫) Seq = 1锛岄暦(zh菐ng)搴︾偤 100 bytes 鐨勫寘锛岄偅涔� receiver 鏈�(hu矛)杩斿洖涓€鍊�(g猫) Ack = 101 鐨勫寘锛屽鏋� Sender 鏀跺埌浜嗛€欏€�(g猫)Ack 鍖�锛岃(shu艒)鏄庢暩(sh霉)鎿�(j霉)纰哄(sh铆)琚� Receiver 鏀跺埌浜�锛屽惁鍓� Sender 鏈�(hu矛)閲囧彇鏌愮ó绛栫暐閲嶇櫦(f膩)涓婇潰鐨勫寘銆�

绗竴鍊�(g猫)鍟�(w猫n)椤屾槸锛氱従(xi脿n)鍦ㄧ殑 IM App 骞句箮閮芥槸璧� TCP 閫氶亾锛屾棦鐒� TCP 鏈韩鏄叿鍌欏彲闈犳€х殑锛岀偤浠€涔堥倓鏈�(hu矛)鍑虹従(xi脿n)娑堟伅鎺ユ敹绔紙Receiver锛変笩澶辨秷鎭殑鎯呮硜锛岀湅涓嬪湒涓€鐩簡鐒讹細

涓€鍙ヨ┍绺界祼(ji茅)涓婂湒鐨勫惈缇╋細缍�(w菐ng)绲�(lu貌)灞ょ殑鍙潬鎬т笉绛夊悓浜庢キ(y猫)鍕�(w霉)灞ょ殑鍙潬鎬�銆�

鏁�(sh霉)鎿�(j霉)鍙潬鎶甸仈(d谩)缍�(w菐ng)绲�(lu貌)灞や箣鍚�锛岄倓闇€瑕佷竴灞ゅ堡寰€涓婄Щ浜よ檿鐞�锛屽彲鑳界殑铏曠悊鏈夛細瀹夊叏鎬ф牎椹�(y脿n)锛宐inary 瑙f瀽锛宮odel 鍓�(chu脿ng)寤猴紝瀵�(xi臎) db锛屽瓨鍏� cache锛孶I 灞曠ず锛屼互鍙婁竴浜� edge cases锛堟柗缍�(w菐ng)锛岀敤鎴� logout锛宒isk full锛孫OM锛宑rash锛岄棞(gu膩n)姗�(j墨)銆�銆傦級 绛夌瓑锛岄爡(xi脿ng)鐩殑 feature 瓒婂锛岀恫(w菐ng)绲�(lu貌)灞ゅ線涓婄殑铏曠悊鍑洪尟(cu貌)鐨勫彲鑳芥€у氨瓒婂ぇ銆�

鑸夊€�(g猫)鏈€绨�(ji菐n)鍠殑鍫�(ch菐ng)鏅偤渚嬪瓙锛氭秷鎭彲闈犳姷閬�(d谩)缍�(w菐ng)绲�(lu貌)灞や箣鍚�锛屽(xi臎) db 涔嬪墠 App crash锛堜笉绋€濂�锛屾槸 App 閮芥渻(hu矛) crash锛夛紝闆栫劧鏁�(sh霉)鎿�(j霉)鍦ㄧ恫(w菐ng)绲�(lu貌)灞ゅ彲闈犳姷閬�(d谩)浜嗭紝浣嗘矑(m茅i)瀛橀€�(j矛n) db锛屼笅娆$敤鎴舵墦闁�(k膩i) App 娑堟伅鑷劧灏变笩澶变簡锛屽鏋滀笉鍦ㄦキ(y猫)鍕�(w霉)灞ゅ啀澧炲姞鍙潬鎬т繚闅滐紝缍�(w菐ng)绲�(lu貌)灞ら潰涓嶆渻(hu矛)閲嶇櫦(f膩)锛岄偅涔堟剰鍛宠憲閫欐娑堟伅灏�(du矛)浜� Receiver 姘搁仩(yu菐n)涓熷け浜�銆�

瀹㈡埗绔柟妗�1锛氭噳(y墨ng)鐢ㄥ堡 Ack 娑堟伅

閫欏€�(g猫)鏂规鍙互绨�(ji菐n)鍠悊瑙g偤锛屽皣 TCP 鐨� Ack 娴佺▼鍐嶈蛋涓€閬�锛屽湪鎳�(y墨ng)鐢ㄥ堡涔熸(g貌u)寤轰竴鍊�(g猫) Ack 娑堟伅锛屽湪鎳�(y墨ng)鐢ㄥ堡鍙潬鎬у緱鍒扮⒑瑾�(r猫n)锛堜竴鑸互瀛樺叆 db 鐐烘簴(zh菙n)锛屾洿婧�(zh菙n)纰鸿(shu艒)鏄簨鍕�(w霉)鎻愪氦鎴愬姛鐨勫洖瑾�(di脿o)鍑芥暩(sh霉)锛変箣鍚庡啀鐧�(f膩)閫侀€欏€�(g猫) Ack 娑堟伅锛孲erver 鏀跺埌鎳�(y墨ng)鐢ㄥ堡 Ack 娑堟伅涔嬪悗鎵嶈獚(r猫n)鐐� Receiver 宸叉敹鍒帮紝鍚﹀墖涔熼噰鍙栨煇绋瓥鐣ラ噸鐧�(f膩)娑堟伅銆�

鍏烽珨鍒� IM App 鐣�(d膩ng)涓�锛屾帴鏀剁鎺ュ彈鍒� Server 鐨� Message锛屽皣 Message 瀛樺叆 db锛屽湪纰鸿獚(r猫n)鍥炶(di脿o)閲岀櫦(f膩)閫� Ack Receive 娑堟伅锛孲erver 鏀跺埌 Ack Receive 鍗宠獚(r猫n)鐐烘秷鎭凡缍�(j墨ng)鍙潬鎶甸仈(d谩)锛屽惁鍓囨渻(hu矛)鍦ㄦ煇鍊�(g猫)鏅�(sh铆)姗�(j墨)閲嶆柊鎺ㄩ€侊紙姣斿瀹㈡埗绔噸閫f湇鍕�(w霉)鍣ㄦ檪(sh铆)鍊� Pull锛屾瘮濡傛湁鏂版秷鎭檪(sh铆) Server Push锛夈€�

瀹㈡埗绔柟妗�2锛氭噳(y墨ng)鐢ㄥ堡 Seq ID

閫欏€�(g猫)鏂规鍜屼笂闈笉鍚�锛屼絾涔熸槸鍦ㄦ噳(y墨ng)鐢ㄥ堡鎿嶄綔銆傛垜鍊戝€�(g猫)姣忓€�(g猫) Message 鍒嗛厤涓€鍊�(g猫) Seq ID锛岄€欏€�(g猫) Seq ID 灏�(du矛)浜庡柈鍊�(g猫)鐢ㄦ埗鐨勬帴鍙楁秷鎭殜(du矛)鍒椾締(l谩i)瑾�(shu艒)鏄€g簩(x霉)鐨勶紝濡傛灉 Message A 鍜� Message B 鏄浉閯扮殑锛岄偅涔� MsgBSeqID = MsgASeqID + 1銆傛瘡娆″瓨鍏� db 鐨勬檪(sh铆)鍊欐洿鏂� db 閲岀殑 LastReceivedSeqID锛孡astReceivedSeqID 鍗崇偤涓婁竴姊濆(xi臎)鍏ユ暩(sh霉)鎿�(j霉)搴�(k霉)娑堟伅鐨� Seq ID銆�

閫欎箞鍋氱殑濂借檿鏄紝姣忔寰炵恫(w菐ng)绲�(lu貌)灞ゆ敹鍒版秷鎭檪(sh铆)锛屽緸 db 閲屽彇鍑� LastReceivedSeqID锛屽鏋� LastReceivedSeqID = 鏂版秷鎭� Seq ID - 1锛岄偅涔堣(shu艒)鏄庢噳(y墨ng)鐢ㄥ堡娑堟伅鏅�(sh铆)閫g簩(x霉)鐨勬矑(m茅i)鏈夌櫦(f膩)鐢熶笩澶便€傞倓鍙互灏�(du矛)鏀跺埌鐨勬壒閲忔秷鎭仛闋�(y霉)妾㈡脯(c猫)锛屾鏌ユ秷鎭殜(du矛)鍒楅噷鐨� Seq ID 鏄惁鐐鸿伅(li谩n)绯荤殑锛屽彧瑕佸瓨鍦ㄤ换浣曚竴绋笉閫g簩(x霉)鐨� Seq ID 鎯呮硜锛屽氨瑾�(shu艒)鏄庣櫦(f膩)閫佷簡涓熷け锛屾鏅�(sh铆)鎺ユ敹绔彲浠ョ敤 LastReceivedSeqID 寰� Server 閲嶆柊鐛插彇婧�(zh菙n)纰虹殑鎺ュ彈娑堟伅闅�(du矛)鍒�銆�

閫欎箞鍋氱殑濂借檿鏄伩鍏嶄簡姣忔閮介渶瑕佺櫦(f膩)閫佷竴姊� Ack 娑堟伅锛屽铏曟槸鎳�(y墨ng)鐢ㄥ堡閭忚集寰�(f霉)闆滀箣鍚�锛屼竴鏃﹀嚭鐝�(xi脿n) Seq ID 涓嶉€g簩(x霉)鐨勬儏娉�锛屾渻(hu矛)閬�(gu貌)搴︿緷璩翠簬 refetch锛岄洠浠ュ垎鏋愬晱(w猫n)椤屽嚭鐝�(xi脿n)鐨勫師鍥�锛宺efetch 涓€鏃﹂亷(gu貌)浜庨牷绻�锛屽叾娴侀噺鎼嶈€楁サ鏈夊彲鑳藉ぇ浜� Ack 娑堟伅鐨勬暩(sh霉)鎿�(j霉)閲忋€�

鏈枃灏忕祼(ji茅)

娑堟伅鐨勫彲闈犳姷閬�(d谩)鍙互鎶借薄鐐烘洿涓€鑸剰缇╀笂鐨勫彲闈犳€у晱(w猫n)椤�锛屽伐绋嬩笂绺芥渻(hu矛)纰板埌闇€瑕佽В姹哄悇绋舰寮忓彲闈犳€у晱(w猫n)椤岀殑鍫�(ch菐ng)鏅�锛屼互缍�(j墨ng)鍏歌▓(j矛)绠楁(j墨)鐞嗚珫鎴栬€呭(sh铆)韪愮偤鍩虹(ch菙)渚�(l谩i)鍒嗘瀽鎳�(y墨ng)鐢ㄥ堡鐨勫伐绋嬪晱(w猫n)椤�锛屽彲浠ヨ垑涓€鍙嶄笁锛岃棩鍒扮梾闄�銆�

鍦ㄥ伐绋嬩笂瀵�(sh铆)韪愬彲闈犳€�锛岄渶瑕佺窔浜嗚В宸ョ▼鐨勬瘡涓€鍊�(g猫)鐠�(hu谩n)绡€(ji茅)浠ュ強鏁�(sh霉)鎿�(j霉)濡備綍鍦ㄥ悇鍊�(g猫)鐠�(hu谩n)绡€(ji茅)娴佸嫊(d貌ng)锛屾帴涓嬩締(l谩i)鎵嶆槸鍒嗘瀽姣忎竴鍊�(g猫)鐠�(hu谩n)绡€(ji茅)鏁�(sh霉)鎿�(j霉)鍑洪尟(cu貌)鐨勫彲鑳芥€�銆傛椹�(y脿n)鍙潬鎬х殑妯�(bi膩o)婧�(zh菙n)鏅�(sh铆)銆屽叆琚嬬偤瀹夈€�锛屽瓨鍏� db 鎴栬€呬互鍏朵粬鏂瑰紡鎸佷箙鍖栧埌 disk 鐣�(d膩ng)涓�锛岄€欐ǎ鎵嶈兘淇濊瓑瀹㈡埗绔瘡娆¢兘鑳芥纰鸿畝鍙栧埌娑堟伅銆�

鍙﹀锛屽彲闈犳€у彲浠ョ悊瑙g偤鍏╂柟闈細

路 涓€鏄暩(sh霉)鎿�(j霉)鍙潬鎶甸仈(d谩)锛堟矑(m茅i)鏈変换浣曚腑闁撴暩(sh霉)鎿�(j霉)琚笩澶憋級锛�

路 浜屾槸姝g⒑鎶甸仈(d谩)锛堟矑(m茅i)鏈変簜搴忔垨鑰呮暩(sh霉)鎿�(j霉)鏇存敼锛夈€�

鍏跺(sh铆)鐞嗚珫涓� TCP 涔熶笉鏄� 100% 鍙潬锛堟暩(sh霉)鎿�(j霉)鏈夊彲鑳藉湪鍌宠几鏅�(sh铆)鏀硅畩鑰岀劇(w煤)娉曡妾㈡脯(c猫)鍒帮級锛岃€屾槸 100% 宸ョ▼涓婂彲闈狅紙鏁�(sh霉)鎿�(j霉)鏀硅畩鑰屼笉琚娓�(c猫)鍒版檪(sh铆)鍊�(g猫)妤靛皬姒傜巼鐨勪簨浠讹級锛岄€欐槸鍙﹀涓€鍊�(g猫)鏈夋剰鎬濈殑瑭遍銆�

鍥戒骇绮惧搧鍗堝鐖嗕钩缇庡コ瑙嗛| 鍥戒骇鎴愪汉鍠锋疆鍦ㄧ嚎瑙傜湅| 涓枃瀛楀箷瑙嗛涓夊尯| 娆х編浜氶煩| 涔呬箙浜氭床绮惧搧鐢靛奖| 涔呬箙绮惧搧鍣滃櫆AV| 鍗堝a绾ф垚浜哄厤璐规瘺鐗�| 榛勮壊瑙嗛鍦ㄧ嚎瑙傜湅缃戝潃| sss瑙嗛鏃犵爜涓瓧| 18鏃犵爜绮夊灏忔超鏃犲鍦ㄧ嚎| 瓒�97鍦ㄧ嚎瑙嗛| 浜氭床AV鏃犵爜鍥戒骇涓€鍖轰簩鍖�| 瓒呯鍦ㄧ嚎鍥戒骇99| 浜氭床鎬х埍鑷媿| 浜氭床鏂癆V| 鎴愪汉姹¤棰戝厤璐硅鐪�| 娉㈠閲庡湪绾�| 绾㈡av鍦ㄧ嚎涓€鍖�| 浜氭床绮惧搧鏃犵爜鎴愪汉鐗�| 娆х編鑹蹭笉鍗�| 绮惧搧涔呬箙涔呭厤璐�| 濠峰┓鎵嬫満鐪嬬墖| 娆х編鍖� 浜氭床鍖�| 浜哄av鏃犵爜涔卞瓙浠�| 鐜栫帠鍦ㄧ嚎缁煎悎缃�| 鍥戒骇浜烘垚涓€鍖轰簩鍖轰笁鍖哄奖闄� | 绮惧搧鍥戒骇涓€鍖轰簩鍖轰笁鍖洪夯璞�| 闈掗潚鑽夊浗浜ф缇庡湪绾�| 鏃ラ煩绮惧搧鏃犵爜涓夊尯| 1024鍏嶈垂鐪嬩腑鏃ラ煩| 濠峰┓鍏湀澶╁爞缃�| 浜氭床鏃犵爜鑹�| 鍥戒骇骞茬編濂抽珮娼�| 闈掑ū涔愭瀬鍝佽瑙夌洓瀹碼v| 鏃ユ湰涔虫巿瑙嗛鍦ㄧ嚎瑙傜湅| 鍗堝涓嶅崱Av鍏嶈垂| 鍥戒骇瑙嗛涔呬箙绮惧搧| 浜氭床鏃ユ湰鍏嶈垂| 69绮惧搧浜轰汉浜轰汉浜轰汉| 涔呬箙绮惧搧婵€鎯�| 娆х編铚滄鐔熷|