系統(tǒng)的復雜性包括了技術復雜性和業(yè)務復雜性。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供瑪多企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計制作、成都網(wǎng)站制作、H5頁面制作、小程序制作等業(yè)務。10年已為瑪多眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。有人抱怨道:我做的系統(tǒng)一點都不復雜,你看我們數(shù)據(jù)量不大,用不上分庫分表,業(yè)務也不復雜,單體系統(tǒng)就夠了,什么負載均衡和集群也沒有,流量也不大,高并發(fā)和分布式也沒接觸過。
何為技術復雜性,我上面提到的都算,隨著業(yè)務的發(fā)展,我們的系統(tǒng)架構(gòu)需要支持大數(shù)據(jù)和高并發(fā),因此復雜的系統(tǒng)架構(gòu)孕育而生,在數(shù)據(jù)庫層面要考慮分庫分表,讀寫分離,主備切換;
為了提高查詢性能和單點問題,分布式緩存必不可少;
為了銷峰限流和服務解耦,分布式消息中間件也要用上;
大促期間,為了保證穩(wěn)定性,還要機器自動伸縮,服務降級、服務隔離、服務熔斷、服務限流等都是常用套路。
此外,分布式還有分布式調(diào)度系統(tǒng),分布式監(jiān)控系統(tǒng),分布式日志系統(tǒng),分布式鏈路采集等等。事實上,所以系統(tǒng)都是分布式的,單點故障是無法忍受的。說到這里,你覺得這系統(tǒng)太復雜啦。對的,為了構(gòu)建高可用,可伸縮的分布式系統(tǒng)確實復雜。
但是,技術架構(gòu)只是技術復雜性的其中一塊罷了。
試想,一個復雜的算法算不算技術復雜性呢?我覺得也算。一個好的算法,可以幫助我們解決很多復雜的業(yè)務問題。
這里,對于我們非算法工程師而言,如果能把業(yè)務問題轉(zhuǎn)換成算法問題,我就可以把人工問題轉(zhuǎn)換成智能化,那么我們的業(yè)務離商業(yè)智能又邁進的一大步。
說 AI 可能遠啦,聊點近的,比如延遲隊列的“時間環(huán)”算法,ZK的會話分桶算法,限流的令牌桶等,很多偏業(yè)務實戰(zhàn)方面的落地也可以讓我們做得事情充滿含金量,換句話說,吹逼層次可以提高了好幾個 Level 哈。技術復雜性,還可以是解決多數(shù)據(jù)源的聚合查詢問題,解決數(shù)據(jù)多寫同步以及一致性問題等。拋磚引玉,僅供參考。
業(yè)務的復雜性在于:不同業(yè)務與業(yè)務之前相互作用與干擾。
做過 2B 產(chǎn)品或者項目的小伙伴應該非常理解我所說的含義,因為適配不同企業(yè)和商家做定制化需求會導致產(chǎn)品越來越無法通用化,尤其 ERP 這種強業(yè)務定制的系統(tǒng)。
那么,為了維護多套類似的邏輯和代碼是成本巨大的,因此設計可擴展性的系統(tǒng)尤為重要。很多時候,我們對需求的變化是不可預期的。這種不可預期性恰恰是業(yè)務復雜性所在。
事實上,架構(gòu)設計都是基于當下的設計,一個設計的好壞在于:它是否可以快速地支持業(yè)務。換句話說,我設計的系統(tǒng)滿足了當前的業(yè)務,但是它后期無法可擴展,那么這個設計是好是壞呢?此外,我們根據(jù)領域模型作出了良好的設計,但是隨著業(yè)務的發(fā)展,每個模型耦合越來越重。
那么,請思考是領域模型不合理,還是架構(gòu)設計的不合理,還是業(yè)務發(fā)展的太快了呢?或者,再思考一個問題。一個公司覺得業(yè)務中臺的概念很好,也打算落地實踐,但是呢,它的業(yè)務比較單薄,那么,此時它設計的業(yè)務中臺具有通用性嗎?我個人感覺,不太好說。
事實上,需要不停的業(yè)務滋養(yǎng),只有滋養(yǎng)中才能從最初僅提供單薄業(yè)務功能的服務逐漸穩(wěn)定成一個解決具體問題的業(yè)務領域模型。設計模式的有一個模式叫做「模版方法模式」,它的核心思路在于把公共的流程固化下來,把差異點移交給具體的業(yè)務方去實現(xiàn)。是吧,只有我們有足夠多的業(yè)務場景,我們才能沉淀出那些是公共的邏輯,那些是可擴展點,然后在業(yè)務設計過程中,我們可以在本業(yè)務實現(xiàn)子類做自定義實現(xiàn),或者提供 SPI 給業(yè)務介入方擴展。
你以為我說到這里就結(jié)束了嗎?當然,不是。我更多的是想引發(fā)你的思考以及我們思維的碰撞。例如,很多人抱怨自己是 CRUD 工程師。
我覺得這些人太小看自己的價值了。業(yè)務的價值和復雜往往不是 CRUD,而是業(yè)務背后的價值思考。線下的業(yè)務線上化,傳統(tǒng)的東西在線化,那么它就具有結(jié)構(gòu)化存儲的能力,可以和其他數(shù)據(jù)協(xié)同,那么,它就有價值。
此外,你是不是可以把 CRUD 的流程自動化,本來一天搞定的東西,你1分鐘就搞定了,然后在花59分鐘來實現(xiàn)業(yè)務差異性??梢粤藛幔斎徊恍?。你是不是可以把59分鐘在壓縮壓縮,寫一個框架,把多分支的問題通過策略模式+工廠模式搞定呀,固化流程通過模版方法模式搞定哈,然后觀察者模式、適配器模式、代理模式、責任鏈模式、狀態(tài)模式都可以用一用。事實上,很多設計模式是解決復雜業(yè)務場景的可擴展經(jīng)驗套路。
最后總結(jié)一下,系統(tǒng)的復雜性包括了技術復雜性和業(yè)務復雜性。我們一起暢聊,學習,成長,打破認知的局限性?。。?/strong>
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
分享標題:「面試題」介紹你做過最復雜的系統(tǒng)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.rwnh.cn/article0/doeeio.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、手機網(wǎng)站建設、品牌網(wǎng)站設計、建站公司、企業(yè)網(wǎng)站制作、網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)