亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 7149 | 回復(fù): 14
打印 上一主題 下一主題

[C++] boost asio coroutine連接池 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-04-09 17:49 |只看該作者 |倒序?yàn)g覽
在采用asio coroutine多線程網(wǎng)絡(luò)的時(shí)候,每個(gè)線程綁定到一個(gè)io_service,這樣的話怎么在不加鎖的情況下使用socket連接池來(lái)處理連接復(fù)用

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
2 [報(bào)告]
發(fā)表于 2015-04-09 20:30 |只看該作者
本帖最后由 yulihua49 于 2015-04-09 21:05 編輯
lims_xlh 發(fā)表于 2015-04-09 17:49
在采用asio coroutine多線程網(wǎng)絡(luò)的時(shí)候,每個(gè)線程綁定到一個(gè)io_service,這樣的話怎么在不加鎖的情況下使用s ...

我這兩天正做這個(gè),快成了,還在調(diào)試。
三維的連接池管理。

一個(gè)服務(wù)器多個(gè)連接。
多個(gè)服務(wù)器組成cluster。有負(fù)載均衡和容錯(cuò)功能。
多個(gè)cluster構(gòu)成一個(gè)路由系統(tǒng),根據(jù)需求選擇路由(應(yīng)用路由,或稱交易路由)。

AIO coroutine 線程池  epoll  都用上了,看來(lái)還工作的不錯(cuò),就是容錯(cuò)還有些問(wèn)題,過(guò)幾天就可能調(diào)好了。
不過(guò),任何一個(gè)server并不綁定線程?蛻舳、線程、協(xié)程、服務(wù)器的連接,誰(shuí)也沒(méi)綁定誰(shuí),亂跳。線程鎖是少不了的,不過(guò)設(shè)計(jì)好了,它并不影響性能。
壓力測(cè)試,看日志,各種資源的隨機(jī)組合,眼花繚亂的。

其實(shí)線程鎖并不是那么可怕。影響性能的首要因素是寫(xiě)日志。其次是epoll的激活過(guò)程(單個(gè)epfd每秒最多激活15萬(wàn)次,與核和線程數(shù)無(wú)關(guān))。這倆其實(shí)也是鎖,內(nèi)部的,你管不了。其它鎖對(duì)性能對(duì)影響可忽略不計(jì)。

沒(méi)用boost,擔(dān)心其性能。
用的ucontext,擔(dān)心將來(lái)系統(tǒng)不支持。

將來(lái)有空研究下 setjmp/longjmp 的實(shí)現(xiàn)方法。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2015-04-10 10:13 |只看該作者
回復(fù) 2# yulihua49
但是對(duì)于異步 coroutine來(lái)說(shuō)鎖的開(kāi)銷是比較大的,因?yàn)楫惒绞怯帽M可能少的線程去做盡可能多的事情,有鎖等待就意味著它處理的其他的事情
精力變少了,會(huì)很影響性能吧,我現(xiàn)在的做法是每個(gè)線程內(nèi)維護(hù)一個(gè)連接隊(duì)列,每次來(lái)了client從連接里面拿一個(gè),不知道有沒(méi)有別的成熟的方案


   

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
4 [報(bào)告]
發(fā)表于 2015-04-10 12:59 |只看該作者
本帖最后由 yulihua49 于 2015-04-10 13:10 編輯
lims_xlh 發(fā)表于 2015-04-10 10:13
回復(fù) 2# yulihua49
但是對(duì)于異步 coroutine來(lái)說(shuō)鎖的開(kāi)銷是比較大的,因?yàn)楫惒绞怯帽M可能少的線程去做盡可 ...

總共就是一個(gè)context池,accept,來(lái)了個(gè)連接,就分配給它一個(gè)。然后丟到epoll隊(duì)列里。此后這個(gè)context就是獨(dú)享的了,操作這個(gè)context不需要鎖。前提是epoll沒(méi)有驚群,就是沒(méi)有把一個(gè)context分配給多個(gè)線程。
其他線程都在epoll_wait。抓到event,取出context,這時(shí),線程才臨時(shí)有了context。它沒(méi)有固定的context。
鎖的問(wèn)題比較復(fù)雜,一句兩句說(shuō)不清,總之要避免“無(wú)謂”的等待。
我一直主張采用一種成熟的中間件,自己寫(xiě)這些程序要面臨很多的問(wèn)題。

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
5 [報(bào)告]
發(fā)表于 2015-04-10 13:13 |只看該作者
本帖最后由 yulihua49 于 2015-04-10 13:19 編輯
lims_xlh 發(fā)表于 2015-04-10 10:13
回復(fù) 2# yulihua49
但是對(duì)于異步 coroutine來(lái)說(shuō)鎖的開(kāi)銷是比較大的,因?yàn)楫惒绞怯帽M可能少的線程去做盡可 ...

