电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java游戲服務(wù)器系列之Netty相關(guān)知識(shí)總結(jié)

瀏覽:7日期:2022-08-11 18:55:21
目錄一、簡(jiǎn)介二、Netty的應(yīng)用場(chǎng)景三、異步和事件驅(qū)動(dòng)性四、Netty核心組件五、總結(jié)一、簡(jiǎn)介

Java的底層API逐漸復(fù)雜,而開發(fā)者面對(duì)的開發(fā)場(chǎng)景需求也在逐漸增大。如果直接針對(duì)底層API進(jìn)行編程,無(wú)疑是耗時(shí)耗力的。這時(shí)就催生了極多的編程框架,這些框架隱藏了API實(shí)現(xiàn)的復(fù)雜細(xì)節(jié),以最簡(jiǎn)潔的方式給開發(fā)人員提供功能的實(shí)現(xiàn)接口。Netty就是一款針對(duì)于網(wǎng)絡(luò)鏈接的框架,他的出現(xiàn)讓服務(wù)器開發(fā)人員更加的集中關(guān)注于更多邏輯的實(shí)現(xiàn),而不為了實(shí)現(xiàn)更好更多更穩(wěn)定的鏈接而頭疼。Netty的核心功能基于NIO 實(shí)現(xiàn)。

二、Netty的應(yīng)用場(chǎng)景

幾乎適用于所有的長(zhǎng)短鏈接場(chǎng)景,由于Java應(yīng)用的廣泛性,幾乎所有的互聯(lián)網(wǎng)公司或多或少的都會(huì)使用到。博主從事游戲開發(fā),可以說幾乎所有短鏈接游戲服務(wù)器都是使用Netty開發(fā),實(shí)效性要求比較高也有熱修復(fù)需求的服務(wù)器一般不會(huì)使用Java,目前采用更多的是C+Lua的組合方式。Java不可以熱修復(fù)是很多長(zhǎng)鏈服務(wù)器不考慮java 的一個(gè)重要原因。

三、異步和事件驅(qū)動(dòng)性

NIO 文章中強(qiáng)調(diào)了,這種模型的主要特地拿就是異步和事件驅(qū)動(dòng)性,異步是服務(wù)器不需要一直等待鏈接輸入直到鏈接關(guān)閉。而是可以在某個(gè)特定的時(shí)候去相應(yīng)鏈接的輸入,而特定的時(shí)候就是另一個(gè)事件驅(qū)動(dòng)性,鏈接發(fā)生變化時(shí),會(huì)產(chǎn)生一個(gè)事件,而NIO模型檢測(cè)到這個(gè)事件之后,會(huì)去相應(yīng)這個(gè)事件的處理事件。

四、Netty核心組件

1.Channel:

Channel時(shí)Java-NIO的一個(gè)基本構(gòu)造,它代表到一個(gè)實(shí)體的開放鏈接,如讀操作和寫操作,在NIO模型中也可以被理解成一個(gè)入站或者出站的數(shù)據(jù)載體,可以被關(guān)閉或者關(guān)閉。

2.回調(diào) ChannelHandler:

一個(gè)回調(diào)就是一個(gè)方法,Netty提供了兩個(gè)子類,ChannelInboundHandlerAdapter 以及 ChannelOutboundHandlerAdapter ,這兩個(gè)子類分別可以應(yīng)用于數(shù)據(jù)進(jìn)站和出站時(shí)期,各種階段的回調(diào),比如入站時(shí)Active方法,表明鏈接剛剛被建立起,代碼如下:

