18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)注解實(shí)現(xiàn)WebSocket集群的方案

jf_ro2CN3Fa ? 來源:CSDN ? 2023-04-10 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

WebSocket大家應(yīng)該是再熟悉不過了,如果是單體應(yīng)用確實(shí)不會(huì)有什么問題,但是當(dāng)我們的項(xiàng)目使用微服務(wù)架構(gòu)時(shí),就可能會(huì)存在問題

比如服務(wù)A有兩個(gè)實(shí)例A1和A2,前端的WebSocket客戶端C通過網(wǎng)關(guān)的負(fù)載均衡連到了A1,這個(gè)時(shí)候當(dāng)A2觸發(fā)消息發(fā)送的邏輯,需要將某個(gè)消息發(fā)送給所有的客戶端時(shí),C就接受不到消息

這個(gè)時(shí)候我們很快就能想到一種最簡(jiǎn)單的解決方案,就是把A2的消息轉(zhuǎn)發(fā)給A1,A1再把消息發(fā)送給C,這樣C就能收到A2發(fā)送的消息了

81f46d56-d6c8-11ed-bfe3-dac502259ad0.png

基于這個(gè)思路,我實(shí)現(xiàn)了一個(gè)庫(kù),一個(gè)配置注解搞定一切

用法

接下來讓我們看看這個(gè)庫(kù)的用法

首先我們需要在啟動(dòng)類上添加一個(gè)注解@EnableWebSocketLoadBalanceConcept

@EnableWebSocketLoadBalanceConcept
@EnableDiscoveryClient
@SpringBootApplication
publicclassAServiceApplication{

publicstaticvoidmain(String[]args){
SpringApplication.run(AServiceApplication.class,args);
}
}

接著我們?cè)谛枰l(fā)送消息的地方注入WebSocketLoadBalanceConcept就可以愉快的跨實(shí)例發(fā)消息啦

@RestController
@RequestMapping("/ws")
publicclassWsController{

@Autowired
privateWebSocketLoadBalanceConceptconcept;

@RequestMapping("/send")
publicvoidsend(@RequestParamStringmsg){
concept.send(msg);
}
}

是不是很簡(jiǎn)單,有沒有覺得比自己集成單體應(yīng)用的WebSocket還要簡(jiǎn)單!

當(dāng)你的同事還在頭疼要實(shí)現(xiàn)手動(dòng)轉(zhuǎn)發(fā)時(shí)你已經(jīng)通過一個(gè)配置注解實(shí)現(xiàn)了功能并開始泡茶喝

你的同事肯定對(duì)你刮目相看啊(又能開始摸魚了)

不知道大家看了之后是不是對(duì)具體實(shí)現(xiàn)已經(jīng)有了一些思路呢

接下來我就來講講這個(gè)庫(kù)的實(shí)現(xiàn)流程

抽象思路

其實(shí)我之前有專門針對(duì)WebSocket實(shí)現(xiàn)過類似功能的模塊,只是當(dāng)時(shí)的一些場(chǎng)景都是基于項(xiàng)目定死的,所以相對(duì)來說實(shí)現(xiàn)比較簡(jiǎn)單,但是過于定制化不好擴(kuò)展

有一天在和我的一個(gè)前同事聊天的過程中得知,他們?cè)诳紤]讓設(shè)備和服務(wù)直連,并且服務(wù)要部署成多實(shí)例

設(shè)備和服務(wù)直連無(wú)非就是通過TCP這種長(zhǎng)連接來實(shí)現(xiàn),可以使用緩存來保存連接和服務(wù)地址的映射關(guān)系來實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)轉(zhuǎn)發(fā)的功能需求

聽到這里,是不是感覺似曾相識(shí)?當(dāng)時(shí)就有一道光穿過我的腦瓜子,真相只有一個(gè)!這不就和WebSocket在集群模式下的問題一樣么

于是我從原來針對(duì)WebSocket的思考,變成了對(duì)各種長(zhǎng)連接的思考,最終我將這個(gè)問題抽象成了:長(zhǎng)連接的集群方案

而不管是WebSocket還是TCP都是長(zhǎng)連接的一種具體實(shí)現(xiàn)

所以我們可以抽象一個(gè)頂級(jí)接口Connection,然后實(shí)現(xiàn)WebSocketConnection或者是TCPConnection