每個(gè)線程內(nèi)維護(hù)一個(gè)連接隊(duì)列,每次來(lái)了client從連接里面拿一個(gè)-------這個(gè)client綁在這個(gè)線程了?不利于負(fù)載均衡。
還是不要綁定的好,那個(gè)線程有空就哪個(gè)線程干。這樣平均響應(yīng)時(shí)間才快。
給你一種評(píng)估方法:最長(zhǎng)響應(yīng)時(shí)間/平均響應(yīng)時(shí)間,越小越好,你可以把幾個(gè)方案評(píng)測(cè)一下。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2015-04-10 14:50 |只看該作者
回復(fù) 4# yulihua49
我上面可能沒(méi)說(shuō)清楚:
我現(xiàn)在的情況是這樣的,我使用的boost asio 加coroutine,
boost asio 用IOCP封裝了epoll ,我現(xiàn)在有一個(gè)線程,accept一個(gè)客戶端,然后給客戶端分配一個(gè)socket(連接后端服務(wù)的socket)去連接后端服務(wù)做業(yè)務(wù),
在這個(gè)socket上面可能會(huì)讀寫(xiě)數(shù)據(jù),但是iocp是等到讀寫(xiě)事件完成了之后就回調(diào)完成函數(shù),在等待讀寫(xiě)時(shí)間的過(guò)程中courotine是可以讓這個(gè)線程去accept
新的客戶端的,這樣這個(gè)新的客戶端可能也需要一個(gè)socket去處理后端業(yè)務(wù)。

根據(jù)上面情況每個(gè)線程就會(huì)操作多個(gè)client和 socket,我怎么更好的復(fù)用這個(gè)線程使用的所有的socket呢?

   

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
7 [報(bào)告]
發(fā)表于 2015-04-10 16:29 |只看該作者
本帖最后由 yulihua49 于 2015-04-10 16:32 編輯

回復(fù) 6# lims_xlh

一個(gè)主線程accept,得到客戶socket后分配它c(diǎn)ontext。然后拋給epoll。繼續(xù)accept。
一群工作線程epoll_wait,誰(shuí)撿到event算誰(shuí)的。這樣,所有的工作線程搶所有的context。


   

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
8 [報(bào)告]
發(fā)表于 2015-04-13 16:16 |只看該作者
yulihua49 發(fā)表于 2015-04-09 20:30
我這兩天正做這個(gè),快成了,還在調(diào)試。
三維的連接池管理。


容錯(cuò)測(cè)試今天基本通過(guò)。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
9 [報(bào)告]
發(fā)表于 2015-04-13 18:23 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
10 [報(bào)告]
發(fā)表于 2015-04-13 19:35 |只看該作者
本帖最后由 yulihua49 于 2015-04-13 19:47 編輯

[quote]BetonArmEE 發(fā)表于 2015-04-13 18:23
牛逼。我現(xiàn)在整天都在寫(xiě)業(yè)務(wù),沒(méi)時(shí)間搞技術(shù)了,唉[/quote
嗯。
平臺(tái)需要專人搞。做業(yè)務(wù)哪有功夫弄平臺(tái)?一個(gè)東西要弄好幾個(gè)月,只用于一個(gè)項(xiàng)目未免成本過(guò)高,再說(shuō)一般情況也不允許花這么大代價(jià)搞基礎(chǔ)設(shè)施。
另一方面,如果你的平臺(tái)沒(méi)有集成盡可能多的精英技術(shù),也就失去了存在價(jià)值。
都是常規(guī)技術(shù),人家用不著你,自己都解決了。

不過(guò)我的體會(huì),倒不是這些技術(shù)有多精英,而是在把它們組合在一起時(shí),太多的不確定性。組合成穩(wěn)定的大雜燴,太困難了。

G5是你的?我原想結(jié)合G5來(lái)做負(fù)載均衡,F(xiàn)在看來(lái)不用了。樓上那個(gè)架構(gòu),包含了負(fù)載均衡/容錯(cuò)層,夠用了。
對(duì)G5依然很讚賞。

容錯(cuò)還有不滿意,keepalive有時(shí)還是需要較長(zhǎng)的時(shí)間才能確認(rèn)一個(gè)資源失效。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP