業(yè)務(wù)現(xiàn)狀+領(lǐng)導(dǎo)要求

 

1) 部署環(huán)境要求: 公有云,私有云,原有院內(nèi)系統(tǒng)。三套環(huán)境,兼容部署,一套代碼多環(huán)境支持。
2) 數(shù)據(jù)庫要求:sqlserver,orcale,mysql要兼容,一套代碼多庫運(yùn)行。
3) 性能要求:可擴(kuò)展行好,性能高,水平擴(kuò)展能力強(qiáng)(加機(jī)器就可以增強(qiáng)性能)。
4) 開發(fā)要求:簡單,容易,大家上手方便,文檔齊全,無需關(guān)心底層性能及實(shí)現(xiàn)。
5) 運(yùn)維要求:部署快,最好一鍵運(yùn)行,無部署環(huán)境問題。 

6) 架構(gòu)要求:架構(gòu)清晰,簡單;組件化,模塊化,微服務(wù)化;外部接口兼容,不同底層實(shí)現(xiàn)配置切換。

 

1)部署環(huán)境要求說明

目前的部署環(huán)境主要有公有云,私有云,原有院內(nèi)系統(tǒng)以及一些常規(guī)的業(yè)務(wù)演示。 

公有云: 目前考慮的有阿里云部署(線上),其他云部署(合作項(xiàng)目,線上),要求性能極好(應(yīng)用可平行擴(kuò)展部署,以便性能達(dá)到業(yè)務(wù)發(fā)展的承載能力)。

私有云: 目前考慮的是原有的院內(nèi)系統(tǒng)升級為私有云的形式部署整套云服務(wù)業(yè)務(wù)(整套基礎(chǔ)服務(wù)將打包成虛擬機(jī)鏡像方式部署),要求云服務(wù)性能可以適應(yīng)極低的硬件配置(院內(nèi)前置機(jī)硬件水平不佳),也能正常運(yùn)行。部署的情況很多(業(yè)務(wù)的主要場景),故要求技術(shù)支持能夠非常方便的部署(一鍵部署或者安裝包)及問題的排查。

原有院內(nèi)系統(tǒng):原有院內(nèi)系統(tǒng)可以考慮升級為私有云的方式部署,部分新的技術(shù)方式(如ef,activemq等),也可以使用,底層的一些實(shí)現(xiàn)能夠相對兼容(如數(shù)據(jù)結(jié)構(gòu))。但是暫時(shí)也不做過多的考慮。

以上環(huán)境,業(yè)務(wù)開發(fā)人員需要做一些區(qū)分,以便運(yùn)用相應(yīng)的技術(shù)(原有院內(nèi)系統(tǒng)沒有升級私有云,就無法正常使用大部分基礎(chǔ)服務(wù)相關(guān)的功能)。一套代碼要兼容多套環(huán)境下的部署和正確配置,便于業(yè)務(wù)運(yùn)行。

 

@解決方案

采用虛擬機(jī)鏡像的方式部署業(yè)務(wù)和基礎(chǔ)服務(wù),以整套鏡像版本提供業(yè)務(wù)版本,簡化安裝,簡化運(yùn)維,一鍵部署。

未來所有業(yè)務(wù)支持通過安裝包腳本的方式部署組件,部署服務(wù),部署應(yīng)用到基礎(chǔ)服務(wù)等,否則難以應(yīng)用多種環(huán)境,不同兼容性等情況。

基礎(chǔ)服務(wù)鏡像會(huì)以開源的形式驗(yàn)證整體的兼容性和穩(wěn)定性,通過開源反饋改進(jìn)鏡像版本的穩(wěn)定性。

 

2)數(shù)據(jù)庫要求說明