其實(shí)從抽象的角度來說不僅僅是長(zhǎng)連接,短連接也在我們的抽象范圍之內(nèi),只不過類似HTTP等協(xié)議并不存在上述的問題,但是并不妨礙你實(shí)現(xiàn)一個(gè)HTTPConnection用于轉(zhuǎn)發(fā)消息,所以大家不要被先入為主的思維束縛住了

轉(zhuǎn)發(fā)思路

之前講到,這個(gè)庫(kù)的主要思路就是將消息轉(zhuǎn)發(fā)給其他的服務(wù)實(shí)例來達(dá)到一個(gè)單播或廣播的效果

所以消息轉(zhuǎn)發(fā)的設(shè)計(jì)就非常重要了

首先消息轉(zhuǎn)發(fā)需要憑借一些支持?jǐn)?shù)據(jù)交互的技術(shù)手段

比如HTTP,MQ,TCP,WebSocket

說到這里。。。大家是不是。。。你TM原來自己就能搞定?。ㄏ谱溃?/p>

長(zhǎng)連接不就是用來交互數(shù)據(jù)的嗎,所以完全可以自給自足啊

于是就有一個(gè)精妙的想法在我腦子里形成:

如果每個(gè)服務(wù)實(shí)例都把自己作為一個(gè)客戶端,連接到其他服務(wù)上呢?

WebSocket的場(chǎng)景下,我們將當(dāng)前服務(wù)實(shí)例作為一個(gè)WebSocket客戶端去連接其他服務(wù)實(shí)例的WebSocket服務(wù)端

TCP的場(chǎng)景下,我們將當(dāng)前服務(wù)實(shí)例作為一個(gè)TCP的客戶端去連接其他服務(wù)實(shí)例的TCP服務(wù)端

這樣其他服務(wù)實(shí)例就可以把消息發(fā)到這些偽裝的客戶端上,當(dāng)服務(wù)實(shí)例上偽裝的客戶端接收到消息之后就可以再轉(zhuǎn)發(fā)給自己管理的真正的客戶端

撒花家人們,自閉(自我閉環(huán))了屬于是

所以我們首先需要先讓服務(wù)實(shí)例之間相互連接上

連接流程

讓我們來看看互相建立連接是怎么設(shè)計(jì)的

82155278-d6c8-11ed-bfe3-dac502259ad0.png

我定義了一個(gè)ConnectionSubscriber的接口,大家可以理解為我們的服務(wù)實(shí)例要去訂閱監(jiān)聽其他服務(wù)發(fā)送的消息

同時(shí)提供了默認(rèn)實(shí)現(xiàn),就是基于自身的協(xié)議進(jìn)行連接和消息的發(fā)送

當(dāng)然也能夠靈活的支持其他方式,只需要自定義一個(gè)ConnectionSubscriber就可以了,如果使用MQ的方式就可以實(shí)現(xiàn)一個(gè)MQConnectionSubscriber或者使用HTTP就可以實(shí)現(xiàn)一個(gè)HTTPConnectionSubscriber

只不過使用自身的協(xié)議就可以不用依賴其他的庫(kù)或是中間件了,當(dāng)然如果你對(duì)消息的丟失率有比較嚴(yán)格的要求也可以使用MQ作為消息轉(zhuǎn)發(fā)的中介,而以我之前參與過的項(xiàng)目來說,一般普通的WebSocket場(chǎng)景基本上還是能忍受一定的丟失率的

獲取服務(wù)實(shí)例信息

那么我們?cè)趺粗酪ミB接哪些實(shí)例呢

我定義了一個(gè)ConnectionServerManager的接口用來管理服務(wù)信息

當(dāng)然我們完全可以自己實(shí)現(xiàn)一個(gè),比如通過配置文件來配置服務(wù)實(shí)例信息

不過我們有更方便的方式,那就是依賴Spring Cloud的服務(wù)發(fā)現(xiàn)組件了,不管是Eureka還是Nacos還是其他的注冊(cè)中心相當(dāng)于都支持了,這就是抽象的魅力啊

我們可以通過DiscoveryClient#getInstances(Registration.getServiceId())來獲得所有的實(shí)例,排除掉自身就是需要連接的服務(wù)實(shí)例了

