“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

前言:

現在IT界跳槽已成常態,跳槽,可能有以下原因:

  1. 技術達到瓶頸,無法在此公司有好的提升,前幾年我感覺基本不會出現,至少我現在沒出現。
  2. 實力與薪資不匹配。
  3. 和同事 領導不和,如果你在幾家公司都這樣,要自我檢討一下是不是自己的問題。

僅個人觀點,其他諸如地域 情感 興趣等個人原因不做討論。

這也導致很多企業在用人時會比較在意員工的穩定性一般外包公司都會比較忙,相對來說,成長應該是比較快的,而你的工作性質偏業務,那麼你要想清楚一個問題,以後你的發展軌跡是怎樣的?是在技術方向越走越遠呢,還是在管理方向發展呢?

一、 微服務架構專題(思維導圖)

“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

二、微服務是幹什麼的

我對於微服務最大的體會就是:對於雲平臺來說,如果元數據驅動的平臺組件是骨骼,那麼微服務和觸發器就是串聯骨骼的經絡和血脈沒有經絡和血脈,一堆組件僅僅是靜態的,不能變化,沒有反饋,更何談交互。而一個PaaS平臺可以孵化無數個SaaS應用,每個應用都需要使用一套小服務來開發,而爲了防止應用搭建複雜化和避免後期難以維護,所以每個服務運行在自己的進程中,並使用輕量級機制通信,通常是HTTP AP(Rest的方式,這就是爲什麼我能看到那些標籤的存在)。好處體現在以下方面:

  • 這些服務基於業務能力構建,並能夠通過自動化部署機制來獨立部署(體現在平臺就是微服務站點部署和獨立微服務站點部署)
  • 這些服務可以使用不同的編程語言實現(只要實現結果,無所謂編程語言,這是我認爲現在平臺沒有充分使用到微服務的地方,也可能是我平時使用其它語言的業務場景較少)
  • 這些服務可以使用不同數據存儲技術(“非結構化數據和結構化數據都可以按需存儲”)
  • 這些服務可以保持最低限度的集中式管理(這個厲害了,相當於接口不僅可以在一個項目裏複用,甚至在不同項目間複用)

官方有個2pizza理論很有趣: 微 狹義來講就是體積小、著名的"2 pizza 團隊"很好的詮釋了這一解釋(2 pizza 團隊最早是亞馬遜 CEO Bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要2個披薩就夠了 )。 而所謂服務,一定要區別於系統,服務一個或者一組相對較小且獨立的功能單元,是用戶可以感知最小功能集。

三、微服務的特性

  • 每個微服務可獨立運行在自己的進程裏,一系列獨立運行的微服務共同構建起了整個系統
  • 每個服務爲獨立的業務開發,一個微服務一般完成某個特定的功能,比如:訂單管理,用戶管理等(我用於圖書管理系統和工單中心)
  • 微服務之間通過一些輕量級的通信機制進行通信,例如通過REST API或者RPC的方式進行調用(這就是Rest標籤的由來吧,是一種通信機制)。

四、微服務的特點

  • 易於開發和維護。由於微服務單個模塊就相當於一個項目,開發這個模塊我們就只需關心這個模塊的邏輯即可,代碼量和邏輯複雜度都會降低,從而易於開發和維護。(部署獨立mrest站點,啓動迅速,代碼量小)
  • 啓動較快,這是相對單個微服務來講的,相比於啓動單體架構的整個項目,啓動某個模塊的服務速度明顯是要快很多的。(回收應用程序池即可,不到1分鐘搞定)
  • 局部修改容易部署,在開發中發現了一個問題,如果是單體架構的話,就需要重新發布並啓動整個項目,非常耗時間,但是微服務則不同,哪個模塊出現了bug只需要解決那個模塊的bug就可以了,解決完bug之後,只需要重啓這個模塊的服務即可,部署相對簡單,不必重啓整個項目從而大大節約時間。(有了bug直接hotfix這部分的ESB的interface)
  • 技術棧不受限,比如訂單微服務和電影微服務原來都是用java寫的,現在我們想把電影微服務改成nodeJs技術,這是完全可以的,而且由於所關注的只是電影的邏輯而已,因此技術更換的成本也就會少很多。(雖然目前還沒有接觸到多語言技術擴展,但感覺這個很強)
  • 按需伸縮,單體架構在想擴展某個模塊的性能時不得不考慮到其它模塊的性能會不會受影響,對於微服務來講,完全不是問題,電影模塊通過什麼方式來提升性能不必考慮其它模塊的情況。

