国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)

這篇具有很好參考價(jià)值的文章主要介紹了讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)

1.?可演進(jìn)的API

1.1.?隨著需求的變化,你需要改變你的API,即代碼之間的共享接口

1.2.?改變API很容易,但很難做到正確

1.3.?保持API小巧

1.3.1.?小巧的API更易于理解和演進(jìn)

1.3.2.?只添加即刻需要的API方法或字段

1.3.3.?帶有許多字段的API方法應(yīng)該有合理的默認(rèn)值

1.3.3.1.?開發(fā)人員可以只專注于和自己相關(guān)的字段,因?yàn)樗鼈儠?huì)繼承其他字段的默認(rèn)值

1.3.3.2.?默認(rèn)值可使大型API在感覺上很小巧

1.4.?公開定義良好的服務(wù)端API

1.4.1.?切記使用標(biāo)準(zhǔn)工具來定義服務(wù)端API

1.4.1.1.?OpenAPI通常用于RESTful服務(wù)

1.4.1.2.?non-REST服務(wù)則使用Protocol Buffers、Thrift或類似的接口定義語言(interface definition language,IDL)

1.4.1.3.?接口定義工具自帶代碼生成器,可以將服務(wù)的定義轉(zhuǎn)換為客戶端和服務(wù)端代碼

1.4.1.4.?文檔也可以被生成,測試工具可以使用IDL來生成stub數(shù)據(jù)和模擬數(shù)據(jù)

1.5.?保持API變更的兼容性

1.5.1.?向前兼容

1.5.1.1.?向前兼容的變更允許客戶端在調(diào)用舊版的服務(wù)時(shí)使用新版的API

1.5.1.2.?一個(gè)正在運(yùn)行1.0版API的網(wǎng)絡(luò)服務(wù),但可以接收來自使用1.1版API的客戶端的調(diào)用,這就是向前兼容

1.5.2.?向后兼容

1.5.2.1.?向后兼容的變更:新版本的庫或服務(wù)不需要改變舊的客戶端代碼

1.5.2.2.?如果針對1.0版API開發(fā)的代碼在使用1.1版時(shí)能繼續(xù)編譯和運(yùn)行,這種變更就被稱為向后兼容

1.6.?API版本化

1.6.1.?隨著API的不斷演進(jìn),你將需要決定如何處理多個(gè)版本的兼容性

1.6.2.?完全向后兼容和向前兼容的變更意味著API的所有的歷史版本和未來版本都可以相互操作

1.6.3.?你會(huì)想變更你的API,使之與舊的客戶端不兼容

1.6.3.1.?當(dāng)客戶端代碼難以變更時(shí),API的版本管理最有價(jià)值

1.6.4.?版本化你的API意味著你在做出改變時(shí)將引入一個(gè)新的版本

1.6.4.1.?API版本化自有其代價(jià)

1.6.4.2.?舊的主版本服務(wù)需要被維護(hù),修復(fù)的bug也需要回傳到以前的版本

1.6.5.?API版本通常由API網(wǎng)關(guān)或服務(wù)網(wǎng)格來管理

1.6.5.1.?管理版本所采用的方法要?jiǎng)?wù)實(shí)

1.6.6.?將文檔與你的API一起保持版本化

2.?可持續(xù)的數(shù)據(jù)管理

2.1.?API比持久化數(shù)據(jù)存續(xù)的時(shí)間更短

2.1.1.?一旦客戶端和服務(wù)端API都升級(jí)了,就意味著工作完成了

2.2.?隔離數(shù)據(jù)庫和使用明確的schema將使數(shù)據(jù)演進(jìn)更易于管理

2.3.?數(shù)據(jù)庫隔離

2.3.1.?共享的數(shù)據(jù)庫很難演進(jìn),并且會(huì)導(dǎo)致喪失自主性

2.3.1.1.?圖

讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)