當(dāng)我們的服務(wù)實(shí)例連接上其他的服務(wù)實(shí)例之后,發(fā)送一個(gè)自身實(shí)例信息的消息過去,其他的服務(wù)實(shí)例接收到對(duì)應(yīng)的消息之后反過來連接我們的服務(wù)實(shí)例,保證一定的連接及時(shí)性,這樣雙方的連接就搭建起來了,可以互相轉(zhuǎn)發(fā)消息了

同時(shí)我還添加了心跳檢測(cè)和自動(dòng)重連,當(dāng)一段時(shí)間沒有收到心跳回復(fù)后就會(huì)斷開連接,并且每隔一段時(shí)間就會(huì)重新查詢一遍實(shí)例信息,如果發(fā)現(xiàn)存在某個(gè)服務(wù)實(shí)例沒有對(duì)應(yīng)的連接,就會(huì)重新進(jìn)行連接,這樣就能在某些偶爾網(wǎng)絡(luò)不好的情況下有一定的容錯(cuò)

到目前為止,我們基本的框架已經(jīng)建立了,當(dāng)我們啟動(dòng)服務(wù)之后,服務(wù)間就會(huì)自動(dòng)建立連接

連接區(qū)分和管理

基于上述的思路,我們肯定需要區(qū)分真實(shí)的客戶端和用來轉(zhuǎn)發(fā)的客戶端

于是我就把這些連接做了一個(gè)分類

類別 說明
Client 普通的連接
Subscriber 服務(wù)實(shí)例偽裝的連接,用于接受需要轉(zhuǎn)發(fā)的消息
Observable 服務(wù)實(shí)例偽裝的連接,用于發(fā)送需要轉(zhuǎn)發(fā)的消息

然后對(duì)于這些連接進(jìn)行一個(gè)統(tǒng)一的管理

826dec12-d6c8-11ed-bfe3-dac502259ad0.png

通過連接工廠ConnectionFactory我們可以將任意的連接適配成Connection對(duì)象,并實(shí)現(xiàn)各種連接間的消息轉(zhuǎn)發(fā)

每個(gè)連接都會(huì)配置一個(gè)MessageEncoder和MessageDecoder用于消息的編碼和解碼,而且不同類別的連接對(duì)應(yīng)的編碼器和解碼器肯定是不一樣的,比如轉(zhuǎn)發(fā)的消息和發(fā)給真實(shí)客戶端的消息很大程度上都是有區(qū)別的,所以額外定義了一個(gè)MessageCodecAdapter用來適配不同類型的編解碼器,也能讓大家在自定義時(shí)方便管理

消息發(fā)送

現(xiàn)在當(dāng)我們發(fā)送某條消息之后,消息就會(huì)被轉(zhuǎn)發(fā)到其他的服務(wù)實(shí)例,所有的客戶端就都能收到了

不對(duì)啊,在有些情況下我們不想讓所有客戶端都收到啊,能不能我們想讓誰(shuí)收到就讓誰(shuí)收到啊

真麻煩,來,我把所有的連接都給你,你自己選吧

連接選擇

我們需要在消息發(fā)送時(shí)確定發(fā)送給哪些連接

82cd30be-d6c8-11ed-bfe3-dac502259ad0.png

于是我就定義了一個(gè)連接選擇器ConnectionSelector

每次要發(fā)送消息的時(shí)候,我都會(huì)匹配一個(gè)連接選擇器,然后通過選擇器來獲得需要發(fā)送消息的連接,而我們可以通過自定義連接選擇器來實(shí)現(xiàn)我們消息的精準(zhǔn)發(fā)送

這里其實(shí)就是我為什么會(huì)取名WebSocketLoadBalanceConcept的原因,為什么要叫LoadBalance呢

Ribbon通過IRule來選擇一個(gè)Server

我通過ConnectionSelector來選擇一個(gè)Connection集合

是不是有異曲同工之妙

繼續(xù)來說自定義選擇器

準(zhǔn)備工作:

我們的Connection有一個(gè)metadata字段用于存放自定義屬性

我們的Message有一個(gè)headers字段用于存放消息頭

給指定用戶發(fā)送消息

很多場(chǎng)景下我們需要給指定的用戶發(fā)送消息

首先當(dāng)客戶端連接上來時(shí),可以通過參數(shù)或者主動(dòng)發(fā)送一個(gè)消息將userId發(fā)給服務(wù)端,然后服務(wù)端將得到的userId存在Connection的metadata中

