• 
    

    
    

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

      ?

      基于微服務架構的應急預警信息精準靶向發(fā)布系統(tǒng)的設計與實現

      2022-02-16 07:55:54陳玉貴羅紅梅郭海峰朱國強
      農業(yè)災害研究 2022年12期
      關鍵詞:靶向架構預警

      陳玉貴,羅紅梅,郭海峰,朱國強,唐 群

      1.湖南省氣象服務中心,湖南長沙 410118;2.氣象防災減災湖南省重點實驗室,湖南長沙 410118

      湖南是氣象災害頻發(fā)、重發(fā)的省份,汛期災害性天氣頻發(fā),如何防汛救災、減少人員傷亡備受關注,氣象預報預警是防御和減輕氣象及次生災害的第一道防線[1]。2016年11月,湖南省級突發(fā)預警信息發(fā)布平臺建成,平臺已實現13種發(fā)布渠道,包括手機短信、聲訊、大喇叭、顯示屏、網站、電視廣播、微博微信、北斗衛(wèi)星等可傳播預警信息,但手機短信、聲訊等傳播渠道是基于群組向防汛責任人發(fā)布的[2]。近年來,習近平總書記多次強調要加強預警體系建設,提出“預警發(fā)布要精準”,“預警信息發(fā)布要到村到戶到人”,2021年湖南建設了全省統(tǒng)一應用的湖南省應急預警信息精準靶向發(fā)布系統(tǒng),通過與移動、聯(lián)通、電信三大運營商打通精準靶向發(fā)布接口,實現了基于電子圍欄技術,確保預警信息精確發(fā)送到圈定區(qū)域內社會公眾的每個手機號碼,讓省、市、縣、鄉(xiāng)鎮(zhèn)(街道)、村(社區(qū))各級防汛責任人針對性地采取防御措施,贏得寶貴的轉移避險時間,保障人民群眾生命財產安全,為決策部門應急聯(lián)動提供支撐[3]。

      1 系統(tǒng)總體設計

      1.1 系統(tǒng)業(yè)務需求

      2021年湖南省應急預警信息精準靶向發(fā)布系統(tǒng),實現市州氣象局、省級突發(fā)預警信息發(fā)布責任單位靈活、快速接入,且提供給第三方系統(tǒng)平臺外部接口能力服務。隨著精準靶向發(fā)布系統(tǒng)對接部門的增加,原有單服務器架構已不足以滿足業(yè)務需求,使用微服務架構,可以分區(qū)域部署多個數據庫,對數據進行拆分,顯著降低服務器的壓力;采用微服務架構,構建獨立部署、水平擴展、獨立訪問的服務單元,以提高整個系統(tǒng)訪問的時效性和并發(fā)性[4]。

      1.2 系統(tǒng)總體架構

      系統(tǒng)總體架構采用微服務架構設計,主要分為業(yè)務前臺、業(yè)務中臺、技術中臺(圖1)。業(yè)務前臺主要為客戶端,展示各個功能模塊和對外接口能力的輸出。業(yè)務中臺主要是服務端的內部服務,支撐前端功能需求,負責業(yè)務邏輯處理、權限管理、對接外部接口能力等。技術中臺是服務端核心支撐功能點,支撐業(yè)務中臺的相關業(yè)務,主要為數據庫、緩存、網絡、監(jiān)控、安全,資源調度等服務端支撐體系。

      圖1 湖南省應急預警精準靶向發(fā)布系統(tǒng)微服務架構圖

      1.3 基于微服務架構的開發(fā)技術

      微服務是一種分布式系統(tǒng)解決方案,2012年最先被提出,用于解決快速發(fā)展中可用軟件問題,實現像更換零件一樣更換軟件的愿景[5]。微服務按照業(yè)務而非技術劃分的特性,具有高內聚性、高擴展性和高自治性的特點。微服務與微服務之間通過網絡調用進行通信,從而加強了服務間的隔離性,避免了緊耦合[6]。在微服務平臺上,每個服務都是可熱插拔的,且某個服務的水平降級不顯著影響整個系統(tǒng)的使用。

      SpringCloud是當前最流行、先進的微服務實現框架,它是一系列微服務開發(fā)工具集,提供包括微服務的分布式配置、服務發(fā)現、路由、負載均衡、斷路器、服務網關、消息傳遞等應用組件[7]。在該系統(tǒng)架構設計研發(fā)過程中,將系統(tǒng)拆分成用戶服務、授權服務、網關服務、群組服務、靶向發(fā)布服務等多個微服務。每個微服務專注于單一功能,并通過定義良好的接口清晰表述服務邊界,易于保持高可維護性和開發(fā)效率。根據實際應用場景,可以動態(tài)擴展使用頻率高、負載大的服務,橫向增加每個服務的能力。通過靈活水平擴展和集成,獨立部署及運維,使得按需彈性擴展服務更容易。

      2 基于微服務架構的應急預警信息精準靶向發(fā)布系統(tǒng)設計

      2.1 系統(tǒng)的微服務總體架構設計

      系統(tǒng)采用SpringCloud微服務架構設計思想,通過Vue.js作為前端框架和SpringBoot作為后端框架進行結合設計開發(fā),主要包括系統(tǒng)基礎服務、基礎公共服務和業(yè)務服務[8]。業(yè)務服務中各微服務都定義成獨立的服務接口,相比于原來單體結構的難以維護的情況,新的系統(tǒng)由實現不同功能的微服務組成,每個微服務只關注單一的業(yè)務功能[9]。

      2.1.1 系統(tǒng)基礎服務系統(tǒng)基礎服務主要包括服務注冊中心(consul)、服務配置中心(springcloud-config)、服務網關(springcloud-gateway)、授權中心(authcenter)、服務監(jiān)控中心(monitor-center)等。系統(tǒng)通過Consul組件開發(fā)自己的注冊服務,實現服務注冊統(tǒng)一管理;通過springcloud-config組件開發(fā)配置中心服務,實現微服務配置統(tǒng)一管理;通過springcloud-gateway組件開發(fā)服務網關,負責請求路由,來自外部客戶端的API請求先轉到服務網關,再由網關轉到各自對應的服務,實現預警信息入口統(tǒng)一管理[10]。

      2.1.2 基礎公共服務基礎公共服務包括對引用的第三方中間件的封裝集成和系統(tǒng)各個服務所需的公共處理組件模塊(如log日志組件、oss組件、job任務組件等)。系統(tǒng)通過redis中間件實現熱點數據緩存加速;通過mysql集群實現數據持久化存儲;通過fastdfs中間件實現文件的持久化存儲;通過ELK套件(Elasticsearch-Logstash-Kibana) 實現日志收集展示;通過XXL-JOB實現分布式任務調度。

      2.1.3 業(yè)務服務業(yè)務服務包括用戶服務、群組服務、靶向任務服務等。該系統(tǒng)通過Springboot-admin實現系統(tǒng)服務的監(jiān)控;通過rabbitmq實現靶向任務等消息的訂閱發(fā)布;系統(tǒng)服務之間通過基于openfeign提供的RESTFULAPI進行服務調用,通過LoadBalance處理服務間的負載均衡,通過Sentinel處理服務限流;通過git、maven、docker、harbor、kubernetes實現系統(tǒng)自動化運維流程。系統(tǒng)總體架構見圖2。

      圖2 湖南省應急預警信息精準靶向發(fā)布系統(tǒng)架構圖

      2.2 系統(tǒng)實現

      該系統(tǒng)實現主要包括發(fā)布渠道接入、動態(tài)信息接入、精準靶向推送和發(fā)布內容詳情查看等功能。

      2.2.1 發(fā)布渠道接入該系統(tǒng)通過restful接口與移動、電信、聯(lián)通三大運營商對接相關接口,如區(qū)選人數預估、圈選人數預估、框選人數預估、精準靶向任務發(fā)布、精準靶向任務查詢、精準靶向任務終止等接口。

      2.2.2 動態(tài)信息接入及精準靶向推送系統(tǒng)基于GIS地圖,以平面圖層方式展示,接入的各運營商數據,包括靜態(tài)數據、動態(tài)實時用戶數據等。靜態(tài)數據包括湖南省地圖GIS數據信息、電子圍欄信息等,動態(tài)數據包括區(qū)選、圈選、框選范圍內的人數、精準靶向歷史發(fā)布數據等。這些數據通過運營商提供的接口接入本系統(tǒng),通過不同范圍的選擇方式,實時計算人口數,根據精準靶向預估發(fā)送模型,對數據進行加工,融合處理后得到預估發(fā)送結果,并通過反饋的信息,精準計算發(fā)布人群及數量、發(fā)布內容、預警類型和等級、發(fā)布時間。使用定時任務和消息隊列推送發(fā)布任務實現預警消息精準、快速推送到對應人群。

      2.2.3 發(fā)布內容及詳情查看針對已經發(fā)布的精準靶向任務,通過任務管理可以實時監(jiān)控查看推送進度、各運營商發(fā)布人數、推送總量及當前任務狀態(tài)。

      單個精準靶向任務通過詳情入口,可以查看更詳細的發(fā)布信息,如推送時間、推送進度、各運營商發(fā)布人數等信息,并通過GIS地圖,清晰地展示發(fā)布區(qū)域。

      3 基于微服務架構的系統(tǒng)開發(fā)核心流程處理示例

      該系統(tǒng)核心處理流程包括搭建注冊中心、構建配置中心、服務注冊與發(fā)現、微服務使用,協(xié)同采用IntelliJ IDEA作為開發(fā)工具,Maven作為構建工具,git作為代碼管理工具。

      3.1 搭建注冊中心

      通過dockerhub獲取Consul鏡像地址,在kubernetes中通過構建部署文件consul.yaml,實現注冊服務部署。

      3.2 搭建配置中心

      在分布式微服務架構中,服務數量越來越多,每個服務實例都會有配置文件,如.yml文件、.properties文件、.json文件等。這些文件分布在系統(tǒng)的各個服務中,管理復雜,要承擔反復修改編譯代碼、重啟系統(tǒng)、重新打包等風險,為了方便所有服務的配置統(tǒng)一管理,實時更新,因此引入分布式配置中心。

      (1)使用IntelliJ IDEA,創(chuàng)建新應用項目platform-config,把該項目作為配置中心的服務創(chuàng)建完成后。先在配置管理文件,如以下定義項目配置文件pom.xml,在其中配置必須的依賴:

      <dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-configserver</artifactId>

      </dependency>

      (2)實現配置服務啟動類PlatformConfigApplication

      例如,在代碼PlatformConfigApplication.java文件中類聲明上添加注解,即可實現服務的啟動類,用于啟動配置中心:

      @EnableConfigServer

      @SpringBootApplication

      @EnableDiscoveryClient

      @EnableConfigServer

      @SpringBootApplication

      publicclassPlatformConfigApplicati on{

      publicstaticvoidmain(String[]args){

      SpringApplication.run(Platform ConfigApplication.class,args);

      }

      }

      @EnableDiscoveryClient

      @EnableConfigServer

      @SpringBootApplication

      (3)配置訪問路徑及相關參數,例如,定義bootstrap.yml配置文件,參數可如下進行:

      server:

      port:9130

      spring:

      application:

      name:@artifactId@

      profiles:

      active:native

      cloud:

      config:

      server:

      native:

      search-locations:classpath:/config

      consul:

      host:${CONSUL_URL:127.0.0.1}

      port:${CONSUL_PORT:8500}

      discovery:

      prefer-ip-address:true

      health-check-interval:5s

      instance-id:${spring.application.name}-${server.port}-${spring.cloud.client.ip-address}

      log:

      path:logs/${spring.application.name}

      配置中心啟動后可通過注冊中心服務的管理界面,查看配置中心微服務的相關信息。

      3.3 微服務注冊及使用

      在完成服務注冊中心和配置中心搭建后,將其他服務添加到注冊中心Consul的服務體系中,作為服務的提供者提供相應的服務。下面以imasphonebook-service群組微服務為例,介紹微服務的創(chuàng)建和注冊流程。

      (1)創(chuàng)建新應用模塊,定義為imasphonebook-service,并在pom.xml配置,配置情況如下:

      <dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starterconsul-discovery</artifactId>

      </dependency>

      (2)創(chuàng)建微服務啟動類PhoneBook ServiceApplication

      @SpringBootApplication

      @EnableDiscoveryClient

      @EnableFeignClients

      publicclassPhoneBookServiceAppli cation{

      publicstaticvoidmain(String[]args){

      SpringApplication.run(PhoneBook ServiceApplication.class,args);

      }

      }

      @EnableDiscoveryClient

      @EnableFeignClients

      @SpringBootApplication

      (3)配置訪問路徑及相關參數

      spring:

      application:

      name:@artifactId@

      main:

      profiles:

      active:prod

      cloud:

      config:

      name:imas-phonebook,imascommon

      profile:prod

      discovery:

      enabled:true

      service-id:${CLOUD_CONFIG_SERVICE:platform-config}

      uri:${CONFIG_URL:http://platform-config:9130}

      username:${CLOUD_CONFIG_USERNAME:admin}

      password:${CLOUD_CONFIG_PASSWORD:imas@IMAS!@}

      consul:

      host:${CONSUL_HOST:10.111.124.197}

      port:${CONSUL_PORT:8500}

      discovery:

      prefer-ip-address:true

      health-check-interval:5s

      在注冊中心中注冊的微服務可以向整個系統(tǒng)提供該微服務所具備的功能,即實現服務消費。

      (4)創(chuàng)建一個使用imas-phonebookservice服 務 的SpringBoot基 礎 工 程imas-platform-service,在pom.xml中 引入相應的依賴。配置情況如下:

      <dependency>

      <groupId>com.vphonor.imas</groupId>

      <artifactId>imas-phonebook-api</artifactId>

      </dependency>

      (5)創(chuàng)建應用的入口類,在入口類的實現文件中通過使用@EnableDiscoveryClient注解讓該應用注冊為Consul的客戶端應用,以獲得服務發(fā)現能力。

      @SpringBootApplication

      @EnableDiscoveryClient

      @EnableFeignClients

      publicclassPlatformServiceApplicati on{

      publicstaticvoidmain(String[]args){

      SpringApplication.run(Platform ServiceApplication.class,args);

      }

      }

      (6)創(chuàng)建調用函數調用群組服務

      publicResultgroupCreate(ApiReque strequest){

      returnphoneBookClient.platform GroupCreate(request);

      }

      經過上述步驟,可以通過platformservice能開服務對群組服務發(fā)起遠程調用。

      4 微服務系統(tǒng)部署

      分布式架構是微服務的主要特性,系統(tǒng)細分功能服務,各個細分后的模塊進程是獨立的,從而確保部署時能夠獨立操作[11]。當發(fā)生系統(tǒng)故障而影響系統(tǒng)穩(wěn)定性時,工作人員可將故障影響控制在單個應用中,這樣既避免了對其他服務造成影響,還極大地保證了軟件運行的穩(wěn)定性、安全性和可靠性[12]。

      系統(tǒng)通過git、maven、docker、harbor、kubernetes實現系統(tǒng)自動化運維部署流程。其中,git用于存儲系統(tǒng)代碼、管理代碼分支;maven作為依賴管理工具,用于項目構建、打包等;docker用于保存系統(tǒng)打包的鏡像文件,docker技術具有開箱即用、快速部署、可移植性強、環(huán)境隔離的特點,可以很好地解決微服務架構部署面臨的諸多問題;harbor作為鏡像倉庫,用于保存生成的鏡像文件;kubernetes作為容器化平臺,用于承載系統(tǒng)服務,并提供靈活的伸縮機制,實現動態(tài)擴容,保證系統(tǒng)穩(wěn)定性和高可用性[13]。

      5 結論與討論

      基于Spring Cloud架構的微服務框架已經應用于湖南省應急預警信息精準靶向發(fā)布系統(tǒng),系統(tǒng)融合移動、聯(lián)通、電信運營商數據及接口,實現了對災害的精準預警和對預警發(fā)布任務的實時動態(tài)監(jiān)測,驗證了微服務架構用于復雜的預警發(fā)布和監(jiān)測的可行性與實用性,降低了系統(tǒng)各功能模塊間的耦合度,更有利于應用系統(tǒng)的擴充和完善。相較于采用傳統(tǒng)單體架構應用的開發(fā)過程,其降低了開發(fā)的難度,與外省同類系統(tǒng)相比提高了系統(tǒng)運行效率,也更便于發(fā)布渠道等擴展系統(tǒng)的對接。本系統(tǒng)今后的重點研究方向:隨著接入更多的發(fā)布通道和更多的發(fā)布類型,通過開發(fā)新的微服務或者迭代現有的微服務,為湖南省應急預警信息精準靶向發(fā)布系統(tǒng)提供更優(yōu)質、更穩(wěn)定的服務,并通過更多的大數據分析技術手段使其不斷完善,更好地應用于各類災害預警,更好地服務于防災減災。

      猜你喜歡
      靶向架構預警
      基于FPGA的RNN硬件加速架構
      如何判斷靶向治療耐藥
      MUC1靶向性載紫杉醇超聲造影劑的制備及體外靶向實驗
      功能架構在電子電氣架構開發(fā)中的應用和實踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      毛必靜:靶向治療,你了解多少?
      肝博士(2020年5期)2021-01-18 02:50:18
      法國發(fā)布高溫預警 嚴陣以待備戰(zhàn)“史上最熱周”
      園林有害生物預警與可持續(xù)控制
      現代園藝(2017年22期)2018-01-19 05:07:01
      LSN DCI EVPN VxLAN組網架構研究及實現
      電信科學(2017年6期)2017-07-01 15:45:17
      機載預警雷達對IFF 的干擾分析
      靶向超聲造影劑在冠心病中的應用
      喀喇沁旗| 长岛县| 通海县| 安阳县| 长岛县| 五指山市| 松江区| 深圳市| 保亭| 宜君县| 崇明县| 将乐县| 长治市| 修水县| 台前县| 石泉县| 吉木萨尔县| 龙游县| 呼图壁县| 禄丰县| 清原| 湖南省| 山西省| 莱芜市| 化隆| 宁晋县| 玉环县| 永平县| 焉耆| 拜泉县| 祁连县| 瓦房店市| 南宁市| 高平市| 岳阳县| 玛多县| 莱阳市| 夏邑县| 宜川县| 砚山县| 沅江市|