fiendcly 发表于 2012-08-28 19:09

設計一個雙向溝通即時知道對方狀態的伺服器

下午想了又想....想了又想....

先畫了這張圖...

我的需求是建立一個 雙向溝通的 即時知道對方狀態的伺服器

我先把想法畫成一張圖.....


http://bbs.ecstart.com/php_tech/arc5.jpg


1 會走向 2 也會走向 3 如果往 3 走上去 會走向 4 跟 5 .

如果停在 5 上面 則 5 跟 6 會不停的去讀取 Vector OR MAP 的內容 , 判斷要發送 TCP 給那些人.

如果都處理完了 6 就會走回 4 再走回 1,2,3,4 那二圈.

讓 5,6 會因為 使用者共同組織了一個組織 在裡頭時才會不停的把 TCP 送給 5,6 迴路的人.

讓 5,6 迴路的人可以互相即時知道對方的動態........

提供參考....


有什麼好的建議~~請多多建議~~謝謝~~

PS : 就是不想用 UDP 封包 做才想破頭... >_<" 別建議我用 UDP 做...

fiendcly 发表于 2012-08-29 06:51

本帖最后由 fiendcly 于 2012-08-29 06:54 编辑

這個板沒有 TCP 的專業人士嗎.......


畫圈圈中~~~


duanjigang 发表于 2012-08-31 07:29

没看到图

fiendcly 发表于 2012-08-31 13:39

duanjigang 发表于 2012-08-31 07:29 static/image/common/back.gif
没看到图

可能是你們繞不到台灣的機房.

fiendcly 发表于 2012-08-31 13:39

昨天實驗了一下

5,6 群組的楖念~會造成~3 , 4被影響 .

如果想要 5,6 / 3,4 都有在做

而且 3,4 是一個由 CLIENT 個人發動個人讀取的 開關.

5,6 則是共享在一個 群組 讀取 3,4 的行為來決定要發動給這群組相關的人.

解法我能想到的只有二種~~

FORK 取用 共用 記憶體. SHM ( LINUX KERNEL 層的一個技巧 )

THREAD 共用資源 開 THREAD 出來跑~~

後來我選用 THREAD , 這樣可移值性會高一點~

yangsf5 发表于 2012-09-19 09:57

1、2、3为读事件,放一起维护。
读完一次完整数据,当一个job,扔给线程池。
线程池里边是job的逻辑。

5、6、4为一起维护,为写事件。
逻辑作完,就触发一个写事件。



如果你的业务简单,并发量低,单线程都可以搞定。
epoll,select,IOCP这些了解吗?
C++:libevent等
Java:netty,NIO

linux_c_py_php 发表于 2012-09-20 13:50

自己读lighttpd/nginx/memcached源码, 网络开发能力基本就到头了.

问了白问.

不想写就考虑XMPP(JABBERD2)

fiendcly 发表于 2012-09-21 08:35

本帖最后由 fiendcly 于 2012-09-21 08:39 编辑

@@" 這專案我己經全部寫完了.

架構圖也改了很多...

後來又做了 群組TCP廣撥和同房間資訊互通 還有 二個 TCP SERVER 互相溝通並且廣撥到另一個TCP SERVER 的功能.

謝謝大家熱情回答..

fiendcly 发表于 2012-09-21 08:41

本帖最后由 fiendcly 于 2012-09-21 08:42 编辑

linux_c_py_php 发表于 2012-09-20 13:50 static/image/common/back.gif
自己读lighttpd/nginx/memcached源码, 网络开发能力基本就到头了.

问了白问.


@@ SOCKET 的應用應該算是最基本的應用.

網路應用的 LAYER 2,3,4 層的應用也很好玩....

L4 層應用應該算是入門不太覺得是到頭了.



页: [1]
查看完整版本: 設計一個雙向溝通即時知道對方狀態的伺服器