public class ConnectHandler extend ChannelInboundHandlerAdapter{@overridepublic void ChannelActive(ChannelHandlerContext ctx){//數(shù)據(jù)入站回調(diào)子類被建立時(shí)調(diào)用,也就是鏈接建立時(shí)調(diào)用System.out.println('遠(yuǎn)程客戶端 : '+ ctx.channel().remoteAddress() + ’建立鏈接’);}}

不了解Netty的讀者看到這里可能會(huì)有點(diǎn)疑惑,這個(gè)類應(yīng)該怎么用。這里簡(jiǎn)單的解釋一下:這種類會(huì)在Netty創(chuàng)建的時(shí)候注冊(cè)進(jìn)服務(wù)中,然后在數(shù)據(jù)進(jìn)站、出站的不同階段,調(diào)用這個(gè)類中不同的回調(diào)函數(shù),以處理不同的開發(fā)需求。可以關(guān)注一下讀者其他的文章

3.Future:

jdk-Future:Java中提供了Future的實(shí)現(xiàn),這種Futrue可以看作是一個(gè)異步操作結(jié)果的占位符。我們可以通過這個(gè)Future查詢到這個(gè)異步操作的結(jié)果,并進(jìn)行一些處理。比如在操作失敗的時(shí)候拋出異常。但是jdk內(nèi)置的Future的查詢只能在某個(gè)時(shí)刻手動(dòng)去查詢結(jié)果,或者直接阻塞這個(gè)異步操作,直到異步完成操作之后可以查詢Future的成功或者失敗。ChannelFuture:Netty內(nèi)部提供的Future實(shí)現(xiàn)類,很多異步操作在執(zhí)行的時(shí)候都會(huì)返回一個(gè)ChannelFuture對(duì)象,我們可以針對(duì)這個(gè)ChannelFuture對(duì)象設(shè)置一些回調(diào)函數(shù),比如重寫operationComplete()方法,這樣這個(gè)異步事件在完成的時(shí)候會(huì)自動(dòng)調(diào)用這個(gè)方法,并且執(zhí)行我們自己的處理邏輯。接下來可以看一下ChannelFuture的應(yīng)用實(shí)例,檢測(cè)Netty服務(wù)器鏈接遠(yuǎn)程地址是否成功:

Channel channel = '';//鏈接地址192.168.100.113 的7000端口InetSocketAddress socketAddress = new InetSocketAddress('192.168.100.113',7000);//管道綁定地址并返回一個(gè)ChannelFutureChannelFuture channelFuture = channel.connect(socketAddress);//給ChannelFuture設(shè)置完成回調(diào),判斷這個(gè)操作是否完成channelFuture.addListener(new ChannelFutureListener(){@overridepublic void operationComplete(ChannelFuture future){if(future.isSucess()){//創(chuàng)建一個(gè)字符串,并指定所使用的字符集,下面這種寫法是Netty中經(jīng)常遇到的ByteBuf buffer = Unpooled.copiedBuffer('Hello',Charset.defaultCharset());//發(fā)送信息并且返回一個(gè)新的writeFuture,依舊可以根據(jù)這個(gè)writeFuture處理一些邏輯ChannelFuture writeFuture = future.channel().writeAndFlush(buffer);}else{//鏈接失敗則答應(yīng)出失敗的消息Throwable cause = future.cause();cause.printStackTrace();}}})五、總結(jié)

Netty以一種異步事件驅(qū)動(dòng)以及回調(diào)的方式,能幫我們快速完善服務(wù)器處理數(shù)據(jù)的進(jìn)出,以及各個(gè)流程細(xì)節(jié)中的處理邏輯。極大的精簡(jiǎn)了服務(wù)器開發(fā)人員在,鏈接處理,數(shù)據(jù)出入方面的開發(fā)工作。是一個(gè)及其易用且穩(wěn)定的網(wǎng)絡(luò)開發(fā)框架。

到此這篇關(guān)于Java游戲服務(wù)器系列之Netty相關(guān)知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)Java Netty內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 达利园物流科技集团-| 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 杭州双螺杆挤出机-百科 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 九爱图纸|机械CAD图纸下载交流中心 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂| 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 路面机械厂家| 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 视频直播 -摄影摄像-视频拍摄-直播分发| 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 塑料脸盆批发,塑料盆生产厂家,临沂塑料广告盆,临沂家用塑料盆-临沂市永顺塑业 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 证券新闻,热播美式保罗1984第二部_腾讯1080p-仁爱影院 | 广州各区危化证办理_危险化学品经营许可证代办 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 中药超微粉碎机(中药细胞级微粉碎)-百科 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 |