2.3.2.?擁有共享數(shù)據(jù)庫的應(yīng)用程序可以發(fā)展到直接依賴對方的數(shù)據(jù),應(yīng)用程序應(yīng)該作為它們所使用的底層數(shù)據(jù)的控制點(diǎn)

2.3.3.?隔離的數(shù)據(jù)庫只有一個(gè)讀取者和寫入者

2.3.3.1.?其他所有流量都通過遠(yuǎn)程過程調(diào)用

2.3.3.2.?圖

讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)文章來源地址http://www.zghlxwxcb.cn/news/detail-760347.html

2.3.4.?隔離數(shù)據(jù)庫為你提供了共享數(shù)據(jù)庫所不具備的靈活性和隔離性

2.4.?使用schema

2.4.1.?僵化的預(yù)定義數(shù)據(jù)列和類型,以及它們演進(jìn)的重量級(jí)過程,會(huì)導(dǎo)致流行的無模式(schemaless)數(shù)據(jù)管理的出現(xiàn)

2.4.2.?無模式并不意味著“沒有模式”(數(shù)據(jù)將無法使用)

2.4.3.?不要將無模式的數(shù)據(jù)隱藏在已經(jīng)模式化的數(shù)據(jù)中

2.4.3.1.?隱藏?zé)o模式的數(shù)據(jù)是“自取滅亡”,你獲得了顯式schema的所有痛苦,卻沒有任何收益

2.4.4.?無模式數(shù)據(jù)有一種隱含的模式,可以在讀取時(shí)被提供或推斷出來

2.4.5.?采用無模式的方法會(huì)產(chǎn)生明顯的數(shù)據(jù)完整性和復(fù)雜性問題

2.4.6.?強(qiáng)類型的面向schema的方法降低了應(yīng)用程序的隱蔽性,因此也降低了其復(fù)雜性

2.4.7.?為你的數(shù)據(jù)定義明確的schema將使你的應(yīng)用程序保持穩(wěn)定,并使你的數(shù)據(jù)可用

2.4.7.1.?明確的schema會(huì)讓你在編寫數(shù)據(jù)時(shí)可以對其進(jìn)行合理性檢查

2.4.7.2.?使用顯式schema解析數(shù)據(jù)通常會(huì)更快捷

2.4.7.3.?架構(gòu)還可以幫助你檢測到前后不兼容的變化

2.4.8.?數(shù)據(jù)有時(shí)被描述為“一次寫入,多次讀取”,使用schema可以使讀取更容易

2.4.9.?schema自動(dòng)化遷移

2.4.9.1.?改變一個(gè)數(shù)據(jù)庫的schema是危險(xiǎn)的

2.4.9.2.?可以管理數(shù)據(jù)庫遷移的工具

2.4.9.2.1.?Liquibase
2.4.9.2.2.?Flyway
2.4.9.2.3.?Alembic
2.4.9.2.4.?GitHub的gh-ost
2.4.9.2.5.?Percona的pt-online-schema-change
2.4.9.2.6.?Skeema
2.4.9.2.7.?Square的Shift

2.4.9.3.?大多數(shù)遷移工具都支持回滾,也就是可以撤銷遷移產(chǎn)生的變化

2.4.10.?保持schema的兼容性

2.4.10.1.?寫入磁盤的數(shù)據(jù)也有和API一樣的兼容性問題

2.4.10.2.?變更數(shù)據(jù)捕獲(change data capture,CDC)是一種基于事件的架構(gòu),將插入、更新和刪除操作轉(zhuǎn)換為下游使用者的消息

2.4.10.3.?數(shù)據(jù)倉庫管道和下游用戶必須受到保護(hù),以免遭受schema變更帶來的不良影響

2.4.10.4.?兼容性檢查應(yīng)該盡早地進(jìn)行,最好是在提交代碼時(shí)通過檢查數(shù)據(jù)庫DDL語句來進(jìn)行

2.4.10.5.?獨(dú)立的數(shù)據(jù)產(chǎn)品,可能只是數(shù)據(jù)庫視圖,允許團(tuán)隊(duì)與數(shù)據(jù)的消費(fèi)者保持兼容,而不必凍結(jié)其內(nèi)部的數(shù)據(jù)庫schema

