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

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

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

杜冬梅 許志坤 蘇健

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

關鍵詞: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 背景

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

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

2 微服務架構

2.1 綜述

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

2.2 服務治理組件Eureka

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

2.3 服務網關Zuul

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

2.4 消息中間件RocketMq

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

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

2.5 微服務拆分

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

3 系統設計與實現

3.1 業務流程

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

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

3.2 微服務拆分

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

3.3 技術架構

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

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

3.4 系統實現

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

3.4.1 消息隊列生成

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

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);? --發送到消息隊列

}

}

3.4.2 消息隊列監聽

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

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;

/* 學員通過課程學習觸發班級合格*/

@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 結束語

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

參考文獻:

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

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

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

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

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

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 色婷婷天天综合在线| 伊人激情综合网| 成人在线视频一区| 白浆免费视频国产精品视频| 日韩色图区| 婷婷综合亚洲| 四虎成人在线视频| 91小视频版在线观看www| 国产99视频在线| 免费啪啪网址| 国产成人一级| 中国毛片网| 亚洲视频无码| 激情网址在线观看| 在线播放真实国产乱子伦| 一级片一区| 在线观看欧美精品二区| 久青草国产高清在线视频| 久久久久久久久亚洲精品| 欧美一区二区丝袜高跟鞋| 日韩A∨精品日韩精品无码| 国产丰满成熟女性性满足视频| 免费人成网站在线观看欧美| 青青草原偷拍视频| 国产麻豆福利av在线播放| 国产精品hd在线播放| 99久久精品久久久久久婷婷| 久久这里只有精品2| 日韩专区欧美| 毛片免费在线视频| 国产精品爽爽va在线无码观看 | 国产人妖视频一区在线观看| 找国产毛片看| 五月综合色婷婷| 免费在线色| 国产毛片基地| 国产精品一区二区不卡的视频| 波多野结衣二区| 在线国产91| 免费国产福利| 欧美精品二区| 欧美乱妇高清无乱码免费| 亚洲精品波多野结衣| 在线网站18禁| 毛片免费高清免费| 亚洲午夜久久久精品电影院| 日韩精品免费一线在线观看| 88国产经典欧美一区二区三区| 国产丝袜啪啪| 另类重口100页在线播放| 亚洲狠狠婷婷综合久久久久| 夜夜高潮夜夜爽国产伦精品| 中文字幕无码制服中字| 亚洲色成人www在线观看| 色综合激情网| 国产精品亚洲五月天高清| 日韩一区二区三免费高清| 2020亚洲精品无码| 国产成人毛片| 精品欧美视频| 日日拍夜夜操| 久久久久国色AV免费观看性色| 无码福利视频| 成人综合网址| 在线国产你懂的| 婷五月综合| 国产一区亚洲一区| 精品国产黑色丝袜高跟鞋| 97超级碰碰碰碰精品| 亚洲精品午夜无码电影网| 国产女主播一区| 丁香婷婷激情综合激情| 国产三级毛片| 亚洲欧美综合在线观看| 亚洲婷婷在线视频| 成人精品亚洲| 国产一级裸网站| 午夜日b视频| 亚洲无码91视频| 久996视频精品免费观看| 国产毛片久久国产| 国产综合精品一区二区|