【從開公司到開發(fā)全平臺(tái)產(chǎn)品】4.后端開發(fā)的思考满哪、實(shí)踐-UPUPMO

  • 大家好婿斥,我是 UPUPMO.com 的作者 Meek劝篷,歡迎觀看《從開公司到開發(fā)全平臺(tái)產(chǎn)品》系列。
  • 希望通過該系列可以幫助新手民宿,快速了解全棧軟件產(chǎn)品的一些思路娇妓、應(yīng)用。
  • 本期我們講解第四章:《后端開發(fā)的思考活鹰、實(shí)踐》
  • 我們將會(huì)從以下4個(gè)小節(jié)進(jìn)行探討:
1. 后端行業(yè)中常見爭(zhēng)議
2. 后端企業(yè)級(jí)架構(gòu)標(biāo)準(zhǔn)
3. 各類數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景
4. 如何挑選技術(shù)哈恰、框架

1. 后端行業(yè)中常見爭(zhēng)議

1.1 行業(yè)中的普遍爭(zhēng)議

[圖片上傳失敗...(image-8071b3-1654935531085)]

  1. Windows、macOS志群、Linux 哪個(gè)更適合程序員日常?(暫停 3 秒着绷,大家想一下自己心中的答案)
其實(shí)這個(gè)問題是不夠嚴(yán)謹(jǐn)?shù)模碚撋蠎?yīng)該說哪種程序員? 是嵌入式? 后端? 安全? 驅(qū)動(dòng)? 等等锌云,但是如果這樣的問荠医,該爭(zhēng)議就沒意思了。
這里我們先假設(shè)是可以用 TNT 軟件桑涎,不討論道德潔癖彬向,并且假設(shè)的是國(guó)內(nèi)環(huán)境,因?yàn)閲?guó)內(nèi) Windows 流氓軟件確實(shí)很多攻冷。
我說下我個(gè)人答案:我喜歡 macOS娃胆。綜合看 macOS 和 Windows + WSL 可以干的事情都差不多,但是 macOS 是一個(gè)生態(tài)等曼,沒有割裂性缕棵,整體沉浸感更強(qiáng),系統(tǒng)也更加穩(wěn)定涉兽,真的是穩(wěn)如狗的穩(wěn)。
我還喜歡 macOS 大量的收費(fèi)軟件篙程,它們都是有人維護(hù)枷畏、更新,我們可以經(jīng)常跟進(jìn)
缺點(diǎn)就是性價(jià)比不高虱饿,白蘋果很貴拥诡。
至于 Linux,該是會(huì)用服務(wù)器的人終歸把它當(dāng)服務(wù)器氮发,做桌面的話只能妥協(xié)國(guó)內(nèi)那些必備軟件體驗(yàn)渴肉,或者使用網(wǎng)頁(yè)版、手機(jī)爽冕,割裂感太強(qiáng)仇祭。
同時(shí) Linux 下的生活軟件也是被更新最慢,所以只適合做服務(wù)器或者單純只開發(fā)颈畸。
  1. 程序員應(yīng)該用哪個(gè) IDE 或編輯器?

[圖片上傳失敗...(image-95aad6-1654935531085)]

我的答案是:
這個(gè)問題也是不嚴(yán)謹(jǐn)?shù)奈谄妫瑧?yīng)該是具體到哪種程序員
我主要是前后端開發(fā)没讲,所以我是 JetBrains 的堅(jiān)定支持者,它缺點(diǎn)是收費(fèi)礁苗,并且需要大內(nèi)存的電腦爬凑。
  1. IDE 應(yīng)該用淺色主題還是深色主題?
我的答案是:
這個(gè)我倒是有自己的一套健康理論
首先大多數(shù)程序員都是整天對(duì)著電腦的,需要一個(gè)防藍(lán)光眼鏡试伙,一個(gè)屏幕掛燈嘁信,并且把系統(tǒng)改為夜覽模式,此時(shí)看到系統(tǒng)會(huì)是偏黃色
在這種條件下對(duì)你的眼鏡保護(hù)是最好的疏叨,此時(shí)屏幕亮度不會(huì)很高潘靖,用深色主題看起來(lái)不清晰,所以我覺得應(yīng)該是淺色主題
  1. 縮進(jìn)是用 Tab 還是空格?
我的答案是:
一開始用 Java 習(xí)慣用 Tab考廉,但是從開始寫前端后秘豹,我偏向于應(yīng)該讓所有語(yǔ)言都是用空格。
  1. 最好的注釋就是代碼本身?
