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

 

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

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

 

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

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

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

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

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

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

 

@解決方案

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

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

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

 

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

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

 

@解決方案

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

 

3)性能要求說(shuō)明

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

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

 

4)開(kāi)發(fā)要求說(shuō)明

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

@解決方案

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

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

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

&nb