分佈式、Dubbo/Zookeeper、Spring Boot/Cloudhtml
1、分佈式應用前端
在分佈式系統中,國內經常使用zookeeper+dubbo組合,spring
而Spring Boot推薦使用 全棧的Spring,Spring Boot+Spring Cloud。docker
分佈式系統:session
單一應用架構
當網站流量很小時,只需一個應用,將全部功能都部署在一塊兒,以減小部署節點和成
本。此時,用於簡化增刪改查工做量的數據訪問框架(ORM)是關鍵。
垂直應用架構
當訪問量逐漸增大,單一應用增長機器帶來的加速度愈來愈小,將應用拆成互不相干
的幾個應用,以提高效率。此時,用於加速前端頁面開發的Web框架(MVC)是關鍵。
分佈式服務架構
當垂直應用愈來愈多,應用之間交互不可避免,將核心業務抽取出來,做爲獨立的服
務,逐漸造成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,
用於提升業務複用及整合的分佈式服務框架(RPC)是關鍵。
流動計算架構
當服務愈來愈多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增長一個
調度中心基於訪問壓力實時管理集羣容量,提升集羣利用率。此時,用於提升機器利
用率的資源調度和治理中心(SOA)是關鍵。
2、Zookeeper和Dubbo架構
• ZooKeeper
ZooKeeper 是一個分佈式的,開放源碼的分佈式應用程序協調服務。它是
一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、
域名服務、分佈式同步、組服務等。
• Dubbo
Dubbo是Alibaba開源的分佈式服務框架,它最大的特色是按照分層的方
式來架構,使用這種方式可使各個層之間解耦合(或者最大限度地鬆耦
合)。從服務模型的角度來看,Dubbo採用的是一種很是簡單的模型,要
麼是提供方提供服務,要麼是消費方消費服務,因此基於這一點能夠抽象
出服務提供方(Provider)和服務消費方(Consumer)兩個角色。
一、安裝zookeeper做爲註冊中心負載均衡
具體參考:https://hub.docker.com/_/zookeeper框架
• 二、編寫服務提供者分佈式
1)引入dubbo和zkclient相關依賴ide
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.1.0</version> </dependency> <!--zookeeper的客戶端工具--> <!-- https://mvnrepository.com/artifact/com.101tec/zkclient --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.1.0</version> </dependency>
2)配置dubbo掃描包和註冊中心地址
3)使用service發佈服務
注意:Service是dubbo包的
package com.atguigu.ticket.service; import com.alibaba.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; @Component @Service// 將服務發佈出去 public class TicketServiceImpl implements TicketService { @Override public String getTick() { return "<厲害了,個人國!>"; } }
• 三、編寫服務消費者
1)引入dubbo和zkclient相關依賴
2)註冊中心地址
3)引用服務
建立同樣的接口
引用(@service是spring包的,引用採用@Reference註解):
• 四、整合dubbo com.alibaba.spring.boot dubbo-spring-boot-starter 2.0.0
3、Spring Boot和Spring Cloud
Spring Cloud
Spring Cloud是一個分佈式的總體解決方案。Spring Cloud 爲開發者提供了在分佈式系統(配
置管理,服務發現,熔斷,路由,微代理,控制總線,一次性token,全局瑣,leader選舉,分
布式session,集羣狀態)中快速構建的工具,使用Spring Cloud的開發者能夠快速的啓動服務
或構建應用、同時可以快速和雲平臺資源進行對接。
• SpringCloud分佈式開發五大經常使用組件
• 服務發現——Netflix Eureka
• 客服端負載均衡——Netflix Ribbon
• 斷路器——Netflix Hystrix
• 服務網關——Netflix Zuul
• 分佈式配置——Spring Cloud Config
• Spring Cloud 入門
– 一、建立provider – 二、建立consumer – 三、引入Spring Cloud – 四、引入Eureka註冊中心 – 五、引入Ribbon進行客戶端負載均衡
引入spring cloud
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
引入Eureka註冊中心
建立provider
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
建立consumer:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>