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