我的答案是:
理想狀態(tài)下應(yīng)該是昌粤,但是實(shí)際情況下既绕,需求各種各樣,有的細(xì)節(jié)沒有流程圖涮坐、時(shí)序圖根本說不清楚凄贩,所以我傾向于有注釋,只是簡(jiǎn)單方法袱讹、簡(jiǎn)單單詞的注釋可以少寫

1.2 開發(fā)語(yǔ)言相關(guān)爭(zhēng)議

  1. 誰(shuí)是世界上最好的開發(fā)語(yǔ)言?
我的答案是:
不存在的疲扎,沒有哪種語(yǔ)言可以干任何場(chǎng)景的需求。
但是我喜歡靜態(tài)語(yǔ)言捷雕,最好是類似 Rust 這種椒丧,可以在編譯期就暴露出大多數(shù)錯(cuò)誤的這種語(yǔ)言
  1. Go 要取代 Java 嗎?
在回答這個(gè)問題之前得先介紹 Pivotal:

2003 年,Rod Johnson 和同伴創(chuàng)建了 Interface 21
2008 年救巷,改名為大家熟知的 SpringSource 并收購(gòu) Covalent 得到 Tomcat壶熏、Geronimo、Apache Axis
2008 年浦译,SpringSource 收購(gòu) G2One 得到 Groovy棒假、Grails
2009 年,SpringSource 收購(gòu) Hyperic
但是 2009 年 8 月精盅,VMware 收購(gòu)了 SpringSource
2009 年帽哑,SpringSource 收購(gòu) Cloud Foundry 平臺(tái)
2010 年,SpringSource 收購(gòu) RabbitMQ叹俏、Redis妻枕、GemStone Data
2012 年,Rod Johnson 離開 
2012 年,EMC 又收購(gòu)了 Pivotal Labs 公司佳头;
2013 年鹰贵,EMC、VMware康嘉、通用電氣和收購(gòu)來(lái)的 Pivotal Labs 公司重新組建了新的公司 Pivotal碉输,此時(shí) EMC 是控股股東
2015 年,戴爾又并購(gòu)了 EMC亭珍,所以嚴(yán)格算此時(shí)是戴爾當(dāng)家
2018 年敷钾,Pivotal 上市,但是后續(xù)股票不理想
2019 年肄梨,VMware 收購(gòu) Pivotal 變成的控股股東阻荒,然后把它從紐交所摘牌,開始主推 VMware Tanzu 生態(tài)(是 K8S 生態(tài))
更多信息可以看:https://wikipedia.org/wiki/SpringSource

從 2003 年到 2019 年來(lái)众羡,Spring 所代表的企業(yè)經(jīng)歷了好幾次收購(gòu)侨赡、被收購(gòu),所以我們可以看出來(lái) Spring 所代表開源是需要大量錢粱侣、優(yōu)秀的人才能堆出來(lái)羊壹。
還是我上一章節(jié)那句話:寫代碼就是寫 Bug 過程,一定要有金主支撐不然很難維持齐婴。
Java 單體油猫、大數(shù)據(jù)、以及過去十幾年的舊體系柠偶,目前還是會(huì)繼續(xù)存活情妖,但是 Go 帶來(lái)的云原生趨勢(shì)越來(lái)越明顯,而且也有大金主支撐诱担。至于 Rust 還要再熬一下生態(tài)毡证。
目前的世界因?yàn)?K8S 變了,所以我的結(jié)論就是:Go 會(huì)在未來(lái)代替 Java 成為最大主流蔫仙,但是需要繼續(xù)熬一下料睛。

  1. MySQL、PostgreSQL 之爭(zhēng)
從性能和插件擴(kuò)展性上看 PostgreSQL 更優(yōu)秀匀哄。
但是,PostgreSQL 國(guó)內(nèi)流行度不高雏蛮,所以學(xué)習(xí)成本涎嚼、維護(hù)成本就無(wú)法把控。
并且國(guó)內(nèi)云廠商自研的分布式云數(shù)據(jù)庫(kù)引擎協(xié)議挑秉,都是優(yōu)先 MySQL法梯,所以從長(zhǎng)遠(yuǎn)看,用 MySQL 更有助于后續(xù)上云。
  1. Java ORM 框架之爭(zhēng)
Java ORM 框架主流是 JPA 和 MyBatis
我個(gè)人不反感 API 方式立哑,但是對(duì)于復(fù)雜業(yè)務(wù)夜惭,我喜歡先在 Navicat 中進(jìn)行書寫、測(cè)試铛绰,
確定沒問題之后诈茧,直接把 SQL 復(fù)制到 XML 中,所以我偏向 MyBatis
  1. JDK 版本爭(zhēng)論