接著我們給需要發(fā)送的Message添加一個(gè)header,將對(duì)應(yīng)的userId作為消息頭

這樣我們就可以自定義一個(gè)連接選擇器通過判斷Message是否包含userId消息頭來作為匹配的條件,當(dāng)Message的headers中存在userId時(shí),對(duì)Connection中的metadata進(jìn)行userId的匹配來篩選需要發(fā)送消息的連接

由于userId是唯一的,當(dāng)我們自身服務(wù)連上來的客戶端中已經(jīng)匹配到就不需要再轉(zhuǎn)發(fā)了,如果沒有匹配到就通過其他服務(wù)實(shí)例的客戶端進(jìn)行消息轉(zhuǎn)發(fā)

庫(kù)中已經(jīng)實(shí)現(xiàn)了對(duì)應(yīng)的UserSelector和UserMessage,可以使用配置開啟并通過在連接路徑上添加userId參數(shù)來標(biāo)記用戶

當(dāng)然我們也可以借用緩存來精確的判斷需不需要轉(zhuǎn)發(fā)或者是需要轉(zhuǎn)發(fā)給哪幾個(gè)服務(wù),把userId和服務(wù)的instanceId等一些具有唯一性的數(shù)據(jù)緩存在Redis中,當(dāng)給用戶發(fā)送消息時(shí),從Redis中獲得用戶對(duì)應(yīng)的服務(wù)實(shí)例的instanceId或是具有唯一性的數(shù)據(jù),如果經(jīng)過匹配就是當(dāng)前服務(wù)就可以直接下發(fā),如果是其他服務(wù)就轉(zhuǎn)發(fā)給那個(gè)對(duì)應(yīng)的服務(wù)就行了

給指定路徑發(fā)送消息

還有一種場(chǎng)景也比較常見就是類似主題訂閱,如訂閱設(shè)備狀態(tài)更新的數(shù)據(jù),就要給每一個(gè)對(duì)應(yīng)路徑的連接發(fā)送消息了

我們可以使用不同的路徑來表示不同主題,然后自定義一個(gè)連接選擇器來匹配連接的路徑和消息頭中指定的路徑

當(dāng)然庫(kù)中也已經(jīng)實(shí)現(xiàn)了對(duì)應(yīng)的PathSelector和PathMessage,可以通過配置開啟

結(jié)束

最后請(qǐng)?jiān)试S我發(fā)表一點(diǎn)對(duì)于抽象的拙見

抽象其實(shí)就和 “道生一,一生二,二生三,三生萬(wàn)物” 一樣,根據(jù)你的頂級(jí)接口(也就是核心功能)不斷的向外展開,你的頂級(jí)接口就是道(狹義的來講)

以這個(gè)庫(kù)為例,ConnectionLoadBalanceConcept就是這個(gè)庫(kù)的道,他的核心功能就是發(fā)送消息,至于怎么發(fā),發(fā)給誰(shuí),不確定,像是一個(gè)混沌的狀態(tài)

那么什么是一,二,三呢,我們發(fā)送消息需要載體于是就有了Connection和Message,我們需要對(duì)Connection進(jìn)行管理于是就有了ConnectionRepository,我們需要轉(zhuǎn)發(fā)消息于是就有了ConnectionSubscriber等等

而萬(wàn)物就像是具體的實(shí)現(xiàn),是能落實(shí)的,基于Spring Cloud服務(wù)發(fā)現(xiàn)的連接管理器DiscoveryConnectionServerManager,基于路徑的連接選擇器PathSelector,基于Reactive的WebSocket連接ReactiveWebSocketConnection

就像是你創(chuàng)造的世界,不斷的衍生出各種各樣的規(guī)則,這些規(guī)則相輔相成,讓你的世界平穩(wěn)的運(yùn)行。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HTTP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    10466
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4733
  • WebSocket
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    4309

