1、什麼是微服務架構ios
微服務架構是一種架構模式,它提倡講單一應用程序劃分爲一組小的服務,服務之間互相協調、互相配合,爲用戶提供最終價值。每一個服務運行在單獨的進程當中,服務與服務之間採用輕量級的通訊機制互相協做(一般是基於HTTP協議的RESTful API)。每一個服務都圍繞着具體業務進行構建,而且可以被獨立的部署到生產環境、類生產環境等。另外,應當儘可能避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。數據庫
2、微服務的優缺點架構
優勢app
- 每一個服務足夠內聚,足夠小,代碼容易理解,這樣能聚焦一個指定的業務功能或業務需求
- 開發簡單、開發效率高,一個服務只幹一件事
- 微服務可以被小團隊單獨開發,這個小團隊是2到5人的開發人員
- 微服務是鬆耦合的,是有功能意義的服務,不管在開發階段仍是部署階段都是獨立的
- 微服務能使用不一樣的語言進行開發
- 易於和第三方集成,微服務容許容易且靈活的方式集成自動部署,經過持續集成工具如Jenkins,Hudson,bamboo.
- 微服務只是業務邏輯的代碼,不會和HTML,CSS或其它界面組件混合。
- 每一個微服務都有本身的存儲能力,能夠有本身的數據庫,也能夠有統一的數據庫
缺點負載均衡
- 開發人員要處理分佈式系統的複雜性
- 多服務運維難度,隨着服務的增長,運維的壓力也在增大
- 系統部署依賴
- 服務間通訊成本
- 數據一致性
- 系統集成測試
- 性能監控
3、微服務的技術棧框架
微服務條目 落地技術運維
服務開發 Springboot、Spring、SpringMVC分佈式
服務配置與管理 Netflix公司的Archaius、阿里的Diamond等微服務
服務註冊與發現 Eureka、Consul、Zookeeper等工具
服務調用 Rest、RPC、gRPC
服務熔斷器 Hystrix、Envoy等
負載均衡 Ribbon、Nginx等
服務接口調用(客戶端調用服務的簡化工具)Feign等
消息隊列 Kafka、RabbitMQ、ActiveMQ等
服務配置中心管理 SpringCloudConfig、Chef等
服務路由(API網關) Zuul等
服務監控 Zabbix、Nagios、Metrics、Spectator等
全鏈路追蹤 Zipkin,Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據流操做開發包 SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)
事件消息總線 Spring Cloud Bus
4、SpringCloud技術架構
5、SpringCloud和SpringBoot是什麼關係?
SpringBoot專一於快速方便的開發單個個體微服務。
SpringCloud是關注全局的微服務協調治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等集成服務。
SpringBoot能夠離開SpringCloud獨立使用開發項目,可是SpringCloud離不開SpringBoot,屬於依賴關係。
最大區別:SpringCloud拋棄了Dubbo的RPC通訊,採用的是基於HTTP的REST方式。 嚴格來講,這兩種方式各有優劣。雖然從必定程度上來講,後者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。並且REST相比RPC更爲靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。 品牌機與組裝機的區別 很明顯,Spring Cloud的功能比DUBBO更增強大,涵蓋面更廣,並且做爲Spring的拳頭項目,它也可以與Spring Framework、Spring Boot、Spring Data、Spring Batch等其餘Spring項目完美融合,這些對於微服務而言是相當重要的。使用Dubbo構建的微服務架構就像組裝電腦,各環節咱們的選擇自由度很高,可是最終結果頗有可能由於一條內存質量不行就點不亮了,老是讓人不怎麼放心,可是若是你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,作了大量的兼容性測試,保證了機器擁有更高的穩定性,可是若是要在使用非原裝組件外的東西,就須要對其基礎有足夠的瞭解。 社區支持與更新力度 最爲重要的是,DUBBO中止了5年左右的更新,雖然2017.7重啓了。對於技術發展的新需求,須要由開發者自行拓展升級(好比噹噹網弄出了DubboX),這對於不少想要採用微服務架構的中小軟件組織,顯然是不太合適的,中小公司沒有這麼強大的技術能力去修改Dubbo源碼+周邊的一整套解決方案,並非每個公司都有阿里的大牛+真實的線上生產環境測試過。