摘要:項(xiàng)目名稱后勤保障指揮系統(tǒng)項(xiàng)目部署環(huán)境銀河麒麟系統(tǒng)基于的公司框架協(xié)議啟動(dòng)方式啟功服務(wù)器腳本一鍵全啟,第一次開啟需要腳本文件名稱進(jìn)行授權(quán)。
項(xiàng)目名稱:后勤保障指揮系統(tǒng)
項(xiàng)目部署環(huán)境:銀河麒麟系統(tǒng)+myEclipse+mySql5.6+tomcat7+rabbitmq+基于ssm的公司框架+sip協(xié)議
啟動(dòng)方式:
啟功sip服務(wù)器:cd /home/wisdom/build_mpms/bin,./start.sh腳本一鍵全啟,第一次開啟需要chmod +x +腳本/文件名稱 進(jìn)行授權(quán)。 需要對(duì)cd /home/wisdom/build_mpms/bin路徑中的配置文件進(jìn)行配置,將所有.ini 文件中的ip地址改成你要連接的服務(wù)器的地址,注意解除級(jí)聯(lián)時(shí)的count=0. 打開sc.log日志:tail -f /tmp/sc.log打開日志,里面有注冊(cè)的信息(綠色字體)。 啟動(dòng)rabbitmq: cd /usr/local/rabbitmq-3.5.2/sbin,運(yùn)行./rabbitmq-server -detached ps -ef|grep rabbitmq 觀察是否有rabbitmq進(jìn)程。 啟動(dòng)mysql:cd /usr/local/mysql/bin,當(dāng)前路徑下運(yùn)行./mysqld_safe &文件,符號(hào)代表后臺(tái)運(yùn)行。 啟動(dòng)服務(wù):cd /usr/local/JavaApp/wd_msg_center/ 運(yùn)行./run.sh debug cd /usr/local/JavaApp/wd_mw_dal (data-access). ./run.sh debug cd /usr/local/JavaApp/wd_svc_resource (source-dir) ./run.sh debug cd /usr/local/JavaApp/wd_svc_authz (auth-service) ./run.sh debug cd /usr/local/JavaApp/wd_svc_session (session-manager) ./run.sh debug cd /usr/local/JavaApp/wd_agent_sip (sip-agent) ./run.sh debug cd /usr/local/tomcat/bin 當(dāng)前路徑下運(yùn)行./catalina.sh run 這段是調(diào)試時(shí)使用,真正部署時(shí)后臺(tái)啟動(dòng)就可以了。
進(jìn)入網(wǎng)址,http:// +ip地址 如果tomcat啟動(dòng)成功,可以看到登陸界面,更改服務(wù)資源與當(dāng)前服務(wù)節(jié)點(diǎn)(與你連接的服務(wù)器ip保持一致)
如果一切順利,安裝技保終端,安裝vs2015補(bǔ)丁就可以登陸了,(windows10安裝補(bǔ)丁有錯(cuò)誤,害我重新裝的系統(tǒng))
注意銀河麒麟橋接模式,需要用戶與服務(wù)器都要在同一個(gè)ip頻段才能去連接。
我負(fù)責(zé)的是系統(tǒng)中的指揮業(yè)務(wù)模塊,包括指揮組管理,指揮呼叫,臨時(shí)添加非指揮組成員(在指揮過程中,下同),強(qiáng)退指揮組成員,指揮提醒,暫停指揮,專向指揮,協(xié)同指揮,授權(quán)指揮,接替指揮,越級(jí)指揮,臨時(shí)指揮,呼叫組外人員,設(shè)置組播,調(diào)閱視頻等等。
說說我個(gè)人覺得的技術(shù)難點(diǎn)以及“坑”:首先的難點(diǎn)在于對(duì)業(yè)務(wù)流程的理解,比如接替指揮,授權(quán)指揮,因?yàn)橹笓]組的成員結(jié)構(gòu)是我緩存中的數(shù)據(jù),因此在業(yè)務(wù)發(fā)起后的成員結(jié)構(gòu)是怎樣的構(gòu)成需要慢慢理解(文檔上的用語太書面,理解時(shí)半猜半懂的,需要及時(shí)的溝通)。
在理解業(yè)務(wù)后,編寫的過程中要隨時(shí)考慮系統(tǒng)的狀態(tài),以及你的緩存變化,還有接收通知或發(fā)送通知后的變化,任何的變化都有可能是你模塊中的bug,如果你沒有考慮的話。例如強(qiáng)退成員時(shí),我們是將這個(gè)成員的某個(gè)狀態(tài)字段更改,而不是直接將這個(gè)成員從這個(gè)緩存中刪除,因此,在停止指揮時(shí),我們要恢復(fù)原來的成員結(jié)構(gòu),被強(qiáng)退的成員需要在他的用戶列表中看到原來的他所在的指揮組,這時(shí)在判斷時(shí)(我需要與數(shù)據(jù)庫中的原表比較,判斷這個(gè)成員是增加的還是減少的)需要判斷成員的狀態(tài),如果狀態(tài)是剔除狀態(tài),要重新把他放入一個(gè)集合中,通過處理判斷當(dāng)前用戶是否是原指揮組成員,是的就要在當(dāng)前用戶列表中顯示這個(gè)組,不是就要?jiǎng)h除這個(gè)組信息。
一、 for(SimpleUser simpleUser:members){ //表示刪除的成員狀態(tài) if(!"2".equals(simpleUser.getBizStatus())){ simpleIdList.add(simpleUser.getId()); } 二、 //求差集,這不重要 changedIdList.addAll(memberIdsByData); changedIdList.retainAll(simpleIdList); memberIdsByData.removeAll(changedIdList); if(memberIdsByData.size() != 0){ for(String memberId:memberIdsByData){ //在緩存中添加組信息 addGroupCache(memberId, groupWithMembers); } } simpleIdList.removeAll(changedIdList); if(simpleIdList.size() != 0){ for(String memberId:simpleIdList){ //刪除這個(gè)緩存中的這個(gè)組信息 deleteGroupCache(memberId, directGroup.getId()); } }
還有緩存的維護(hù)雖然沒什么難點(diǎn),但是邏輯要清晰,細(xì)節(jié)很重要,否則有的bug真的欲仙欲死,debug時(shí)那叫一個(gè)酸爽......
有一個(gè)坑我印象很深刻,因?yàn)槟翘斓谌綔y(cè)試,忙了一宿,系統(tǒng)的服務(wù)都已部署在生產(chǎn)環(huán)境中,大家都很緊張,偏偏我的業(yè)務(wù)(就是那個(gè)強(qiáng)退成員)無法實(shí)現(xiàn),報(bào)了異常(json轉(zhuǎn)換異常,很奇怪)可是我們自測(cè)時(shí)在本地運(yùn)行時(shí)業(yè)務(wù)是沒有問題的,我又加了一夜的班(悲催),找到原因,由于之前的一個(gè)接口沒有用上,但考慮以后擴(kuò)展,就一直沒有注釋掉,偏偏它的uri地址與強(qiáng)退成員接口的uri一模一樣,導(dǎo)致在生產(chǎn)環(huán)境中根本沒有掃描到我的強(qiáng)退成員接口,報(bào)異常也就不奇怪了。在我注釋掉那個(gè)擴(kuò)展接口后,系統(tǒng)正常。
再說說這個(gè)項(xiàng)目的動(dòng)態(tài)信息同步以及靜態(tài)信息同步策略,先說動(dòng)態(tài)信息同步,動(dòng)態(tài)信息同步采用訂閱-發(fā)布級(jí)聯(lián)模型實(shí)現(xiàn),在SIP標(biāo)準(zhǔn)規(guī)范上,PUBLISH和SUBSCRIBE/NOTIFY為兩種不同的事務(wù),在動(dòng)態(tài)信息同步中必須依據(jù)訂閱-發(fā)布級(jí)聯(lián)模型的時(shí)序圖實(shí)現(xiàn),需先SUBSCRIBE訂閱,后續(xù)才使用PUBLISH事務(wù)。在此項(xiàng)目中,第一次訂閱的節(jié)點(diǎn)需全量同步(NOTIFY和PUBLISH均全量),后續(xù)均增量同步(NOTIFY和PUBLISH均增量)。靜態(tài)信息同步(路由信息同步)使用LDAP,即靜態(tài)信息管理(LDAP)中節(jié)點(diǎn)信息可實(shí)現(xiàn)路由信息同步,生成全局路由表且支持更新。
總之,這個(gè)項(xiàng)目比較大,我還是很慶幸能有這樣的機(jī)會(huì)去參加這樣的項(xiàng)目,這個(gè)項(xiàng)目技術(shù)不算新,但是很考驗(yàn)個(gè)人的基礎(chǔ)知識(shí)以及對(duì)細(xì)節(jié)的把握,同時(shí)與眾多不同領(lǐng)域的程序員對(duì)接程序讓我對(duì)整個(gè)系統(tǒng)有了全面的了解,糾正了很多之前的不規(guī)范的編程習(xí)慣,先寫這么多,有補(bǔ)充還會(huì)繼續(xù)更新。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69136.html
摘要:方便自己以后的使用。父組件使用子組件對(duì)象操控子組件傳遞信息或者調(diào)用方法。 這里簡(jiǎn)單的記錄自己在angular2中,使用組件通信的一些方法。方便自己以后的使用。 一、組件之間通信的方式 使用事件通信(EventEmitter,@Output): 場(chǎng)景:可以在父子組件之間進(jìn)行通信,一般使用在子組件傳遞消息給父組件; 步驟:a. 子組件創(chuàng)建事件EventEmitter對(duì)象,使用@outpu...
摘要:方便自己以后的使用。父組件使用子組件對(duì)象操控子組件傳遞信息或者調(diào)用方法。 這里簡(jiǎn)單的記錄自己在angular2中,使用組件通信的一些方法。方便自己以后的使用。 一、組件之間通信的方式 使用事件通信(EventEmitter,@Output): 場(chǎng)景:可以在父子組件之間進(jìn)行通信,一般使用在子組件傳遞消息給父組件; 步驟:a. 子組件創(chuàng)建事件EventEmitter對(duì)象,使用@outpu...
摘要:文中涉及到的工具幕布插件番茄工作法助理原則原則是目標(biāo)管理中的一種方法。作為職業(yè)發(fā)展規(guī)劃的目標(biāo)來說,一般人最好是制定一個(gè)中期的目標(biāo),時(shí)間長(zhǎng)短在半年至三年內(nèi)。所以這篇旨在分享我在做個(gè)人職業(yè)規(guī)劃中的一些心得體會(huì)方法論思想等。 2019/07/14 UPDATE 本周想分享一下之前閱讀過的一本書《堅(jiān)持,一種可以養(yǎng)成的習(xí)慣》,這本書主要講的是如何去養(yǎng)成一個(gè)習(xí)慣,在本次的初期職業(yè)目標(biāo)的學(xué)習(xí)計(jì)劃中,...
摘要:轉(zhuǎn)折年初的時(shí)候換了部門,主要是面向端企業(yè)的產(chǎn)品,很多方式確實(shí)和以前不一樣。這也是自己給了個(gè)不及格的很大原因。這個(gè)也是在年中的緊急項(xiàng)目中學(xué)到的。不太急于做出承諾。 showImg(https://segmentfault.com/img/remote/1460000012682593?w=1174&h=492); 2017過去了,照例寫一篇總結(jié),以前也有寫過年終總結(jié),不過都是在博客或者本...
閱讀 3009·2023-04-26 02:49
閱讀 3529·2021-11-25 09:43
閱讀 3721·2021-10-09 09:43
閱讀 3174·2021-09-28 09:44
閱讀 2539·2021-09-22 15:29
閱讀 4737·2021-09-14 18:02
閱讀 2852·2021-09-03 10:48
閱讀 3486·2019-08-30 12:47