4月11號(hào)買的書洞难,5月11號(hào)開始寫讀后感和實(shí)踐。截止現(xiàn)在揭朝,差不多讀了有兩遍队贱。 整本書200頁不到色冀,比較薄。
第一遍是在高鐵上讀的柱嫌,我看書比較快锋恬,加之本身也就200頁不到,略過代碼還有一些API介紹的文字编丘,讀完整本書与学,也就花了六個(gè)小時(shí)不到。當(dāng)時(shí)就感覺這本書壓根不值65塊嘉抓,書上講的微服務(wù)概念索守、springboot、node.js抑片、zookeeper卵佛、docker、jenkins敞斋,這些東西都是網(wǎng)上隨便找篇博客就可以入門了截汪,而且網(wǎng)上寫的比書上更加通俗易懂。
第二遍基本是下班后在公司讀的植捎。讀的比較細(xì)衙解,不懂的地方會(huì)上網(wǎng)搜搜,也試著開始試著實(shí)踐鸥跟《迹可能因?yàn)槲覜]有真正的自己搭過一套微服務(wù)的框架有關(guān)系,第二遍整個(gè)過程下來医咨,跟第一遍的印象不一樣枫匾,反而收獲良多。隨著作者的文字我開始思考:怎么注冊(cè)服務(wù)拟淮、怎么發(fā)現(xiàn)服務(wù)干茉、怎么做健康檢查、怎么做網(wǎng)關(guān)很泊、怎么持續(xù)集成角虫。開始想書里是怎么做的,先實(shí)踐一遍委造,然后想有沒有更好的做法戳鹅。
總結(jié)一下自己想到的微服務(wù)框架需要做到的事情:
1、server端和client統(tǒng)一昏兆,以及如何生成.java文件或.cs文件枫虏。
這個(gè)問題歸根結(jié)底是一個(gè)溝通問題,如果是java跟java之間交流,其實(shí)不存在這個(gè)問題隶债, 直接提供.java文件即可腾它。但是,如果是java跟.net之間交流死讹,或者java跟php之間的交流瞒滴,那問題就比較坑。
可以用xsd或者pb來解決赞警,然后做一個(gè)根據(jù)xsd或者pb生成service和client代碼的工具妓忍。
2、服務(wù)注冊(cè)
java+zookeeper來實(shí)現(xiàn)服務(wù)的注冊(cè)
3仅颇、服務(wù)的發(fā)現(xiàn)(微服務(wù)網(wǎng)關(guān))
可以分為兩種单默,一個(gè)是前段,一個(gè)是后端忘瓦。
前端可以通過node.js+zookeeper做個(gè)服務(wù)發(fā)現(xiàn)和反向代理
后端可用java+zookeeper來進(jìn)行管理搁廓,提供一個(gè)java的客戶端,客戶端根據(jù)servicename來查詢服務(wù)地址耕皮, 算出一個(gè)地址后境蜕,直接將請(qǐng)求post過去。
這樣可以去中心化凌停,不再需要網(wǎng)關(guān)幫忙轉(zhuǎn)發(fā)請(qǐng)求粱年, 這個(gè)應(yīng)該也是ESB和為微服務(wù)的區(qū)別。
同時(shí)罚拟,可以將這個(gè)地址在客戶端做個(gè)緩存台诗,但是,服務(wù)地址發(fā)生變化時(shí)赐俗,客戶端的地址也需要跟著變化拉队。
4、服務(wù)的封裝與發(fā)布
gitlab代碼管理阻逮。
jenkins跑自動(dòng)化測試case粱快,跑sonar,生成jar包叔扼。
jenkins+docker部署到生產(chǎn)事哭。
關(guān)于微服務(wù)網(wǎng)關(guān),除了最重要的服務(wù)發(fā)現(xiàn)之外瓜富,我們還需要做以下內(nèi)容:
1鳍咱、安全認(rèn)證
2、性能監(jiān)控
3与柑、日志分析
4流炕、請(qǐng)求分片
5澎现、靜態(tài)響應(yīng)
完成主要的1仅胞、2每辟、3、4點(diǎn)之后干旧,我們將一一的來考慮如果做渠欺。