到了這里,關(guān)于讀程序員的README筆記17_構(gòu)建可演進(jìn)的架構(gòu)(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 讀程序員的README筆記08_依賴管理

    讀程序員的README筆記08_依賴管理

    2.6.1.1.?版本不應(yīng)該被重復(fù)使用 2.6.1.2.?永遠(yuǎn)不要在現(xiàn)有版本下重新發(fā)布更改的代碼 2.6.2.1.?版本應(yīng)該幫助人們和工具對版本的優(yōu)先順序進(jìn)行推斷 2.6.3.1.?版本信息區(qū)分了預(yù)先發(fā)布的代碼和已發(fā)布的代碼,將構(gòu)建流水號(hào)與構(gòu)件相關(guān)聯(lián),并設(shè)置了穩(wěn)定性和兼容性的合理預(yù)期 6.2.5.1

    2024年02月05日
    瀏覽(53)
  • 讀程序員的README筆記09_代碼評審

    讀程序員的README筆記09_代碼評審

    4.4.1.1.?walk-through 4.4.1.2.?一種面對面的會(huì)議,開發(fā)人員在會(huì)上共享他們的屏幕,并引導(dǎo)隊(duì)友了解正在進(jìn)行的修改內(nèi)容 4.4.1.3.?是啟發(fā)想法和讓你的團(tuán)隊(duì)適應(yīng)代碼修改的好方法 5.1.2.1.?如果緊急度不明確,請?jiān)儐柼峤徽?5.4.4.1.?SQL注入攻擊、敏感數(shù)據(jù)泄露和跨站腳本攻擊的漏洞

    2024年02月05日
    瀏覽(47)
  • 讀程序員的README筆記10_軟件交付(上)

    讀程序員的README筆記10_軟件交付(上)

    3.1.1.1.?打包一個(gè)構(gòu)件稱為發(fā)布 3.1.3.1.?部署的軟件還不能被用戶訪問 3.1.3.1.1.?只是被安裝了而已 3.1.3.2.?一旦部署,軟件就會(huì)通過將用戶轉(zhuǎn)移到新的軟件上而進(jìn)行展開 3.1.4.1.?交付過程是更大的產(chǎn)品開發(fā)周期中的一部分 6.10.2.1.?每季度或每年發(fā)布一次

    2024年02月04日
    瀏覽(21)
  • 讀程序員的README筆記04_防御式編程

    讀程序員的README筆記04_防御式編程

    1.2.1.1.?切記讓你的代碼安全而有彈性 1.2.1.2.?編寫擁有良好防御性的代碼是一種對那些運(yùn)行你的代碼的人(包括你自己?。└挥型樾牡谋憩F(xiàn) 1.2.1.3.?防御性的代碼較少發(fā)生故障,就算它發(fā)生故障,也更有可能恢復(fù) 1.2.1.4.?安全的代碼利用編譯時(shí)的校驗(yàn)來避免運(yùn)行時(shí)的故障,使

    2024年02月05日
    瀏覽(20)
  • 讀程序員的README筆記01_學(xué)習(xí)如何學(xué)習(xí)

    讀程序員的README筆記01_學(xué)習(xí)如何學(xué)習(xí)

    6.3.2.1.?錯(cuò)誤是不可避免的。成為一名軟件工程師的路途艱辛,我們有時(shí)會(huì)失敗 6.5.4.1.?代碼從不說謊。注釋有時(shí)卻會(huì)。 6.5.4.1.1.?Code never lies. Comments sometimes do 6.5.4.1.2.?去讀源代碼,因?yàn)樗⒉豢偸桥c設(shè)計(jì)文檔相吻合 6.5.4.1.3.?不要只讀你自己的代碼庫,還要去閱讀高質(zhì)量的開

    2024年02月05日
    瀏覽(24)
  • 讀程序員的README筆記11_軟件交付(下)

    讀程序員的README筆記11_軟件交付(下)

    1.3.5.1.?通過持續(xù)交付,人力被完全從部署環(huán)節(jié)中移除 1.3.5.2.?打包、測試、發(fā)布、部署,甚至展開環(huán)節(jié)都是自動(dòng)化的 1.3.6.1.?Puppet、Salt、Ansible和Terraform等現(xiàn)成的解決方案可以與現(xiàn)有的工具集成,并且它們是專門為了自動(dòng)化部署而設(shè)計(jì)的 1.4.4.1.?只需再次指向舊的版本 1.5.1.1.?

    2024年02月04日
    瀏覽(23)
  • 讀程序員的README筆記13_技術(shù)設(shè)計(jì)流程(上)

    讀程序員的README筆記13_技術(shù)設(shè)計(jì)流程(上)

    3.4.1.1.?外界干擾是深度工作的“殺手” 3.4.1.2.?避免所有的交流方式 3.4.1.2.1.?關(guān)閉聊天 3.4.1.2.2.?關(guān)閉電子郵件 3.4.1.2.3.?禁用電話通知 3.4.1.2.4.?換個(gè)地方坐 3.4.2.1.?有形產(chǎn)出是一份設(shè)計(jì)文檔 4.2.3.1.?如果有一個(gè)以上的問題,詢問哪些問題是最優(yōu)先的 4.3.7.1.?注意與外人交流時(shí)不

    2024年02月04日
    瀏覽(53)
  • 讀程序員的README筆記14_技術(shù)設(shè)計(jì)流程(下)

    讀程序員的README筆記14_技術(shù)設(shè)計(jì)流程(下)

    1.4.2.1.?該項(xiàng)目將需要至少一個(gè)月的工程時(shí)間 1.4.2.2.?變更將對軟件的擴(kuò)展和維護(hù)產(chǎn)生長期的影響 1.4.2.3.?變更將顯著影響其他團(tuán)隊(duì) 1.5.2.1.?設(shè)計(jì)文檔是一種工具,可以幫助你思考、獲得反饋、讓你的團(tuán)隊(duì)了解情況、培養(yǎng)新的工程師,并推動(dòng)項(xiàng)目規(guī)劃 1.5.5.1.?閱讀大量的設(shè)計(jì)文檔

    2024年02月04日
    瀏覽(20)
  • 讀程序員的README筆記05_日志、監(jiān)控與配置

    讀程序員的README筆記05_日志、監(jiān)控與配置

    6.1.1.1.?測量的是某個(gè)事件發(fā)生的次數(shù) 6.1.1.2.?通過使用計(jì)數(shù)器獲得緩存命中數(shù)和請求總數(shù),你就可以計(jì)算出緩存命中率 6.1.2.1.?一個(gè)基于時(shí)間點(diǎn)的測量值 6.1.2.2.?既可以上升又可以下降 6.1.3.1.?根據(jù)事件的大小幅度分成不同的范圍 6.1.3.2.?每一個(gè)范圍都會(huì)有一個(gè)計(jì)數(shù)器,每當(dāng)某

    2024年02月05日
    瀏覽(50)
  • 讀程序員的README筆記18_職業(yè)生涯規(guī)劃

    讀程序員的README筆記18_職業(yè)生涯規(guī)劃

    3.1.5.1.?他們的工作職責(zé)之一是管理他們的團(tuán)隊(duì),而管理的一部分就是對你投入時(shí)間 3.1.5.2.?對管理者而言,反復(fù)取消一對一面談可以是一個(gè)有價(jià)值的信號(hào) 3.3.2.1.?每個(gè)目標(biāo)都附有3到5個(gè)關(guān)鍵結(jié)果,它們是標(biāo)志著目標(biāo)達(dá)成的具體指標(biāo) 3.3.2.2.?不要把關(guān)鍵結(jié)果變成待辦事項(xiàng)清單 3.

    2024年02月04日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包