從類型上可以分為:
OraceJDK
OpenJDK
Amazon Corretto
Alibaba Dragonwell
Tencent Kona
HUAWEI 畢昇
等等其他

從版本號(hào)上分主流有:
JDK 6
JDK 8
JDK 11
JDK 17

我個(gè)人試過:OraceJDK捂掰、OpenJDK敢会、Amazon Corretto 的 JDK 8、JDK 11
都是對(duì)同一個(gè)后臺(tái)多模塊項(xiàng)目進(jìn)行編譯这嚣、接口壓測(cè) QPS鸥昏,得到結(jié)果還是以 OraceJDK 8 為最佳或者說差異不大。
大家可以根據(jù)自己的需求做下壓測(cè)姐帚,選擇自己最適合的吏垮。

2. 后端企業(yè)級(jí)架構(gòu)標(biāo)準(zhǔn)

[圖片上傳失敗...(image-284b5e-1654935531085)]

  • 立這個(gè)標(biāo)準(zhǔn)主要目的是:每當(dāng)我學(xué)習(xí)一個(gè)新的后端語(yǔ)言、后端框架罐旗,我都會(huì)按照此功能需求進(jìn)行調(diào)研
  • 我主要是以業(yè)務(wù)驅(qū)動(dòng)去思考使用的語(yǔ)言膳汪、框架
  • 其中微服務(wù)需要的組件較多,放在第二部分

2.1 基礎(chǔ)標(biāo)準(zhǔn)

IDE 代碼補(bǔ)全尤莺、糾錯(cuò)支持
IDE 調(diào)試旅敷、重構(gòu)支持
公網(wǎng)包管理、私服包管理
單元測(cè)試
文件上傳颤霎、下載
多環(huán)境配置
性能分析工具
調(diào)試工具
事務(wù)管理
日志工具
Web 安全:SQL 注入媳谁、XSS、CSRF友酱、SSRF晴音、上傳漏洞
緩存庫(kù):Redis、KeyDB
傳統(tǒng)數(shù)據(jù)庫(kù):MySQL缔杉、PostgreSQL 等


調(diào)度工具
參數(shù)校驗(yàn)框架
持續(xù)集成锤躁、容器化
度量指標(biāo)實(shí)時(shí)上報(bào)
靜態(tài)資源配置
Excel、PDF 等文檔工具
WebSocket或详、gRPC系羞、MQ、MQTT
事件監(jiān)聽
攔截器霸琴、過濾器椒振、監(jiān)聽器思維
參數(shù)解析器
返回值處理器
統(tǒng)一異常管理
國(guó)際化多語(yǔ)言



AOP 切面思維
單點(diǎn)登錄
遠(yuǎn)程調(diào)試
流程引擎
規(guī)則引擎
異常分析:SQL異常、框架異常
搜索引擎:Elasticsearch梧乘、Solr澎迎、OpenSearch 等
列數(shù)據(jù)庫(kù):ClickHouse庐杨、HBase 等
時(shí)序庫(kù):Prometheus、M3DB夹供、InfluxDB 等
圖數(shù)據(jù)庫(kù):Neo4j灵份、Dgraph 等

2.2 微服務(wù)標(biāo)準(zhǔn)

分布式 ID
分布式緩存
分布式鎖
分布式事務(wù)
分布式調(diào)度
分布式日志
分布式消息

熔斷、限流
注冊(cè)中心
API 網(wǎng)關(guān)
配置管理(路由哮洽、限流動(dòng)態(tài)配置)
鏈路追蹤
gRPC
系統(tǒng)監(jiān)控
度量指標(biāo)監(jiān)控
單點(diǎn)登錄填渠、認(rèn)證、鑒權(quán)
A/B測(cè)試袁铐、灰度發(fā)布

3. 各類數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景

[圖片上傳失敗...(image-381649-1654935531085)]

