微服務架構快速指南html
SOAredis
Dubbospring
Spring Cloud數據庫
什麼是軟件架構?
軟件架構是一個包含各類組織的系統組織,這些組件包括 Web服務器, 應用服務器, 數據庫,存儲, 通信層), 它們彼此或和環境存在關係。網絡
什麼是微服務架構?
微服務是指開發一個單個 小型的但有業務功能的服務,每一個服務都有本身的處理和輕量通信機制,能夠部署在單個或多個服務器上。架構
微服務也指一種種鬆耦合的、有必定的有界上下文的面向服務架構。也就是說,若是每一個服務都要同時修改,那麼它們就不是微服務,由於它們緊耦合在一塊兒;若是你須要掌握一個服務太多的上下文場景使用條件,那麼它就是一個有上下文邊界的服務,這個定義來自DDD領域驅動設計。負載均衡
微服務架構的優缺點?框架
優勢分佈式
缺點
SOA是一個組件模型,它將應用程序的不一樣功能單元(稱爲服務)經過這些服務之間定義良好的接口和契約聯繫起來。面向服務架構,它能夠根據需求經過網絡對鬆散耦合的粗粒度應用組件進行分佈式部署、組合和使用。
soa基本架構圖
1.註冊中心: 保存服務提供方暴露的服務信息,常見的註冊中心有zookeeper eureka 也可用redis 默認eureka
2.服務提供方:提供服務者
3.服務消費方:當須要調用遠程服務接口時,必須在註冊中心發現服務找到服務提供者,從而進行遠程方法調
Dubbo是阿里開源的一個SOA服務治理解決方案,文檔豐富,在國內的使用度很是高。 dubbo
調用中間層變成了可選組件,消費者能夠直接訪問服務提供者。
服務信息被集中到Registry中,造成了服務治理的中心組件。
經過Monitor監控系統,能夠直觀地展現服務調用的統計信息。
Consumer能夠進行負載均衡、服務降級的選擇。
可是對於微服務架構而言,Dubbo也並非十全十美的:
Registry嚴重依賴第三方組件(zookeeper或者redis),當這些組件出現問題時,服務調用很快就會中斷。
DUBBO只支持RPC調用。使得服務提供方與調用方在代碼上產生了強依賴,服務提供者須要不斷將包含公共代碼的jar包打包出來供消費者使用。一旦打包出現問題,就會致使服務調用出錯。
最爲重要的是,DUBBO如今已經中止維護了,對於技術發展的新需求,須要由開發者自行拓展升級。這對於不少想要採用微服務架構的中小軟件組織,顯然是不太合適的。
與dubbo對比,spring cloud是藉助如下組件來實現的:
上圖來自於SpringCloud中文文檔 包括了spring cloud如今有的全部組件,以及每一個組件的做用。
後續會講解經常使用組件(例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線)在這裏先不作解釋。
微服務須要的功能 | Dubbo | SpringCloud |
服務註冊與發現 | Zookeeper | Eureka |
服務調用方式 | RPC | Restful API |
服務路由和過濾 | 有 | Zuul |
負載均衡 | 有 | Ribbon |
斷路器 | 有 | Hystrix |
分佈式配置 | 無 | Spring Cloud Config |
分佈式消息 | 無 | Spring Cloud Bus |
集羣選主 | 無 | Spring Cloud Cluster |
批量任務 | 無 | Spring Cloud Task |
服務跟蹤 | 無 | Sleuth&Zipkin |
...... | ...... | ...... |
文檔對比