業界大牛馬丁.福勒(martin fowler) 這樣描述微服務:
****:
微服務:
強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題/提供落地對應服務的乙個服務應用,
狹意的看,可以看作eclipse裡面的乙個個微服務工程/或者module
微服務化的核心就是將傳統的一站式應用,根據業務拆分成乙個乙個的服務,徹底地去耦合,
每乙個微服務提供單個業務功能的服務,乙個服務做一件事,
從技術角度看就是一種小而獨立的處理過程,類似程序概念,能夠自行單獨啟動或銷毀,擁有自己獨立的資料庫。
微服務條目落地技術備註服務開發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等
服務部署docker、openstack、kubernetes等
資料流操作開發包springcloud stream(封裝與redis,rabbit、kafka等傳送接收訊息)事件訊息匯流排spring cloud bus......
springcloud,基於springboot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務閘道器,負載均衡,熔斷器等元件,除了基於netflix的開源元件做高度抽象封裝之外,還有一些選型中立的開源元件。
springcloud利用springboot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,springcloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微**、事件匯流排、全域性鎖、決策競選、分布式會話等等,它們都可以用springboot的開發風格做到一鍵啟動和部署。
springcloud=分布式微服務架構下的一站式解決方案,
是各個微服務架構落地技術的集合體,俗稱微服務全家桶。
springboot專注於快速方便的開發單個個體微服務。
springcloud是關注全域性的微服務協調整理治理框架,它將springboot開發的乙個個單體微服務整合並管理起來,
為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微**、事件匯流排、全域性鎖、決策競選、分布式會話等等整合服務
springboot可以離開springcloud獨立使用開發專案,但是springcloud離不開springboot,屬於依賴的關係.
springboot專注於快速、方便的開發單個微服務個體,springcloud關注全域性的服務治理框架。
最大區別: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原始碼+周邊的一整套解決方案,並不是每乙個公司都有阿里的大牛+真實的線上生產環境測試過。
部分社群:
Springcloud元件介紹
springcloud是基於springboot基礎之上開發的微服務框架,springcloud是一套目前非常完整的微服務解決方案框架,其內容包含服務治理 註冊中心 配置管理 斷路器 智慧型路由 微 控制匯流排 全域性鎖 分布式會話等。springcloud包含眾多的子專案 eureka 服務治理 ...
springCloud元件介紹
1.eureka 負責服務的註冊與發現 主要分為eurekaserver 服務端 和eurekaclient 客戶端 工作原理 在啟動應用之後,eureka客戶端會向服務端註冊自己的服務,同時服務端的資訊會快取到本地,客戶端會向服務端週期性的心跳互動更新服務資訊。2.ribbon主要做負載均衡的作用...
Spring Cloud體系介紹
上圖只是spring cloud體系的一部分,spring cloud共整合了19個子專案,裡面都包含乙個或者多個第三方的元件或者框架!spring cloud 工具框架 1 spring cloud config 配置中心,利用git集中管理程式的配置。當然這個數量還在一直增加.微服務是一種架構的...