• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于阿里云ECS 服務(wù)器的項(xiàng)目前端搭建及數(shù)據(jù)存儲(chǔ)

      2023-09-18 10:19:40李曉宇韓飛馳黃文世許光輝任博文曲中水李秋實(shí)
      科技創(chuàng)新與應(yīng)用 2023年26期
      關(guān)鍵詞:阿里消息客戶端

      李曉宇,韓飛馳,黃文世,許光輝,任博文,曲中水*,李秋實(shí)

      (1.哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾 濱150080;2.大慶市實(shí)驗(yàn)中學(xué),黑龍江 大慶 163711)

      阿里云服務(wù)器(Elastic Compute Service,ECS)是一款高效、可靠的云計(jì)算服務(wù),其可以為用戶帶來免硬件投入的服務(wù)器資源,使用起來更加便捷,同時(shí)也能夠幫助用戶構(gòu)建更加穩(wěn)定、安全的應(yīng)用,大大提高運(yùn)維效率,降低IT 成本。ECS 具有性能卓越、穩(wěn)定可靠、彈性擴(kuò)展的云計(jì)算特點(diǎn)。采用阿里云服務(wù)器ECS 作為數(shù)據(jù)存儲(chǔ)平臺(tái),不僅可以有效降低成本,而且還能夠大大提升插座項(xiàng)目的運(yùn)行效率。

      1 阿里云服務(wù)器ECS 的搭建

      1.1 后端與阿里云ECS 服務(wù)器連接

      使用阿里云ESC 其內(nèi)部結(jié)構(gòu)是一臺(tái)Linux 系統(tǒng)(centOS7),可安裝MySQL,Tomcat,Redis,Zookeeper 和RabbitMQ,本地電腦通過遠(yuǎn)程連接(NaviCat、XShell)在輸入阿里云服務(wù)器公網(wǎng)IP 和端口,用戶名和密碼下即可與阿里云服務(wù)器連接(前提需在阿里云安全組中添加端口號、IP 和用戶信息)。在SpringBoot 中找到resource.yml,進(jìn)行數(shù)據(jù)庫連接的相關(guān)配置(如url、username,password 等),如圖1 所示。

      圖1 配置SringBoot 連接ECS 服務(wù)器數(shù)據(jù)庫

      其中server 字段表示程序開啟Tomcat 后網(wǎng)站登錄顯示的服務(wù)端口號,此端口號可以為任意號碼,一般默認(rèn)為8080,由于阿里云ECS 服務(wù)器部署了Tomcat后,其安全組中自帶Tomcat 的IP 地址為80,即網(wǎng)站HTTP 服務(wù)的端口,因此可通過程序配置對其進(jìn)行修改為8080/8081,或者在阿里云服務(wù)器中使用指令:“iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080”實(shí)現(xiàn)對Tomcat 的IO 默認(rèn)端口進(jìn)行修改。Database 即為與數(shù)據(jù)庫連接地址,部署于阿里云中的程序數(shù)據(jù)庫,一般IP 地址為localhost:1663 即可,若使用服務(wù)器公網(wǎng)IP 加端口號,可能會(huì)導(dǎo)致數(shù)據(jù)庫連接不上拋出異常錯(cuò)誤。

      1.2 前端與后端連接

      Ajax 是一種異步網(wǎng)絡(luò)請求處理技術(shù),使用JavaScript 執(zhí)行,能夠在不跳轉(zhuǎn)、不刷新的狀況下,在網(wǎng)站后臺(tái)提供數(shù)據(jù)信息,并部分修改主頁信息內(nèi)容。其原理是利用XMLHttp 對象將前臺(tái)數(shù)據(jù)傳遞到后端,后端接受到申請后,將要求的結(jié)論傳回前臺(tái),完成數(shù)據(jù)信息的來回傳送,而無需頁面的回發(fā),從而提高網(wǎng)絡(luò)的效率和可靠性。利用這種方式,我們能夠做到無刷新。

      1.2.1 實(shí)現(xiàn)流程

      請求XMLHttpRequest 對象,自動(dòng)打開請求地址并初始化信息,然后,發(fā)出請求信息,監(jiān)聽回調(diào)函數(shù)的運(yùn)行情況,最后接收服務(wù)器返回的應(yīng)答結(jié)論。

      前端方面通過對操控對象設(shè)置IP 號,操控方式(GET/POST),后端使用注解(GetMapper(“IP”)或PostMapper(“IP”))方式,實(shí)現(xiàn)后端與前端的連接。若是返回另一頁面,則使用return“指定頁面.xml”進(jìn)行返回,若是返回?cái)?shù)據(jù),則可通過ResultSeason 函數(shù),將返回的主體進(jìn)行返回,實(shí)現(xiàn)后端數(shù)據(jù)向前端進(jìn)行傳遞,前端接收數(shù)據(jù)并顯示,以完成B/S 的基本框架。

      1.2.2 Ajax 優(yōu)點(diǎn)

      采用無刷新的頁面設(shè)計(jì),可以有效地與服務(wù)器進(jìn)行通信,大大縮短客戶時(shí)間,提升體驗(yàn)。

      采用異步技術(shù)與服務(wù)器進(jìn)行交互,可以大大提高響應(yīng)速度。

      通過將原本主機(jī)上的任務(wù)遷移到服務(wù)器端,能夠利用服務(wù)器端的空閑資金,有效減少主機(jī)和服務(wù)的負(fù)荷,節(jié)儉空間和寬帶租用花費(fèi)。

      1.2.3 數(shù)據(jù)可視化

      ECharts 是一個(gè)開源的可視化庫,采用JavaScript完成,能夠在PC 和手機(jī)機(jī)器上順暢執(zhí)行,并且兼容當(dāng)前大多數(shù)網(wǎng)頁和瀏覽器(IE8/9/10/11、Chrome、Firefox、Safari 等),基本依靠矢量圖形庫[ZRender],帶來直接、豐富多彩的交互體驗(yàn),為用戶創(chuàng)造一種更加有效的數(shù)據(jù)可視化顯示方式,能夠根據(jù)個(gè)人需求定制的數(shù)據(jù)可視化圖表。

      1.2.4 rem 適配

      為了滿足各種頁面的需求,rem 適配方法被廣泛應(yīng)用。rem 是一種比較長度單位,能夠在各種寬度的顯示屏上按比例縮放,從而使根元件(即html 元素)的font-size 計(jì)算值得到相應(yīng)的倍率。通過調(diào)整html 的font-size,根據(jù)各個(gè)顯示屏的寬度,以相同的比率動(dòng)態(tài)調(diào)整,并將px 更換為rem,能夠有效地改變根元件的字體大小,從而達(dá)到良好的視覺效果,使用戶能夠獲得更加流暢的體驗(yàn)。

      1.3 消息隊(duì)列RabbitMQ

      項(xiàng)目的數(shù)據(jù)傳輸使用RabbitMQ 來進(jìn)行消息隊(duì)列和消息確認(rèn)機(jī)制[1],RabbitMQ 的本質(zhì)如圖2 所示。

      圖2 RabbitMQ 原理圖

      RabbitMQ 即為一個(gè)中間代理,在生產(chǎn)者發(fā)布消息時(shí),需經(jīng)過Exchange 交換機(jī),然后根據(jù)自身的交換類型以及和Queue 的Binding Key 來決定消息的去向。RabbitMQ 采用TCP 的傳輸機(jī)制,即RabbitMQ 支持消息確認(rèn)ACK。

      ACK 是一種客戶端反饋機(jī)制,其從RabbitMQ 收到消息并處理完成后,RabbitMQ 會(huì)根據(jù)消息的內(nèi)容和特征,將其從隊(duì)列中刪除,以確保消費(fèi)者能夠及時(shí)獲取服務(wù)器上的信息。如果消費(fèi)者因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定等原因無法接收到ACK 反饋,RabbitMQ 會(huì)將其再次放入隊(duì)列中,并將其推發(fā)給其他上線的消費(fèi)者,以確保消費(fèi)者服務(wù)器故障時(shí),能夠及時(shí)獲得有效的幫助和支持,沒有任何消息或任務(wù)被遺漏。

      RabbitMQ 支持消息的持久化[2],保證了當(dāng)Rabbit-MQ 在沒有客戶端訪問時(shí)因自動(dòng)關(guān)閉而導(dǎo)致原本消息內(nèi)容丟失。開啟方法為:

      1)boolean durable = true;

      2)channel.queueDeclare(“hello”,durable,false,false,null);

      除此之外,RabbitMQ 還支持負(fù)載均衡,我們使用prefetchcount=1 這個(gè)設(shè)置,其告訴RabbitMQ,不要一次將多個(gè)消息發(fā)送給同一個(gè)消費(fèi)者(即客戶端)。保證只有當(dāng)消費(fèi)者處理完成當(dāng)前消息并反饋后,才會(huì)收到另外一條消息或任務(wù),避免負(fù)載不均衡(雖然阿里云ESC服務(wù)器自帶負(fù)載均衡,但是雙重的負(fù)載均衡可以二次保護(hù)系統(tǒng),防止其崩潰)。

      1.4 Redis 緩存

      Spring Cache 是一種抽象的緩存類型,可以支撐多種類型的緩存,如Redis、EHCache 等,并且可以通過給出各種注解來精簡緩存的應(yīng)用,從而更好地支撐各種方式。Redis 有5 種數(shù)據(jù)結(jié)構(gòu),分別為string,list,set、hash、zset。zset 是一個(gè)廣泛應(yīng)用的有序列表,相似于Java 中的SortedSet 和HashMap,但其內(nèi)部體現(xiàn)運(yùn)用了一個(gè)更具復(fù)雜性的跳躍表構(gòu)造。這種構(gòu)造使用隨機(jī)策略,可以確定新元素能夠被分配到第幾層。Redis不僅擁有可靠的過期時(shí)間,而且還能夠根據(jù)不同的數(shù)據(jù)結(jié)構(gòu)來設(shè)置過期時(shí)間,例如hash架構(gòu)的過期時(shí)間可能是某個(gè)hash 對象的過期,而不僅僅是某個(gè)子key 的過期[3]。

      Redis 是一款開源的、采用C 語言的非關(guān)系型數(shù)據(jù)庫,能夠以key-value 的方式儲(chǔ)存信息,這使得其能夠在內(nèi)存中實(shí)現(xiàn)高性能的儲(chǔ)存,與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有著本質(zhì)的不同。非關(guān)系型數(shù)據(jù)庫不僅僅是某種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合體,還必須遵循一些基本的要求,比如sql 標(biāo)準(zhǔn)、事務(wù)處理、表結(jié)構(gòu)等,以確保數(shù)據(jù)信息的安全性和可靠性。

      Redis 的主要優(yōu)點(diǎn)在于:①數(shù)據(jù)存儲(chǔ)在內(nèi)存中,具有極快的存取速度和強(qiáng)大的并發(fā)處理能力。②支持更多的value 類型,包括string、list、set、zset 以及哈希類型,這些類型可以更有效地存儲(chǔ)和管理數(shù)據(jù)。③Redis的存在,大大補(bǔ)充了Memcached 等key-value 數(shù)據(jù)庫的缺陷問題,在某些情況下,可以為關(guān)系數(shù)據(jù)庫(如MySQL)提供有效的支持;④Redis 支持?jǐn)?shù)據(jù)集群,能夠?qū)崿F(xiàn)大量數(shù)據(jù)的主從一致和負(fù)荷平衡。主服務(wù)器能夠與任意數(shù)量的從服務(wù)器進(jìn)行數(shù)據(jù)交換,而從服務(wù)器則能夠與其他主服務(wù)器進(jìn)行連接。

      緩存對于數(shù)據(jù)庫而言是至關(guān)重要的,若大量緩存失效,那么所有的訪問均由數(shù)據(jù)庫承擔(dān),此現(xiàn)象稱作雪崩。當(dāng)緩存失效時(shí),會(huì)對底層系統(tǒng)造成巨大沖擊。為避免這種情況,許多系統(tǒng)都會(huì)采用加鎖或隊(duì)列請求的方法來確保數(shù)據(jù)庫不會(huì)被同時(shí)讀取。另一種簡單的方法是將緩存的過期日期分散開,比如說加入某個(gè)隨機(jī)值(1~5 min),以保證每個(gè)緩存的過期日期的重疊率大大降低。這樣一來可以有效地減少雪崩效應(yīng)對底層系統(tǒng)的沖擊,并確保數(shù)據(jù)庫的安全性。很難有任何集體失效的事件發(fā)生。枷鎖代碼如圖3 所示。

      圖3 枷鎖排隊(duì)

      Redis 緩存擊穿是一種常見的數(shù)據(jù)庫系統(tǒng)故障,它可能是由于存取的key 相應(yīng)的信息在Redis 中過期,導(dǎo)致大規(guī)模并發(fā)申請無法及時(shí)響應(yīng),從而導(dǎo)致數(shù)據(jù)庫系統(tǒng)崩潰。因此,為了避免這種情況的發(fā)生,應(yīng)該采取有效的措施來防止Redis 緩存擊穿,以確保數(shù)據(jù)安全,一種常用的方法是采用mutex。這意味著,當(dāng)緩存失效時(shí),不要立刻訪問數(shù)據(jù)庫,轉(zhuǎn)而利用緩存軟件中的一些功能(例如Redis 的SETNX 或Memcache 的ADD)來設(shè)置mutex key。返回值為true 時(shí),就可以繼續(xù)使用緩存。

      1.5 Zookeeper

      Zookeeper 是一款開源的分布式程序協(xié)同業(yè)務(wù),像航班調(diào)度員一樣幫助管理天空中各個(gè)航班的飛機(jī)。在Apache Hbase 和Apache Solr 的散布式集群中均用到了Zookeeper。Zookeeper 是HaDoop 項(xiàng)目的一種重要組成部分,他提供了一系列強(qiáng)大的功能,包括分配信息管理、名稱服務(wù)、分布式鎖定和集群信息管理等[4]。

      Zookeeper 是一種分布式服務(wù)管理架構(gòu),以觀察者模型為基礎(chǔ),負(fù)責(zé)管理存儲(chǔ)和管理工作所有關(guān)注的信息,并接收觀察者的申請。如果上述信息發(fā)生,Zookeeper 將立即告知已登錄的觀察者,以便他們能夠作出適當(dāng)?shù)姆从常员銓?shí)施集群中Master/Slave 管理模式。如圖4 所示。

      圖4 Zookeeper 結(jié)構(gòu)

      Zookeeper 的特點(diǎn):①Zookeeper 是一組由管理者和伴隨者構(gòu)成的群體,其中管理者負(fù)責(zé)發(fā)動(dòng)投票并做出決策,同時(shí)也會(huì)定期更新系統(tǒng)狀況;伴隨者則負(fù)責(zé)管理接受用戶請求,并將數(shù)據(jù)及時(shí)反饋給用戶,在選擇管理者的進(jìn)程中參加表決,以確保操作系統(tǒng)的有效運(yùn)行。②從同一個(gè)client 發(fā)出的更新請求應(yīng)當(dāng)按照其發(fā)送順序進(jìn)行處理,以確保數(shù)據(jù)的準(zhǔn)確性和及時(shí)性。③實(shí)時(shí)性,client 可以在短時(shí)間內(nèi)獲取最新的數(shù)據(jù)。

      2 結(jié)束語

      本文闡述了客戶端以及服務(wù)端連接阿里云ECS 服務(wù)器數(shù)據(jù)庫的主要方式,以及客戶端在操作服務(wù)器時(shí)所用到幾項(xiàng)技術(shù)。通過Navicat 的連接,RabbitMQ 的中間處理,Redis 緩存的查詢和負(fù)載均衡,json 格式的數(shù)據(jù)傳輸,http 前端經(jīng)過js 和Ajax[5]在Tomcat[6]的中間處理下與后端的連接,讓我們可以通過本地遠(yuǎn)程連接操控服務(wù)器的運(yùn)行,以及信息的處理,最后將項(xiàng)目程序成品壓縮成war 包放入服務(wù)器中,實(shí)現(xiàn)自主運(yùn)行。

      猜你喜歡
      阿里消息客戶端
      云上阿里
      炎黃地理(2021年1期)2021-06-08 00:27:03
      一張圖看5G消息
      辰辰帶你游阿里
      縣級臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      阿里戰(zhàn)略
      阿里是個(gè)好榜樣
      消息
      消息
      临夏市| 施秉县| 丰镇市| 辛集市| 微山县| 长沙市| 三亚市| 安宁市| 贵德县| 湘阴县| 若尔盖县| 望谟县| 德昌县| 永善县| 仪陇县| 合山市| 乐山市| 弋阳县| 新乐市| 怀化市| 利津县| 柘荣县| 乌拉特后旗| 庄河市| 大港区| 荔波县| 许昌县| 邯郸市| 扶绥县| 大连市| 汶川县| 绥棱县| 班戈县| 岑溪市| 福安市| 公主岭市| 成都市| 额尔古纳市| 绵竹市| 嘉峪关市| 锡林郭勒盟|