999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于微服務的遠程培訓實時合格方案設計與實現(xiàn)

2021-04-22 16:10:08杜冬梅許志坤蘇健
電腦知識與技術 2021年8期

杜冬梅 許志坤 蘇健

摘要:遠程培訓是郵政網(wǎng)絡學院的重要功能。由于學員參加遠程培訓,通過課程學習、作業(yè)、考試、問卷等多個環(huán)節(jié)才能合格,所以判斷學員培訓是否合格邏輯比較復雜。傳統(tǒng)技術架構進行班級合格的實時處理,消耗系統(tǒng)性能,影響正常業(yè)務開展,一般在晚上空閑時間采用批處理方式進行處理,學員當天培訓合格,滯后一天獲得培訓結果。采用微服務架構,合理進行微服務拆分,結合消息隊列等機制,可以在保證系統(tǒng)正常運行的情況下,對學員培訓合格進行實時處理,提高了學員參加遠程培訓的學習體驗。

關鍵詞:Spring Cloud;Eureka;Zuul;RocketMQ

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)08-0149-03

Abstract: Distance training is an important function of post network college. Because the trainees can pass the remote train by course study, homework, examination and other links , the logic of judging whether the trainees are qualified or not is very complex. The real-time processing in the form of single application consumes the system performance, so the general application system uses batch processing in the idle time at night. Using microservice architecture, combined with message queue, can realize real-time judgment for the remote training base on the normal operation of the system.The learning experience of distance training is improved.

Key words: Spring Cloud; Eureka; Zuul; RocketMQ

1 背景

遠程培訓是郵政網(wǎng)絡培訓學院重要功能,學員參加遠程培訓,通過課程學習、作業(yè)、考試等多個環(huán)節(jié)才能合格,學員完成滿足班級合格的任一條件,都可能觸發(fā)班級合格。采用傳統(tǒng)的單體應用模式,如果在學員完成任一操作后都實時判斷是否班級合格,在學習高峰時段會大大影響系統(tǒng)性能。所以一般情況下,應用系統(tǒng)會在晚上定時處理班級合格,第二天將合格情況反饋給學員。學員培訓合格后會滯后一天得到培訓結果,這對于需要培訓班合格才能參加后續(xù)考試、競賽或其他活動的學員,帶來諸多不便。

采用基于微服務架構的遠程培訓實時合格方案,結合消息隊列機制,系統(tǒng)可以實時進行培訓班合格的處理,方便學員參加后續(xù)活動的同時,給學員帶來了更好的學習體驗。

2 微服務架構

2.1 綜述

當前流行的微服務架構中,Dubbo 和Spring Cloud使用的相對較多。Dubbo在服務治理方面很出色但開發(fā)難度稍大,且在網(wǎng)關、服務跟蹤等方面都不及Spring Cloud[1]。反觀Spring Cloud則包含分布式配置、網(wǎng)關、服務跟蹤、斷路器等功能,具備一整套解決方案[2]。

2.2 服務治理組件Eureka

Eureka是Spring Cloud的注冊中心[2]。微服務之間互相調用,通過Eureka進行。在注冊中心注冊的服務,才能被發(fā)現(xiàn)、獲取并調用。Eureka作為Spring Cloud核心組件,使得當某個微服務增加或減少服務節(jié)點后,不需要通知調用方增加或減少的IP地址等相關調用信息,應用系統(tǒng)通過水平擴展提高系統(tǒng)性能更加便捷。

2.3 服務網(wǎng)關Zuul

Spring Cloud Zuul 是微服務架構中的API網(wǎng)關。服務調用端調用后端的微服務,不能直接調用,而是通過Zuul根據(jù)請求的url進行服務轉發(fā)。Zuul位于后端服務和調用端之間,簡化了客戶端調用時的復雜度,通過Zuul還可以對調用方的權限進行檢查控制,所以它同時也可以提供監(jiān)控、安全等相關服務[2]。

2.4 消息中間件RocketMq

消息隊列作為高并發(fā)系統(tǒng)的核心組件之一,能夠幫助業(yè)務系統(tǒng)解構,提升開發(fā)效率和系統(tǒng)穩(wěn)定性。消息中間件包括消息生產(chǎn)者和消費者兩個角色:消息生產(chǎn)者負責創(chuàng)建消息并發(fā)送到消息服務器,消息消費者從消息服務器拉取消息并提交給應用消費[3]。Topic是消息最細粒度的訂閱單位,是生產(chǎn)者傳遞消息和消費者提取消息的標識。消息中間件處理模型如下。

Rocket MQ 是一款分布式、隊列模型的消息中間件,支持事務消息、順序消息、批量消息、定時消息、消息回溯等,具有高性能、高可靠、高實時、分布式特點[4],支持拉(pull)和推(push)兩種消息模式,具備億級消息堆積能力。

