1.軟件架構的進化
- 什么是軟件架構:有關軟件整體結構與組件的抽象描述,用於指導大型軟件系統各個方面的設計。是在軟件內容,經過綜合各種因素的考量,權衡,選擇特定的技術,將系統划分成不同部分,並使用這些部分相互分工,彼此協作,為用戶提供需要的價值。
- 相關因素:業務需求,技術棧,成本,組織架構,可擴展性,可維護性。
- javaweb的進化之路:一層架構,MVC(ssh,ssm),dubbo
- 單體架構:功能,業務集中在一個發布包里,部署運行在同一個進程中。優勢(易於開發,易於測試,易於部署,易於水平伸縮),劣勢(代碼膨脹,難以維護,構建成本大,持續交付周期長,新人上周周期長,創新困難,可擴展性差)
2.什么是微服務
- 使用一套小服務來開發單個應用的方式,每個服務運行在獨立的進程里,一般采用輕量級的通訊機制互聯,並且他們可以通過自動化方式部署。
- 如何拆分最小服務單元(不是固定的量化,是一種設計思路)
- 微服務特征:單一職責,輕量級通訊,隔離性,業務數據獨立,技術多樣性。
- 微服務誕生背景:互聯網的快速發展,敏捷開發,精益方法,容器技術的成熟。
3.微服務架構圖
- 業務場景:登錄注冊,發送郵件或者短信,獲取課程列表
- 單體架構圖:

-
微服務架構圖:
4.微服務架構優勢,劣勢
- 優勢:獨立性,敏捷性,技術棧靈活,高效團隊。
- 劣勢:額外的工作,數據一致性,溝通成本。
5.微服務間如何通訊
- 通訊模式:

- 通訊協議:REST API,RPC(IO/線程調用模型,序列化方式,多語言支持,服務治理(dubbo,dubbox,thrift,motan,grpc)),MQ
- 流行的RPC框架對比
6.微服務發現
- 傳統服務“發現”

- 微服務發現(客戶端發現)
- 微服務發現(服務器端發現)
7.微服務部署,更新,擴容
-
服務編排:mesos,docker swarm,kubernetes


