架構不是一個職業而是一種能力,每一種架構師隻不過是在不同的領域裡面使用不同的技術,沒有什麼可對比,就好比如你問一個籃球明星和一個足球明星有什麼差別一樣!
01 架構師需要考慮四個問題
1. 确定系統幹什麼不幹什麼,也就是說系統的邊界在哪裡?
2. 确定架構内部的子產品與子產品之間的關系,以及子產品與外部之間的關系是什麼?
3. 架構确定以後,有能力去指導開發去繼續設計和演化,如果開發設計和演化出來的東西和架構不一緻也是有問題的。
4. 确定非功能性需求,安全性,可擴充性,可用性,可維護性。
02 Java架構方向人才
● 系統的技術選型和可行性評估;
你這可以了解為:你家的房子戶型設定,硬體軟體配置必須要有自己的經驗,裝修完之後總得适用,不浪費成本,偏激一點總不能到處是櫃子。
● 分布式技術架構的把控;
你這可以了解為:你家的櫃子可以做出多種組合,你家的被子是放在A櫃,枕頭放B櫃,床單放C櫃,這得看你的劃分用途。
● 深入發掘和分析業務需求,重點子產品的設計、方案評審與技術支援,技術難點攻堅,應用系統分布式技術的落地,撰寫技術方案和系統設計,最終完成編碼工作;
你這可以了解為:櫃子可以用來放東西,也可以用來拼裝;如果組合櫃,那可以拼出一些藝術品,那就看你的空間思維了。
● 針對産品性能和架構優化,確定系統的架構品質;
你這可以了解為:櫃子如果沒有按照之前圖紙來規劃安裝擺放,你就會發現有些地方是可以改進的,及時完全參照圖紙,你還是會想如何改進,這就會産生一些小想法;你可能會想如何裝更多的物品,如何友善取物,如何整理友善。
● 優秀的抽象設計能力,思路清晰,善于思考,能獨立分析和解決問題及編寫解決方案;
你這可以了解為:哇,你家的裝修真棒,這時你的鄰居,或親威朋友想參考你的想法,你可以提供一整套安裝配置方案,現在你就是專家,因為他們想利用空間,發揮你的空間想像力。需要你來指導裝修,提高裝修品質,減少控制裝修成本等等。
● 熟悉linux,能熟練應用shell/python等腳本語言;
● 紮實的Java基礎知識,熟悉IO、多線程及并發技術;
● 熟練掌握redis、mongodb、netty、kafka等中間件;
● 對JVM原理有紮實的了解,對伺服器端設計和程式設計有深入了解;
你這可以了解為:你對基建設施了如指掌,編譯原理很清楚,恭喜你,你已經超過我了。
● 算法基礎紮實,熟悉常見的資料結構,熟悉常用的設計模式,深入了解分布式算法和主流分布式系統,了解主流消息隊列工作原理;
你這可以了解為:排序,索引,存儲,去重,平滑等一些算法有深入了解,恭喜你,你已經是數學專家級了。
● 有豐富的分布式、高并發、高負載、高可用性系統設計經驗,熟悉分布式緩存、消息等機制。
03 大資料架構方向人才
● 針對大資料平台的設計和開發制定資料架構規範,進行核心代碼編寫;
你這可以了解為:有設計圖紙的能力,能夠指導各個元件安裝部署,以及資料的資料抽象能力。
● 針對資料基礎架構和資料處理體系的更新和優化,技術難題攻關,持續提升核心系統性能,保證系統的安全、穩定、高效運作;
你這可以了解為:資料的價值,在于你的抽取采集能力是否高深,是否便于加工,标注。各元件的穩定性,相容性,是否有預警,在于你的規劃和監控接口是否到位。
● 大規模資料實時化、大資料技術容器化、私有雲實施方案、資料模型規範化等方面根據不同項目的技術發展路線;
你這可以了解為:引入 Docker 的鏡像機制來完善自己的容器;同時計算能力、資料結構抽象、定義,要用自己的風格和規範。能用最簡單的配置,迅速跑起來流式streaming或離線處理spark程式.
● 跟蹤大資料相關領域的技術趨勢,競争對手的産品、技術動态;
● 大資料平台的穩定性和性能優化及技術攻關;
● 産品研發過程中關鍵設計的把關和研發;
● 精通大資料生态圈主流技術和産品,如Hive、Storm、Flink、Spark,ELK、Kafka,Zookeeper、Yarn,presto,Hue等,對Spark分布式計算的底層原理有深度了解,對複雜系統的性能優化和穩定性的一線實戰經驗;
● 精通實時資料倉庫設計,深刻了解MR運作原理和機制,能進行任務執行效率的優化,熟悉開源資料交換工具如sqoop,streamset,kettle,datax等
● 熟悉elasticsearch、Lucene、Solr、Kylin、Phoenix、Alluxio等相關技
● 具有規劃和決策能力,善于捕捉業務需求、架構設計存在的問題,并能給出有效的解決措施和方法 。
● 資料預測,預警,人工智能,圖像識别,智能語音,物聯網資料采集,标注等。線性計算,神經網絡,知識圖譜,都要有自己的項目,而且能迅速組建團隊,成就你的客戶,你就是未來的行家和赢家。
04 兩者側重點不同
★ Java架構
n 開發語言
n 分布式,高可用
n 設計模式
n 支撐業務的系統架構或者工具集
★ 大資料架構
n 不局限開發語言,有Java,Scala,Python,Go等更有裨益
n 人工智能,商業智能,資料挖掘
n 離線,實時,高效率,高可用
n 結構化資料,半結構化資料
n Hadoop生态圈
n 使用的模型越來越複雜,計算量指數級上升
n 元件集
05 總之
了解到使用者的痛點,抓住使用者的喜好,改善使用者的體驗。
一個好的産品,一定要讓使用者感覺到爽。核心問題還是哪些資料值的采集,每個開發,碼者都應該站在産品的角度去思考問題,如何描繪出适合我們的一套智能化,自動化的問題解決方案