傳統(tǒng)數(shù)據(jù)庫(kù)的范式要求既是缺點(diǎn)也是優(yōu)點(diǎn)揭蜒。
缺點(diǎn)就是大家都怪它不靈活,但是這同樣是它優(yōu)點(diǎn)剔桨,畢竟死板的東西跟容易被維護(hù)屉更、控制。
我個(gè)人喜歡做事死板洒缀,但是也排斥不靈活的瑰谜,主要還是看應(yīng)用場(chǎng)景的合適原則
  1. MySQL:傳統(tǒng)數(shù)據(jù)庫(kù)思維場(chǎng)景
  2. Redis:內(nèi)存存儲(chǔ)場(chǎng)景
  3. RabbitMQ:消息隊(duì)列場(chǎng)景
  4. Elasticsearch:全文檢索、復(fù)雜搜索树绩、可視化分析
  5. ClickHouse:數(shù)據(jù)量大萨脑、批量寫入,查詢條件簡(jiǎn)單饺饭、列與列之間聯(lián)系不大的場(chǎng)景
  6. MongoDB:結(jié)構(gòu)不確定渤早,聚合查詢,查詢多
  7. Neo4j:圖類結(jié)構(gòu)的場(chǎng)景瘫俊,比如:社交關(guān)系鹊杖、企業(yè)關(guān)系、多維關(guān)聯(lián)分析扛芽、交通物流骂蓖、推薦系統(tǒng)
  8. Prometheus:物聯(lián)網(wǎng)設(shè)備采集、各類監(jiān)控?cái)?shù)據(jù)采集等基于時(shí)間線的連續(xù)數(shù)據(jù)

4. 如何挑選技術(shù)川尖、框架(重點(diǎn))

可以從下面看出來(lái)登下,我基本都是圍著 GitHub 轉(zhuǎn),可以說我最大老師就是 GitHub 本身叮喳,也推薦大家養(yǎng)成這個(gè)習(xí)慣
  1. 查看官網(wǎng)文檔編寫情況
  2. 查看 GitHub 的 star 數(shù)量被芳,越高表示越流行
  3. 查看 GitHub 的 Contributors 數(shù)量,以及主要參與者活躍
  4. 查看 GitHub 的發(fā)布記錄
  5. 查看 GitHub 是否有資金贊助者否屬于某些大企業(yè)
  6. 針對(duì)某些你認(rèn)為常用 API 在 GitHub 進(jìn)行全文檢索馍悟,查看使用它搜索到的項(xiàng)目數(shù)量
  7. 在掘金畔濒、博客園、InfoQ赋朦、CSDN篓冲、51CTO 等社區(qū)搜索,查看活躍度
  8. 對(duì)基礎(chǔ)項(xiàng)目進(jìn)行性能測(cè)試
  9. 查看其框架搭建起來(lái)是否能盡可能多地滿足我們前面的標(biāo)準(zhǔn)
  10. 其他資料宠哄,比如:各大云廠商支持的架構(gòu)壹将、ThoughtWorks 的技術(shù)雷達(dá)、GitHub Octoverse毛嫉、已出版書籍等等

下期預(yù)告

  • 下期我們將介紹《前端開發(fā)的思考诽俯、實(shí)踐》,分別從以下 4 個(gè)方面進(jìn)行講解:
1. 前端企業(yè)級(jí)架構(gòu)標(biāo)準(zhǔn)
2. 主流前端框架對(duì)比
3. 正在發(fā)展的云開發(fā)介紹
4. 我常用的前端框架介紹
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末承粤,一起剝皮案震驚了整個(gè)濱河市暴区,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辛臊,老刑警劉巖仙粱,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異彻舰,居然都是意外死亡伐割,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門刃唤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隔心,“玉大人,你說我怎么就攤上這事尚胞∮不簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵笼裳,是天一觀的道長(zhǎng)唯卖。 經(jīng)常有香客問我,道長(zhǎng)侍咱,這世上最難降的妖魔是什么耐床? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任夜涕,我火速辦了婚禮鸦难,結(jié)果婚禮上农渊,老公的妹妹穿的比我還像新娘涉波。我一直安慰自己它抱,他們只是感情好被碗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布甚侣。 她就那樣靜靜地躺著创千,像睡著了一般木柬。 火紅的嫁衣襯著肌膚如雪皆串。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天眉枕,我揣著相機(jī)與錄音恶复,去河邊找鬼怜森。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谤牡,可吹牛的內(nèi)容都是我干的副硅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翅萤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恐疲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起套么,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤培己,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胚泌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體省咨,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年玷室,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茸炒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阵苇,死狀恐怖壁公,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绅项,我是刑警寧澤紊册,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站快耿,受9級(jí)特大地震影響囊陡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掀亥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一撞反、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搪花,春花似錦遏片、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至幢踏,卻和暖如春髓需,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背房蝉。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工僚匆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留微渠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓咧擂,卻偏偏與公主長(zhǎng)得像敛助,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屋确,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容