青島護(hù)適通醫(yī)療科技有限公司 山東 青島 266101
CRM系統(tǒng)在國(guó)內(nèi)推廣實(shí)施已經(jīng)二十余年了。為了規(guī)范管理、降低成本、提高競(jìng)爭(zhēng)力,各家企業(yè)均紛紛上馬該系統(tǒng)。隨著技術(shù)的不斷進(jìn)步,CRM系統(tǒng)自身也在發(fā)生者深刻的變革?,F(xiàn)就家電領(lǐng)域CRM系統(tǒng)的技術(shù)實(shí)現(xiàn)做一下淺顯的探討。
總體架構(gòu)方案基于微服務(wù)的理念,前后端實(shí)現(xiàn)分離方案,結(jié)合Spring-Cloud實(shí)現(xiàn)分布式微服務(wù),將每個(gè)微服務(wù)設(shè)計(jì)成無(wú)狀態(tài)服務(wù),可以借助于Kubernetes等具備彈性伸縮能力的基礎(chǔ)平臺(tái),實(shí)現(xiàn)按需彈性伸縮,更好的應(yīng)對(duì)不同模塊的不用訪問(wèn)量帶來(lái)的壓力,同時(shí)降低運(yùn)維等成本。
↑整體架構(gòu)方案
View為整個(gè)系統(tǒng)的“窗戶”,屬于用戶的視圖層,用戶視覺(jué)效果的展示。View層采用Vue進(jìn)行開(kāi)發(fā),使用螞蟻金服開(kāi)源的AntDesign模板風(fēng)格實(shí)現(xiàn)Web端的設(shè)計(jì),采用微信前端團(tuán)隊(duì)開(kāi)源的WeUI庫(kù)結(jié)合DCloud的uni-app實(shí)現(xiàn)移動(dòng)端的開(kāi)發(fā),uni-app可以實(shí)現(xiàn)一套代碼生成IOS、Android、微信小程序、支付寶小程序等多平臺(tái)多形態(tài)的移動(dòng)端程序。
Gateway為整個(gè)系統(tǒng)的鑒權(quán)、授權(quán)和路由模塊,每一次的前端的訪問(wèn)請(qǐng)求,都要經(jīng)過(guò)Gateway的審核,首先驗(yàn)證用戶是否已經(jīng)登錄,其次驗(yàn)證用戶是否有權(quán)限訪問(wèn)當(dāng)前的URI,然后再?zèng)Q定是否放行。
Gateway的方案采用SpringCloud生態(tài)體系中的Kong,Kong是一個(gè)云原生,快速,可擴(kuò)展和分布式微服務(wù)抽象層(也稱為API網(wǎng)關(guān),API中間件或某些情況下的Service Mesh)。作為2015年的開(kāi)源項(xiàng)目,其核心價(jià)值在于高性能和可擴(kuò)展性。Kong積極維護(hù),廣泛應(yīng)用于從創(chuàng)業(yè)公司到Global 5000以及政府組織等公司的生產(chǎn),其特性如下:
Cloud-Native:平臺(tái)不可知,Kong可以從裸機(jī)運(yùn)行到Kubernetes。
動(dòng)態(tài)負(fù)載平衡:跨多個(gè)上游服務(wù)負(fù)載均衡流量。
基于散列的負(fù)載平衡:使用一致的散列/粘性會(huì)話進(jìn)行負(fù)載平衡。
斷路器:智能跟蹤不健康的上游服務(wù)。
運(yùn)行狀況檢查:上游服務(wù)的主動(dòng)和被動(dòng)監(jiān)控。
服務(wù)發(fā)現(xiàn):在Consul等第三方DNS解析器中解析SRV記錄。
無(wú)服務(wù)器:直接從Kong調(diào)用并保護(hù)AWS Lambda或OpenWhisk功能。
WebSockets:通過(guò)WebSockets與您的上游服務(wù)進(jìn)行通信。
OAuth2.0:輕松將OAuth2.0身份驗(yàn)證添加到API。
日志記錄:通過(guò)HTTP,TCP,UDP或磁盤(pán)記錄對(duì)系統(tǒng)的請(qǐng)求和響應(yīng)。
安全性:ACL,Bot檢測(cè),白名單/黑名單IP等……
Syslog:登錄系統(tǒng)日志。
SSL:為基礎(chǔ)服務(wù)或API設(shè)置特定SSL證書(shū)。
監(jiān)控:實(shí)時(shí)監(jiān)控提供關(guān)鍵負(fù)載和性能服務(wù)器指標(biāo)。
轉(zhuǎn)發(fā)代理:使Kong連接到中間透明HTTP代理。
身份驗(yàn)證:HMAC,JWT,Basic等。
速率限制:基于許多變量阻止和限制請(qǐng)求。
轉(zhuǎn)換:添加,刪除或操作HTTP請(qǐng)求和響應(yīng)。
緩存:在代理層緩存并提供響應(yīng)。
CLI:從命令行控制您的Kong集群。
REST API:Kong可以使用其RESTful API進(jìn)行操作,以獲得最大的靈活性。
地理復(fù)制:配置始終是不同地區(qū)的最新信息。
故障檢測(cè)和恢復(fù):如果您的某個(gè)Cassandra節(jié)點(diǎn)發(fā)生故障,Kong不會(huì)受到影響。
群集:所有Kong節(jié)點(diǎn)自動(dòng)加入群集,使其配置在節(jié)點(diǎn)之間更新。
可擴(kuò)展性:通過(guò)自然分布,Kong通過(guò)簡(jiǎn)單地添加節(jié)點(diǎn)來(lái)水平擴(kuò)展。
性能:Kong通過(guò)擴(kuò)展和核心使用NGINX輕松處理負(fù)載。
插件:可擴(kuò)展的體系結(jié)構(gòu),用于為Kong和API添加功能。
業(yè)務(wù)模塊共分為六個(gè),每個(gè)模塊均為無(wú)狀態(tài)服務(wù),以便在單模塊高壓訪問(wèn)的時(shí)候?qū)崿F(xiàn)彈性伸縮和負(fù)載均衡。
業(yè)務(wù)模塊的開(kāi)發(fā)框架為SpringBoot,SpringBoot是由Pivotal團(tuán)隊(duì)在2013年開(kāi)始研發(fā)、2014年4月發(fā)布第一個(gè)版本的全新開(kāi)源的輕量級(jí)框架。它基于Spring4.0設(shè)計(jì),不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過(guò)簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化了Spring應(yīng)用的整個(gè)搭建和開(kāi)發(fā)過(guò)程。另外Spring-Boot通過(guò)集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性等問(wèn)題得到了很好的解決。SpringBoot所具備的特征有:
(1)可以創(chuàng)建獨(dú)立的Spring應(yīng)用程序,并且基于其Maven或Gradle插件,可以創(chuàng)建可執(zhí)行的JARs和WARs;
(2)內(nèi)嵌Tomcat或Jetty等Servlet容器;
(3)提供自動(dòng)配置的“starter”項(xiàng)目對(duì)象模型(POMS)以簡(jiǎn)化 Maven配置;
(4)盡可能自動(dòng)配置Spring容器;
(5)提供準(zhǔn)備好的特性,如指標(biāo)、健康檢查和外部化配置;
(6)絕對(duì)沒(méi)有代碼生成,不需要XML配置。
緩存使用Redis Cluster,Redis單機(jī)負(fù)載能力官方數(shù)據(jù)能達(dá)到180k的QPS,在面對(duì)高并發(fā)的情況下有很好的支撐能力,并且集群模式下,其自帶的高可用能力為大流量大并發(fā)場(chǎng)景提供了更好的支持。
DB層采用MySQL 8,采用一主兩從的架構(gòu)。Master負(fù)責(zé)主數(shù)據(jù)的讀取和寫(xiě)入,Slave 1實(shí)時(shí)從Master中復(fù)制數(shù)據(jù),做主從同步和讀寫(xiě)分離(如果有需要的話),Slave 2作為延遲熱備份,延遲一小時(shí)從Master拉取數(shù)據(jù)。
Redis集群中的數(shù)據(jù)為緩存數(shù)據(jù),當(dāng)Redis Node宕機(jī)后,Redis集群能夠主動(dòng)發(fā)生主從切換,實(shí)現(xiàn)整個(gè)集群的高可用。
MySQL使用KeepAlive進(jìn)行監(jiān)控,當(dāng)發(fā)生主節(jié)點(diǎn)宕機(jī)的情況,自動(dòng)觸發(fā)主從切換機(jī)制,將Slave 1切換成主機(jī),保證整個(gè)集群的可用性。另外,制定相關(guān)的數(shù)據(jù)災(zāi)備策略,每周一凌晨0點(diǎn)做Slave 1的全量備份,每周四、六凌晨0點(diǎn)做Slave 1的數(shù)據(jù)增量備份。以上僅為個(gè)人的一點(diǎn)淺見(jiàn),希望能對(duì)企業(yè)有所幫助。