2.5 微服務拆分

采用微服務架構進行應用系統(tǒng)設計,微服務劃分十分重要。服務拆分的顆粒度是微服務架構應用系統(tǒng)實現(xiàn)的關鍵,是系統(tǒng)建成后運維工作、系統(tǒng)運行性能等的基礎。盡量單一職責、高內(nèi)聚低耦合、易拆分、易理解、易修改替換、易部署,都是好的微服務架構應有的特征[5]。

3 系統(tǒng)設計與實現(xiàn)

3.1 業(yè)務流程

學員參加遠程培訓班,合格條件從大的方面可以分為與具體課程有關、與具體課程無關兩個方面。

與課程有關的培訓班合格條件,包括課程學習、課程作業(yè)、課程考試。每個環(huán)節(jié)完成之后,需要判斷課程所在的必修課或選修課是否合格,進而判斷是否能夠導致班級合格。與課程無關的培訓班合格條件,包括綜合考試、綜合作業(yè)、集中互動、調查問卷。每個環(huán)節(jié)的合格,都可能導致學員班級合格。主要流程如下圖。

3.2 微服務拆分

從業(yè)務流程中可看出,課程合格的各個條件相互獨立。遵循微服務拆分原則,將班級合格的各個條件課程學習、課程作業(yè)、課程考試、綜合考試等劃分為7個獨立的微服務。學員在網(wǎng)院完成班級培訓的某項學習任務,通過網(wǎng)關調用相應微服務,進行消息隊列的生成,消息消費者獲取消息隊列的消息,進行班級合格的處理,保證學員實時合格。

3.3 技術架構

系統(tǒng)采用基于Spring Cloud的微服務架構,注冊配置中心采用Eurake,網(wǎng)關采用Zuul,消息隊列采用Rocket MQ,技術架構圖如下。

接入端提供全局的負載均衡功能,具有大量、高并發(fā)的接入請求處理能力;業(yè)務應用通過服務注冊的方式調用基礎服務功能;采用消息處理方式,在服務請求量大的情況下采用異步調用,保證用戶體驗的友好性;課程學習、課程作業(yè)等基礎服務彼此獨立,某一個服務的改造升級不會影響其他服務的功能,便于平臺的功能擴展;采用redis內(nèi)存數(shù)據(jù)庫集群提高系統(tǒng)運行性能。

3.4 系統(tǒng)實現(xiàn)

系統(tǒng)實現(xiàn)的核心為消息隊列,消息隊列機制保證了業(yè)務繁忙時間,班級合格處理不影響主流業(yè)務的正常開展。

3.4.1 消息隊列生成

以課程學習為例,課程學習完成,生成消息并發(fā)送到消息隊列。

package cn.cpoc.cla.portal.cla.mq.channel.impl;

import cn.cpoc.cla.channel.ClaClaQuesProvChanSource;

Import ...;

@EnableBinding({ ClaCourseStudyProvChanSource.class})

@Service

public class ClaCourseStudyProvChanSourceServiceImpl implements ClaCourseStudyProvChanSourceService {

@Autowired

private ClaCourseStudyProvChanSource claCourseStudyProvChanSource;

@Override

public boolean courseStudySource(PxClassClassrcdInfo pxClassClassrcdInfo) {

String uuid= UUID.randomUUID().toString();

Message message = MessageBuilder.withPayload(pxClassClassrcdInfo)

.setHeader(MessageConst.PROPERTY_KEYS, uuid+"--"+pxClassClassrcdInfo.getClassclassrcdid().toString())

.setHeader(MessageConst.PROPERTY_TAGS, ClaCourseStudyProvChanSinkService.COURSE_STUDY_SINK_METHOD_TAG)

.setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON).build();? ---生成消息

return claCourseStudyProvChanSource.source().send(message);? --發(fā)送到消息隊列

}

}

3.4.2 消息隊列監(jiān)聽

課程學習、課程考試、綜合考試等分別有各自的消息監(jiān)聽,監(jiān)聽消息隊列中屬于自己的消息,進行相應處理。以課程學習為例,消息監(jiān)聽實現(xiàn)如下。

package cn.cpoc.cla.course.study.provider.channel.impl;

import cn.cpoc.cla.channel.ClaCourseExamProvChanSink;

import ...;

....