目前的數(shù)據(jù)庫環(huán)境主要是sqlserver,(但實(shí)際公司場景:有些院內(nèi)特別要求及目前公司領(lǐng)導(dǎo)要求)必須支持orcale,mysql的數(shù)據(jù)庫平滑切換。即一套代碼兼容三種數(shù)據(jù)庫的操作方式,盡可能少的方式或者通過修改配置的方式,一鍵切換不同數(shù)據(jù)庫。同時(shí)要求必須支持多庫操作(分業(yè)務(wù)庫和核心業(yè)務(wù)庫等),性能相對穩(wěn)定。使用要簡單,開發(fā)容易上手,資料文檔要多!

 

@解決方案

采用entityframework框架,二次封裝插件。ef框架性能其實(shí)并不高(或者較差,未來的未來肯定是一個(gè)數(shù)據(jù)庫的支持方向,但目前比較遙遠(yuǎn)),但是能夠兼容多種數(shù)據(jù)庫,通過切換不同驅(qū)動(dòng)dll庫,可以一套ef linq代碼,多種數(shù)據(jù)庫,多庫支持。國內(nèi)外.net通用流行的開源框架,微軟開源支持,文檔眾多,極易上手使用。在業(yè)務(wù)開發(fā)的前期和中期,將會(huì)一直保持使用該框架;在業(yè)務(wù)發(fā)展的后期,將會(huì)考慮使用純sql編寫數(shù)據(jù)庫操作代碼,且業(yè)務(wù)數(shù)據(jù)庫考慮深度的拆庫和分表。

 

3)性能要求說明

1. 要求業(yè)務(wù)和底層基礎(chǔ)服務(wù),具備架構(gòu)上的擴(kuò)展能力,通過加機(jī)器,升級硬件資源提升程序的性能。同時(shí)底層基礎(chǔ)服務(wù)必須支持高性能,極強(qiáng)的水平擴(kuò)展能力(分布式擴(kuò)展能力),這樣基于基礎(chǔ)服務(wù)研發(fā)的業(yè)務(wù),才能天生具備分布式特性,天生具備性能擴(kuò)展能力。

2. 實(shí)際公司的私有云環(huán)境的硬件性能其實(shí)不高,而開源的一些服務(wù)或者第三方解決方案往往對單臺服務(wù)器的性能要求其實(shí)會(huì)比想象中的偏高,更別提一些配套的相對復(fù)雜的高可用方案,不太適合實(shí)際業(yè)務(wù)的部署硬件環(huán)境。故在具備研發(fā)能力的情況下,采用自研的方案提供更低配置兼容(1核2G的硬件服務(wù)器)的基礎(chǔ)服務(wù)能力(同時(shí)自研框架又要能夠兼容第三方框架,這樣以便在不修改業(yè)務(wù)代碼情況下就可以在更高性能要求的公有云環(huán)境中大規(guī)模部署)。

 

4)開發(fā)要求說明

目前公司內(nèi)部的開發(fā)人員的技術(shù)水平很低,對基礎(chǔ)服務(wù)的一些相關(guān)概念不了解,相關(guān)的組件普遍知識(如消息隊(duì)列,任務(wù)調(diào)度,redis)接觸不深(有些人自身學(xué)習(xí)欲望也不強(qiáng)),短期乃至長期內(nèi)不容易改變現(xiàn)狀。

@解決方案

 1. 雖然可以通過培訓(xùn)等手段進(jìn)行培養(yǎng),但是基礎(chǔ)服務(wù)sdk層面更要提供一些非常簡潔精煉的接口調(diào)用,屏蔽大部分實(shí)現(xiàn)細(xì)節(jié)(對技術(shù)感興趣者可以看開放權(quán)限的源碼);

 2. 同時(shí)提供使用demo和不斷完善的技術(shù)文檔(知識庫體系),應(yīng)對各種環(huán)境使用的問題自查,解答,知識沉淀和分享;

 3. 通過配置中心,連接池,線程池,監(jiān)控平臺等手段,提供人工和自適應(yīng)的性能調(diào)優(yōu),性能監(jiān)控和分析,性能優(yōu)化建議等(性能監(jiān)控這塊需要不斷完善和監(jiān)控體系建設(shè))。

&nb

網(wǎng)友評論