原文標(biāo)題:一個(gè)注解實(shí)現(xiàn) WebSocket 集群方案,這樣玩才爽!

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    文吃透WebSocket:智能物聯(lián)網(wǎng)通信的入門與實(shí)戰(zhàn)全攻略!

    想在智能物聯(lián)網(wǎng)項(xiàng)目中實(shí)現(xiàn)設(shè)備與平臺(tái)的實(shí)時(shí)“對(duì)話”?WebSocket是你的最佳選擇。本文作為份完整的學(xué)習(xí)與實(shí)戰(zhàn)攻略,從基礎(chǔ)概念講起,逐步深入到編碼實(shí)踐,涵蓋協(xié)議細(xì)節(jié)、開發(fā)框架與常見問題解決
    的頭像 發(fā)表于 10-15 18:16 ?10次閱讀
    <b class='flag-5'>一</b>文吃透<b class='flag-5'>WebSocket</b>:智能物聯(lián)網(wǎng)通信的入門與實(shí)戰(zhàn)全攻略!

    智能物聯(lián)網(wǎng)實(shí)時(shí)通信實(shí)戰(zhàn):WebSocket技術(shù)解析 !

    輔以實(shí)戰(zhàn)案例,助你快速上手。 WebSocket基礎(chǔ)知識(shí) 1.1 ?什么是Websocket? WebSocket是HTML5下種新的
    的頭像 發(fā)表于 10-15 18:16 ?637次閱讀
    智能物聯(lián)網(wǎng)實(shí)時(shí)通信實(shí)戰(zhàn):<b class='flag-5'>WebSocket</b>技術(shù)解析 !

    標(biāo)準(zhǔn)集群和虛擬集群的區(qū)別是什么?

    遵循行業(yè)標(biāo)準(zhǔn)就可以互聯(lián)互通。 虛擬集群則是在DMR常規(guī)數(shù)字模式基礎(chǔ)上,通過私有協(xié)議和軟件控制實(shí)現(xiàn)的“準(zhǔn)集群”功能。它不是個(gè)官方標(biāo)準(zhǔn),而是對(duì)
    的頭像 發(fā)表于 09-19 16:52 ?404次閱讀
    標(biāo)準(zhǔn)<b class='flag-5'>集群</b>和虛擬<b class='flag-5'>集群</b>的區(qū)別是什么?

    文看懂AI算力集群

    最近這幾年,AI浪潮席卷全球,成為整個(gè)社會(huì)的關(guān)注焦點(diǎn)。大家在討論AI的時(shí)候,經(jīng)常會(huì)提到AI算力集群。AI的三要素,是算力、算法和數(shù)據(jù)。而AI算力集群,就是目前最主要的算力來源。它就像個(gè)
    的頭像 發(fā)表于 07-23 12:18 ?576次閱讀
    <b class='flag-5'>一</b>文看懂AI算力<b class='flag-5'>集群</b>

    Redis集群部署配置詳解

    Redis集群種分布式Redis解決方案,通過數(shù)據(jù)分片和主從復(fù)制實(shí)現(xiàn)高可用性和橫向擴(kuò)展。集群將整個(gè)數(shù)據(jù)集分割成16384
    的頭像 發(fā)表于 07-17 11:04 ?493次閱讀

    MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺(tái)實(shí)現(xiàn)方案

    該項(xiàng)目共分為2個(gè)子項(xiàng)目,由MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺(tái)兩部分組成。
    的頭像 發(fā)表于 05-28 10:10 ?913次閱讀
    MYSQL<b class='flag-5'>集群</b>高可用和數(shù)據(jù)監(jiān)控平臺(tái)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方案</b>

    Ubuntu K8s集群安全加固方案

    在Ubuntu系統(tǒng)上部署Kubernetes集群時(shí),若服務(wù)器擁有外網(wǎng)IP,需采取多層次安全防護(hù)措施以確保集群安全。本方案通過系統(tǒng)防火墻配置、TLS通信啟用、網(wǎng)絡(luò)策略實(shí)施和RBAC權(quán)限控制四個(gè)
    的頭像 發(fā)表于 05-12 16:17 ?524次閱讀

    解鎖樹莓派集群步步打造你的超級(jí)計(jì)算陣列!

    樹莓派集群簡(jiǎn)介樹莓派集群是由多臺(tái)聯(lián)網(wǎng)的樹莓派計(jì)算機(jī)組成的網(wǎng)絡(luò),它們作為個(gè)統(tǒng)、協(xié)調(diào)的單元協(xié)同工作。通過連接多臺(tái)樹莓派,用戶可以創(chuàng)建
    的頭像 發(fā)表于 04-25 16:17 ?1635次閱讀
    解鎖樹莓派<b class='flag-5'>集群</b>:<b class='flag-5'>一</b>步步打造你的超級(jí)計(jì)算陣列!

    redis三種集群方案詳解

    在Redis中提供的集群方案總共有三種(個(gè)redis節(jié)點(diǎn)不超過10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?1131次閱讀
    redis三種<b class='flag-5'>集群</b><b class='flag-5'>方案</b>詳解

    AWTK-WEB 快速入門(6) - JS WebSocket 應(yīng)用程序

    WebSocket可以實(shí)現(xiàn)雙向通信,適合實(shí)時(shí)通信場(chǎng)景。本文介紹下使用Javacript語(yǔ)言開發(fā)AWTK-WEB應(yīng)用程序,并用WebSocket與服務(wù)器通訊。用AWTKDesigner
    的頭像 發(fā)表于 02-26 11:42 ?536次閱讀
    AWTK-WEB 快速入門(6) - JS <b class='flag-5'>WebSocket</b> 應(yīng)用程序

    AWTK-WEB 快速入門(5) - C 語(yǔ)言 WebSocket 應(yīng)用程序

    導(dǎo)讀WebSocket可以實(shí)現(xiàn)雙向通信,適合實(shí)時(shí)通信場(chǎng)景。本文介紹下使用C語(yǔ)言開發(fā)AWTK-WEB應(yīng)用程序,并用WebSocket與服務(wù)器通訊。用AWTKDesigner新建
    的頭像 發(fā)表于 02-19 11:49 ?697次閱讀
    AWTK-WEB 快速入門(5) - C 語(yǔ)言 <b class='flag-5'>WebSocket</b> 應(yīng)用程序

    國(guó)產(chǎn)智算集群黑馬!曦源號(hào)SADA算力集群綜合評(píng)測(cè)表現(xiàn)優(yōu)異

    穩(wěn)定性、線性度、模型支持度等多個(gè)維度均表現(xiàn)優(yōu)異。加佳科技長(zhǎng)期深耕國(guó)產(chǎn)替代數(shù)字科技的技術(shù)研發(fā)、平臺(tái)運(yùn)營(yíng)與解決方案提供。旗下曦源號(hào)SADA萬(wàn)卡集群通過構(gòu)建開放、標(biāo)準(zhǔn)、
    的頭像 發(fā)表于 12-25 11:16 ?1107次閱讀
    國(guó)產(chǎn)智算<b class='flag-5'>集群</b>黑馬!曦源<b class='flag-5'>一</b>號(hào)SADA算力<b class='flag-5'>集群</b>綜合評(píng)測(cè)表現(xiàn)優(yōu)異

    韓國(guó)無(wú)晶圓廠初創(chuàng)公司Panmnesia展示第一個(gè)支持CXL的AI集群

    在2024?OCP全球峰會(huì)上,開發(fā)CXL交換機(jī)SoC和CXL IP的韓國(guó)無(wú)晶圓廠初創(chuàng)公司Panmnesia展示了第一個(gè)支持CXL的AI集群,該集群采用CXL 3.1交換機(jī)。 OCP全球峰會(huì)由世界上
    的頭像 發(fā)表于 11-28 11:04 ?1085次閱讀

    socket 和 WebSocket 的區(qū)別

    在現(xiàn)代網(wǎng)絡(luò)通信中,Socket和WebSocket是兩種常見的通信協(xié)議。它們?cè)?b class='flag-5'>實(shí)現(xiàn)網(wǎng)絡(luò)通信、數(shù)據(jù)傳輸?shù)确矫姘l(fā)揮著重要作用。然而,它們之間存在些關(guān)鍵的區(qū)別。 1. Socket(套接字) 1.1
    的頭像 發(fā)表于 11-12 14:33 ?1904次閱讀

    socket與WebSocket的區(qū)別與聯(lián)系

    ) : Socket是種通信端點(diǎn),它在網(wǎng)絡(luò)編程中用于實(shí)現(xiàn)不同主機(jī)之間的通信。Socket可以是TCP套接字或UDP套接字,分別對(duì)應(yīng)于TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。 TCP套接字提供了可靠的、面向連接的通信服務(wù),而UDP套接字則提供了不可靠的、無(wú)連接的
    的頭像 發(fā)表于 11-04 09:19 ?1630次閱讀