五、微服務(Microservice)架構快速指南

1.微服務技術棧有哪些?

“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

2.微服務架構的缺點是什麼?

  • 微服務架構可能帶來過多的操作。
  • 需要DevOps技巧
  • 可能雙倍的努力。
  • 分佈式系統可能複雜難以管理。
  • 因爲分佈部署跟蹤問題難。
  • 當服務數量增加,管理複雜性增加。

3.微服務適合哪種情況?

當你需要支持桌面 web 移動 智能電視 可穿戴時都是可以的,甚至將來你可能不知道但需要支持的某種環境。

4.哪個公司或產品使用微服務架構?

大部分大型網站系統如Twitter, Netflix, Amazon 和 eBay都已經從傳統整體型架構monolithic architecture遷移到微服務架構

5.微服務之間是如何獨立通訊的?

這依賴需求,通過使用HTTP/REST,數據格式使用JSON 或 Protobuf(Binary protocol),通訊協議是自由的。

6.爲什麼現在每個人都在談論微服務?

自從SOA面試15年來,隨着RESTful web服務和JSON數據交換格式流行,簡單快速建立一個可連接的服務已經越來越方便了。

六、dubbo應用及源碼解讀面試題

1. Dubbo telnet 命令能做什麼?
2. Dubbo必須依賴的包有哪些?
3. Dubbo的管理控制檯能做什麼?
4. 說說 Dubbo 服務暴露的過程。
5. Dubbo 和 Dubbox 有什麼區別?
6. 你還了解別的分佈式框架嗎?
7. Dubbo 能集成 Spring Boot 嗎?
8. 在使用過程中都遇到了些什麼問題?
9. 你讀過 Dubbo 的源碼嗎?
10. 你覺得用 Dubbo 好還是 Spring Cloud 好?

七、springboot面試題

1. 如何重新加載Spring Boot上的更改,而無需重新啓動服務器?
2. Spring Boot中的監視器是什麼?
3. 如何在Spring Boot中禁用Actuator端點安全性?
4. 如何在自定義端口上運行Spring Boot應用程序?
5. 如何實現Spring Boot應用程序的安全性?
6. 如何集成Spring Boot和ActiveMQ?
7. 如何使用Spring Boot實現分頁和排序?
8. 什麼是Swagger?你用Spring Boot實現了它嗎?
9. 如何使用Spring Boot實現異常處理?
10. 您使用了哪些starter maven依賴項?

八、docker虛擬化技術面試題

1. 如何批量刪除或者停止運行的容器?
2. 如何查看鏡像支持的環境變量?
3. 本地的鏡像文件都存放在哪裏
4. 構建Docker鏡像應該遵循哪些原則?
5. 容器退出後,通過docker ps 命令查看不到,數據會丟失麼?
6. 如何臨時退出一個正在交互的容器的終端,而不終止它?
7. 很多應用容器都是默認後臺運行的,怎麼查看它們的輸出和日誌信息?
8. 使用docker port 命令映射容器的端口時,系統報錯Error: No public port ‘80’ published for …,是什麼意思?
9. 可以在一個容器中同時運行多個應用進程嗎?
10. 如何控制容器佔用系統資源(CPU,內存)的份額?

九、springcloud應用及源碼解讀面試題

1. springcloud如何實現服務的註冊和發現
2. SpringCloud和Dubbo有什麼區別?
3. springcloud斷路器的作用
4. Spring Cloud 有了解多少?
5. 什麼是Spring Cloud Bus?我們需要它嗎?
6. 使用Spring Cloud有什麼優勢?
7. springcloud你是什麼?

總結

上面提到的面試題我這邊都整理成文檔放在我新開通的公衆號【風平浪靜如碼】裏,海量Java相關文章,學習資料都會在裏面更新,整理的資料也會放在裏面。

覺得寫的還不錯的就點個贊,加個關注唄!點關注,不迷路,持續更新!!!

“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

“災難無情人有情”:備戰金三銀四之微服務架構問題!(含解析)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章