《微服務 架構與實踐》王磊 摘要

  • 1、單塊架構及面臨的挑戰
單塊的挑戰
    維護成本增長
    持續交付週期長
    新人培養週期長
    技術選型成本高
    可擴展性差
 
  • 2、微服務架構綜述
2.1 什麼是微服務架構
1 觀點:
  1. 絕大多數微服務的成功案例,都是從總體架構(Monolith)開始的。而且因爲總體架構過於龐大,致使架構沒法繼續支撐。
  2. 絕大多數我所據說的系統,若是從一開始就使用微服務架構,最終都遇到了很嚴重的問題。
建議:
    並不該該從項目一開始就使用微服務架構,即使你可以保證你的應用足夠大,以致於使用微服務架構是值得的
直接上微服務,鮮有成功之例子。
2 微服務的描述
     微服務架構是一種架構模式,提倡將單一應用程序劃分紅一組小的服務,服務之間互相協調、配合,爲用戶提供最終價值。每一個服務運行在其獨立的進程中,服務與服務見採用輕量級的通訊機制互相溝通。每一個服務都圍繞着具體業務進行構建,而且可以被獨立的部署到生產環境、類生產環境等。另外,應儘可能避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據上下文,選擇合適的語言、工具對其進行構建。
3 多微纔好?
    原則:業務獨立性;團隊自主性(10人一下團隊)
    單一職責。
SRP The Single Responsibility Principle  單一責任原則
OCP The Open Closed Principle 開放封閉原則
LSP The Liskov Substitution Principle 里氏替換原則
DIP The Dependency Inversion Principle 依賴倒置原則
ISP The Interface Segregation Principle 接口分離原則
4 輕量級的通訊機制
5 獨立性
6 進程隔離
2.2 誕生背景
1 互聯網行業的快速發展
2 敏捷、精益、持續交付等方法論深刻人心
3 單塊架構的挑戰
4 容器虛擬化技術的成熟 Docker
2.4 微服務本質
    服務做爲組件。服務之間定義清晰、語言無關、平臺無關的接口。
    圍繞業務組織團隊。
    關注產品而非項目。
    技術多樣性。
    業務數據獨立。
    基礎設施自動化。DevOps
    演進式架構
2.5 不是銀彈!
    這裏列出缺點:
    分佈式系統的複雜度。性能、可靠性、異步、數據一致性、工具
    運維成本。配置、部署、監控與告警、日誌收集
    部署自動化。必須自動化
    DevOps與組織架構
    依賴測試
    依賴管理  
  • 3、實踐篇
3.1 任務拆分
    構建第一個hello world API
    代碼測試與靜態檢查
    Docker映像構建
    Docker映像部署
    持續集成與交付
    監控與告警
    日誌聚合
3.2 構建服務
    提早將開發、測試、部署、運維、監控的流水線打通。
    本書選擇了ruby做爲開發語言。
       
    單元測試框架。JUnit。不是全部的單元都要測試
    測試API。
    代碼靜態檢查。ide的check,或者firebug
3.3 Docker
    已是一項成熟且值得應用的技術。推薦。
    構建映像。構建、運行容器、發佈映像。注意自動化。
    部署映像。基礎設施自動化:分析配置文件、建立基礎設施、get Docker映像、運行
3.4 持續交付流水線
    本書代碼託管在github上,採用了snap-CI做爲持續交付工具。
    實際須要考慮代碼的託管方式,和局域網本的持續交付工具。
    備選:thoughworks GO、Jenkins
任務:
    1 提交。代碼編譯、靜態檢查、單元測試
    2 驗證。集成測試、用戶行爲測試、組件測試、性能測試。
    3 構建。
    4 發佈。    測試環境、    類生產環境、    生產環境
觸發                自動            手動              手動
數據來源        模擬            真實                真實
目的            驗證功能      演示                    真實的服務啊
3.5 日誌聚合
    Splunk
    LogStash
    
    初始的日誌方式。
    日誌種類:標準、文件、syslog等
3.6 監控與告警
    nagios系統監控。 it基礎設施監控系統。
3.7 功能迭代
1 服務描述文件
    服務描述
    維護者
    可用期
    運行環境。生產、測試
    開發。如何搭建、運行、調試
    測試
    構建。持續集成、描述、發佈
    部署
    運維。日誌、監控地址    
4、進階篇

4.1 持續交付
1 開發:獨立的代碼庫;服務說明文件;代碼全部權歸團隊;有效的版本管理;靜態檢查工具;易於本地運行
2 測試。mock和stub;接口測試。有效性
3 持續集成。
4 構建
5 部署。手動、腳本、基礎設施自動化(chef、puppet、ansible)、應用部署自動化(映像部署、容器部署)
4.2 輕量級通訊
1 同步和異步
2 RPC
3 REST
    資源、表述、狀態轉移、統一接口
4 HAL。
5 消息隊列ActiveMQ、rabbitMQ
6後臺任務處理系統
4.3 測試
相關文章
相關標籤/搜索