• 
    

    
    

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

      ?

      微服務框架在云筆記系統(tǒng)中的應用

      2022-04-14 06:48:38賈峰
      現(xiàn)代計算機 2022年1期
      關鍵詞:調(diào)用筆記本筆記

      賈峰

      (廣東理工職業(yè)學院,廣州 510091)

      0 引言

      云筆記系統(tǒng)通過分布式存儲解決了筆記信息量膨脹的問題,業(yè)務端同時提供了Windows客戶端,并且數(shù)據(jù)平臺支持移動設備的接入,更加貼近學生的使用習慣,達到無處不學習、無處不筆記的效果。文獻[1]和[2]中涉及的云筆記系統(tǒng)基于單體架構(gòu),這樣的系統(tǒng)存在維護性差、可靠性低、并發(fā)能力有限等問題;文獻[3]雖然在項目中使用分布式的架構(gòu),但沒有指出如何實現(xiàn)微服務的調(diào)用。

      傳統(tǒng)分布式云筆記系統(tǒng)中前端系統(tǒng)向后端發(fā)起http跨域請求訪問,當并發(fā)量增加情況下作為中轉(zhuǎn)器的nginx負載過高,另外如果對服務器數(shù)量進行增減,就要手動更改ngnix的配置文件,這樣服務的發(fā)現(xiàn)不夠靈活。因此需選用相對于小巧、靈活的Dubbo技術作為項目開發(fā)架構(gòu)。

      1 微服務架構(gòu)

      1.1 RPC思想

      RPC是遠程過程調(diào)用(Remote Procedure Call)的縮寫形式。RPC可以簡單理解為自己需要完成一項業(yè)務,但是由于諸多原因自己不能直接調(diào)用,只能通過第三方訪問的業(yè)務調(diào)用。

      1.2 Dubbo框架

      Dubbo是阿里SOA服務化治理方案的核心框架,作為分布式RPC框架,它提供阿里注冊中心機制,解耦了消費方和服務方動態(tài)發(fā)現(xiàn)的問題,并提供高可靠能力,大量采用微內(nèi)核和富插件思想,并提供靈活可擴展能力。

      1.3 服務的自動注冊和發(fā)現(xiàn)

      項目中引入Dubbo框架后,在遠程調(diào)用時能夠像本地調(diào)用一樣方便,讓調(diào)用者感知不到遠程調(diào)用的邏輯。Dubbo內(nèi)部是如何實現(xiàn)的?如圖1所示:①當生產(chǎn)者啟動時,會將服務信息(包括服務名稱、服務IP和端口)配置到注冊中心。②注冊中心動態(tài)維護服務列表,定時進行刷新。③消費訪問注冊中心,獲取最新的服務列表數(shù)據(jù),之后緩存到本地以便下次調(diào)用。④當用戶訪問消費者時,消費者查詢本地的服務列表進行負載均衡,訪問其中一個生產(chǎn)者獲取數(shù)據(jù)。⑤注冊中心通過心跳檢測機制訪問生產(chǎn)者,當生產(chǎn)者宕機時馬上更新服務列表并全網(wǎng)廣播,通知所有的消費者更新列表數(shù)據(jù)。

      圖1 服務的注冊和發(fā)現(xiàn)

      2 云筆記系統(tǒng)設計與實現(xiàn)

      2.1 系統(tǒng)架構(gòu)搭建

      云筆記系統(tǒng)整體設計分為3層架構(gòu),設計思想為:最底層是數(shù)據(jù)訪問層,為服務支撐的基礎保障;中間層是業(yè)務層,里面對業(yè)務模塊進行細化和拆分,將系統(tǒng)用戶所需的功能抽取成多個微服務,微服務向下調(diào)用各服務提供API,向上對用戶訪問層提供微服務接口;用戶訪問層包括PC、手機等各種類型終端調(diào)用微服務接口,實現(xiàn)相應用戶功能,具體系統(tǒng)架構(gòu)如圖2所示。

      圖2 系統(tǒng)架構(gòu)

      本文重點說明業(yè)務微服務層設計,云筆記業(yè)務非常明確,將其拆分成3個子服務,分別是用戶服務、筆記本服務、筆記服務,每個子服務代表獨立的設計模塊,但技術架構(gòu)基本相同。初期可以先搭建3臺服務器Zookeeper服務器,形成了1個最輕量的負載集群,用來對服務模塊的提供方進行注冊。由于系統(tǒng)采用Dubbo的服務治理框架,隨著數(shù)據(jù)量和訪問量的上升,Dubbo可以使用權(quán)重算法分析負載,動態(tài)調(diào)配系統(tǒng)資源,另外非常重要一點是對服務進行管理和監(jiān)控,它可以保證系統(tǒng)長時間的在各種復雜的情況下正常運行。部署1臺RabbitMQ服務器,消息中間件需開辟一大塊內(nèi)存空間,實現(xiàn)數(shù)據(jù)短暫存儲。部署1臺Mysql服務器和1臺Re?dis服務器,數(shù)據(jù)訪問層數(shù)據(jù)庫實現(xiàn)主從讀寫分離,引入緩存機制之后,主要的目的為了降低用戶訪問物理設備的頻次,提高服務器響應效率。

      2.2 系統(tǒng)數(shù)據(jù)庫表設計

      通過對系統(tǒng)中數(shù)據(jù)的總體分析,可以確定系統(tǒng)中主要實體、屬性和實體之間的關系,其中幾個主要的E-R圖如圖3所示。用戶和筆記本之間是一對多的關系,即一個用戶可以擁有多個筆記本,而一個筆記本只能屬于一個用戶。筆記本與筆記是一對多的關系,即筆記本中可以保存多條筆記,每條筆記卻只能存在一個筆記本中。

      圖3 E-R模型

      2.3 模塊功能實現(xiàn)

      用戶要獲取數(shù)據(jù)需向遠程業(yè)務服務器發(fā)送請求,消費者(控制層)通過定義的接口調(diào)用生產(chǎn)者(業(yè)務層),內(nèi)部利用Dubbo協(xié)議完成數(shù)據(jù)傳輸,如圖4所示。整個系統(tǒng)包括主項目dubbo-cloudnote以及3個子項目:①dubbocloudnote-interface,②dubbo-cloudnote-provider,③dubbo-cloudnote-consumer,其中②和③必須依賴于接口項目①。項目①中只定義pojo及業(yè)務層用戶、筆記本和筆記模塊中的接口。

      圖4 獲取遠程數(shù)據(jù)

      項目②中需要定義數(shù)據(jù)訪問層mapper接口及業(yè)務層各接口的實現(xiàn)類,內(nèi)部使用TCP-IP協(xié)議進行調(diào)用。SpringBoot致力于快速方便地開發(fā)單個微服務,解決ssm大量手工配置的問題,在SpringBoot中配置文件applcation.yml中添加信息如下:指定dubbo包路徑org.gdpi,掃描后代包,定義服務名稱provider-note,服務名稱和接口一一對應,連接Zookeeper服務注冊中心,提供1個主服務和2個備份服務,主服務協(xié)議端口為2181,使用dubbo協(xié)議,定義服務的端口為20880,每個服務都有自己特定的端口不能重復,如果定義多個provider-note則服務端口號不同。

      dubbo:

      scan:

      basePackages:com.gdpi

      application:

      name:provider-note

      registry:

      address:zookeeper://192.168.126.129:2181?

      backup=192.168.126.129:2182,192.168.126.129:2183

      protocol:

      name:dubbo

      port:20880

      舉例筆記服務生產(chǎn)者接口實現(xiàn):業(yè)務方法loadNotes功能是根據(jù)用戶ID查詢筆記信息,其中注解@Service(timeout=3000)規(guī)定服務器響應時間3秒超時,內(nèi)部實現(xiàn)RPC調(diào)用,@service引入的包則是com.alibaba.dubbo.config.annotation.Service。

      public class NoteServiceImpl implements NoteService{

      @Autowired

      private NoteMapper noteMapper;

      public ListloadNotes(String noteBookId){

      ......

      }

      }

      綜上所述,對老年護理事業(yè)大力發(fā)展,在對老年人進行治療的同時,為其提供了更多情感上、心靈上、生活上的幫助,對于構(gòu)建老有所依的和諧社會具有十分重要的意義。因此為盡快將健全的社區(qū)衛(wèi)生服務體系建立起來,對衛(wèi)生資源進行合理利用,需要醫(yī)療護理人員做出更多的努力。

      項目③只定義控制層controller,舉例筆記服務消費者實現(xiàn):利用dubbo的方式為接口創(chuàng)建代理對象,內(nèi)部同樣實現(xiàn)RPC調(diào)用,遠程RPC調(diào)用就像調(diào)用自己本地服務一樣簡單。消費者在服務器內(nèi)部完成了負載均衡,稱之為客戶端負載均衡,關鍵字leastactive表示挑選當前負載壓力小的生產(chǎn)者進行訪問。

      @RestController

      public class NoteController{

      @Reference(loadbalance="leastactive")

      private NoteService noteService;

      @RequestMapping("/loadnotes")

      public NoteResult findAll(String noteBookId){

      ......

      }

      }

      3 結(jié)語

      該架構(gòu)相比傳統(tǒng)分布式架構(gòu),解決了開發(fā)者在分布式跨域請求過程的繁瑣的過程,運行更加穩(wěn)定,實現(xiàn)“高內(nèi)聚低耦合”的核心理念。本系統(tǒng)的后期,考慮開發(fā)更多的擴展功能,利用分布式搜索引擎增加了用戶搜索,系統(tǒng)可以作為共享資源分享自己的筆記,并收藏其他人分享的筆記資源擴充自己的知識行囊。

      猜你喜歡
      調(diào)用筆記本筆記
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      筆記本
      可愛的筆記本
      學寫閱讀筆記
      學寫閱讀筆記
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      我的自然筆記(一)
      聯(lián)想發(fā)布YOGA系列超薄酷睿i多模筆記本
      電子世界(2015年22期)2015-12-29 02:49:42
      愛的筆記本
      建瓯市| 铁力市| 东光县| 蓝山县| 新河县| 东明县| 车险| 额尔古纳市| 梧州市| 论坛| 太康县| 九龙坡区| 论坛| 韶关市| 松滋市| 滨海县| 曲阜市| 三穗县| 泸定县| 巨野县| 涿鹿县| 文成县| 囊谦县| 宜城市| 织金县| 石狮市| 岳阳市| 麻城市| 祁阳县| 九龙城区| 宜都市| 南宁市| 怀安县| 太仓市| 梧州市| 鹿邑县| 天台县| 庆元县| 松江区| 葫芦岛市| 龙海市|