public class ClaCourseStudyProvChanSinkServiceImpl implements ClaCourseStudyProvChanSinkService {

private final static Logger logger = LoggerFactory.getLogger(ClaCourseStudyProvChanSinkServiceImpl.class);

@Autowired

private IBjhgByKcxxService iBjhgByKcxxService;

/* 學員通過課程學習觸發(fā)班級合格*/

@Override

@StreamListener(value = ClaCourseStudyProvChanSink.SINK_CHANNEL,condition = COURSE_STUDY_SINK_METHOD)

public void courseStudySink(@Payload PxClassClassrcdInfo pxClassClassrcdInfo,@Header(name = "KEYS") Object key) {

try{

logger.info("key:"+key+" pxClassClassrcdInfo:"+pxClassClassrcdInfo.toString());

long count =redisTemplate.opsForValue().increment(key.toString(), 1);

logger.info("pxClassClassrcdInfo conut:" + count );

if(count==1){

redisTemplate.expire(key.toString(), 4, TimeUnit.DAYS);

iBjhgByKcxxService.setBjhbByKcxx(pxClassClassrcdInfo); --班級合格處理

}else{

logger.info("courseStudySink repeat key:" + key +" pxClassClassrcdInfo:"+pxClassClassrcdInfo.toString());

}

}

}

4 結束語

采用微服務架構實現(xiàn)遠程培訓班的實時合格功能,在學習高峰期會以消息隊列的形式進行異步處理,不影響遠程培訓主流業(yè)務的運行性能。學員完成培訓班學習后,合格信息會很快反饋給學員,提升了學員的學習體驗。同時,如果培訓班合格條件發(fā)生變化,微服務架構會以修改或增加單個微服務的方式快速應對業(yè)務變化。

參考文獻:

[1] 譚鋒.Spring Cloud Alibaba微服務原理與實戰(zhàn)[M].北京:電子工業(yè)出版社,2020.

[2] 方志朋.深入理解Spring Cloud與微服務構建[M].北京:人民郵電出版社,2018.

[3] 歐志芳.基于RocketMQ實現(xiàn)異構數(shù)據(jù)庫同步[J].網(wǎng)絡安全技術與應用,2016(12):99-100.

[4] 馬躍,顏睿陽,孫建偉.基于RocketMQ的MQTT消息推送服務器分布式部署方案[J].計算機系統(tǒng)應用,2018,27(6):83-86.

[5] 克里斯·理查森.微服務架構設計模式[M].北京:機械工業(yè)出版社,2019.

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 国产导航在线| 九色视频一区| 99热这里都是国产精品| 亚洲最大情网站在线观看| 国产精品七七在线播放| 午夜在线不卡| 99热线精品大全在线观看| 黄色网址手机国内免费在线观看| 91精品国产无线乱码在线| 久久精品视频亚洲| 国产区精品高清在线观看| 国产亚洲精品yxsp| 日本黄网在线观看| 午夜久久影院| 91精品综合| 国产精品久线在线观看| 国产97视频在线| 久久亚洲美女精品国产精品| www.精品国产| 欧洲高清无码在线| 欧美国产菊爆免费观看| 亚洲人成人伊人成综合网无码| 久久不卡国产精品无码| 国产精品综合色区在线观看| 色吊丝av中文字幕| 国产极品美女在线| 青青草国产在线视频| 欧洲av毛片| 亚洲女同欧美在线| 农村乱人伦一区二区| 国产欧美精品一区二区| 日本高清有码人妻| 国产91视频观看| 国产专区综合另类日韩一区| 天天操天天噜| 久久综合色视频| 狠狠色香婷婷久久亚洲精品| 在线观看网站国产| a级毛片免费网站| 在线观看欧美精品二区| 91精品aⅴ无码中文字字幕蜜桃| 日韩免费毛片| 精品99在线观看| 114级毛片免费观看| 91网在线| 亚洲高清无码精品| 亚洲狠狠婷婷综合久久久久| 国产肉感大码AV无码| 国产精品一线天| 丁香五月激情图片| 国产一区二区三区免费观看| 国产丝袜啪啪| 91精品免费久久久| 黄色片中文字幕| 凹凸国产熟女精品视频| 2022精品国偷自产免费观看| 亚洲自拍另类| 精品欧美日韩国产日漫一区不卡| 色老二精品视频在线观看| 丰满人妻被猛烈进入无码| 日韩欧美综合在线制服| 2021国产精品自产拍在线观看| 国产人碰人摸人爱免费视频| 有专无码视频| 亚洲女同一区二区| 国产在线麻豆波多野结衣| 91久草视频| 久久精品无码国产一区二区三区| 欧美中出一区二区| 欧美区国产区| 波多野结衣亚洲一区| 日韩激情成人| 国产69精品久久久久孕妇大杂乱 | 久久精品中文字幕少妇| 亚洲欧美综合另类图片小说区| 真实国产乱子伦高清| 国产高清无码第一十页在线观看| 又爽又大又黄a级毛片在线视频| 亚洲经典在线中文字幕| 色婷婷成人| 欧美综合中文字幕久久| 亚洲国产理论片在线播放|