中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用dubbo+zookeeper+spring boot構建服務的方法詳解

發布時間:2020-10-25 10:00:38 來源:腳本之家 閱讀:180 作者:神牛步行3 欄目:編程語言

前言

  互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,Dubbo是一個分布式服務框架,在這種情況下誕生的。現在核心業務抽取出來,作為獨立的服務,使前端應用能更快速和穩定的響應。

  Dubbo是什么

  Dubbo是Alibaba開源的分布式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo采用的是一種非常簡單的模型,要么是提供方提供服務,要么是消費方消費服務,所以基于這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。關于注冊中心、協議支持、服務監控等內容

  Dubbo能做什么

  當網站變大后,不可避免的需要拆分應用進行服務化(微服務),以提高開發效率,調優性能,節省關鍵競爭資源等。
當服務越來越多時,服務的URL地址信息就會爆炸式增長,配置管理變得非常困難,F5硬件負載均衡器的單點壓力也越來越大。

  當進一步發展,服務間依賴關系變得錯蹤復雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關系。

  接著,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什么時候該加機器?等等……

在遇到這些問題時,都可以用Dubbo來解決。

  本次和大家分享的是dubbo框架應用的初略配置和zookeeper注冊中心的使用;說到注冊中心現在我使用過的只有兩種:zookeeper和Eureka,zk我結合dubbo來使用,而Eureka結合springcloud使用,因此后面將和大家分享一些關于微服務的一些篇章,希望對你有好的幫助。

  安裝注冊中心zookeeper

  dubbo框架之provider和consumer

  dubbo-admin部署

安裝注冊中心zookeeper

  首先,我們需要在網上搜索下zookeeper下載地址,我這里是linux系統,所以下載了zookeeper-3.3.6.tar.gz包,通過 tar -zxvf zookeeper-3.3.6.tar.gz 解壓出來,需要注意的是一般的包里面配置文件都是默認的sample版本,zookeeper默認配置文件名只zoo.cfg,為了不每次指定文件名來運行,因此需要我們自己在conf目錄下創建一個名稱為zoo.cfg的配置文件,文件內容可以從zoo_sample.cfg拷貝或者把這個文件重命名都行,內容如下 vim zoo.cfg :

# The number of milliseconds of each tick
tickTime=2000 #心跳頻率
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10 #限制連接
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper #數據存儲文件夾
# the port at which the clients will connect
clientPort=2081 #zookeeper對外的端口

  這里就不修改參數信息了,采用默認;簡單介紹下linux下怎么編輯文件內容的常用的幾個命令:

  vim zoo.cfg:查看文件內容

  insert:執行插入命令

  esc:取消命令,再接著按:q:退出,:wq:保存并退出

  當有了zoo.cfg后,我們只需要進入她的bin目錄里面查找zkServer.sh文件,通過執行: ./zkServer.sh start 命令啟動zookeeper注冊中心,正常啟動提示如:

使用dubbo+zookeeper+spring boot構建服務的方法詳解  

  通常情況是zookeeper作為注冊中心在單獨的一臺服務器上,而程序(這里指我本地)需要調用另外注冊中心需要檢查zookeeper開放的端口是否能通,我本地是window10因此可以不需要通過zookeeper客戶端去驗證端口,只需要通過 telnet ip 2081 就能檢測出是否端口開放;

dubbo框架之provider和consumer

  首先為了方便,我們需要定義一個統一的接口,該接口就是業務抽出來的公用接口,我們單獨對這種接口包裝成一個module,我這里是dubbo_api,我們在這個module中定義如下的接口:

 public interface UserService {
 
 List<MoUser> getUsers();
 }

  然后,創建一個provider模塊,這個模塊去依賴dubbo_api模塊,并且實現UserService接口,代碼如:

public class UserServiceImpl implements UserService {

 @Value("${server.port}")
 private int port;

 /**
 * @return
 */
 @Override
 public List<MoUser> getUsers() {

 List<MoUser> list = new ArrayList<>();
 for (int i = 0; i < 5; i++) {
  MoUser user = new MoUser();
  user.setUserName("shenniu" + i);
  user.setUserPwd("端口:" + port);
  list.add(user);
 }
 return list;
 }
}

  作為服務提供者,要使用dubbo框架就需要先引入dubbo,然后再做一些配置,首先我們需要在dubbo_provider模塊通過maven引入dubbo依賴,注冊中心用的zookeeper所以也需要通過maven引入相應的依賴:

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.4.8</version>
 </dependency>
 <dependency>
  <groupId>com.101tec</groupId>
  <artifactId>zkclient</artifactId>
  <version>0.3</version>
 </dependency>
 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>dubbo</artifactId>
  <version>2.5.3</version>
  <exclusions>
  <exclusion>
   <groupId>org.springframework</groupId>
   <artifactId>spring</artifactId>
  </exclusion>
  </exclusions>
 </dependency>
 <dependency>
  <groupId>com.example</groupId>
  <artifactId>dubbo_api</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 </dependency>

  完成依賴后,剩下的就是對dubbo的provider的配置了,創建resources/dubbo-conf/server.xml的配置文件,文件內容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://code.alibabatech.com/schema/dubbo
  http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

 <!-- 提供者名稱 -->
 <dubbo:application name="demo-provider" />

 <!-- zookeeper注冊中心的服務地址 -->
 <dubbo:registry protocol="zookeeper" address="192.168.168.168:2081" />

 <!-- 用dubbo協議在20880端口暴露服務,協議通信端口 -->
 <dubbo:protocol name="dubbo" port="20880" />

 <!-- 用戶服務接口 -->
 <dubbo:service interface="service.UserService" ref="userService" />

 <!-- 用戶服務接口實現 -->
 <bean id="userService" class="com.example.demo.service.UserServiceImpl"/>
</beans>

  在DubboProviderApplication入口增加資源導入 @ImportResource("classpath:dubbo-conf/*.xml") ,到這里我們的服務提供端就完成了,查看下啟動日志:

使用dubbo+zookeeper+spring boot構建服務的方法詳解  

  服務提供者啟動暫無異常,再來看調用方創建一個dubbo_consumer的moduel,同樣去引入dubbo_api公共接口的模塊依賴,然后創建一個UserController,并暴露一個get的user接口:

@RestController
public class UserController {
 @Autowired
 private UserService userService;
 @GetMapping("/users")
 public List<MoUser> getUsers(){
 return userService.getUsers();
 }
}

  這里的UserService是公共接口的注入;編碼完成后剩下的就是consumer端引入dubbo和zookeeper依賴了:

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.4.8</version>
 </dependency>
 <dependency>
  <groupId>com.101tec</groupId>
  <artifactId>zkclient</artifactId>
  <version>0.3</version>
 </dependency>
 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>dubbo</artifactId>
  <version>2.5.3</version>
  <exclusions>
  <exclusion>
   <groupId>org.springframework</groupId>
   <artifactId>spring</artifactId>
  </exclusion>
  </exclusions>
 </dependency>

  我們同樣創建名稱resources/dubbo-conf/client.xml的配置文件,并在application入口引入這個資源:

@ImportResource("classpath:dubbo-conf/*.xml")
@SpringBootApplication
public class DubboConsumerApplication {
 public static void main(String[] args) {
  SpringApplication.run(DubboConsumerApplication.class, args);
 }
}

  client.xml的配置內容如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://code.alibabatech.com/schema/dubbo
   http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 <!-- 服務名 -->
 <dubbo:application name="demo-consumer" />
 <!-- zookeeper注冊中心暴露服務地址 -->
 <dubbo:registry protocol="zookeeper" address="192.168.168.168:2081" />
 <!-- 用戶服務接口 -->
 <dubbo:reference id="userService" interface="service.UserService" />
</beans>

  這個時候一個簡單的服務提供者,服務調用者配置和編碼都完成了,3個module如下:

使用dubbo+zookeeper+spring boot構建服務的方法詳解  

  然后分別啟動provider,consumer;再通過consumer暴露的controller接口請求接口,我這里的地址是 http://localhost:8082/users :

使用dubbo+zookeeper+spring boot構建服務的方法詳解  

  效果是Consumer通過注入的UserService接口依賴調用getUsers()拿到了Provider返回的結果,也表示此次dubbo框架的簡單使用算成功了。

dubbo-admin部署

  作為一個流行的rpc框架dubbo有這一個開源的監控工具dubbo-admin,不得不說現在網上現成的dubbo-admin.war包要么現在下來不能用要么就是下載需要csdn積分,版本多種多樣有點坑啊,果斷去git拉源碼自己打包,git地址: https://github.com/apache/incubator-dubbo-ops ,拉下來后我們只需要關注dubbo-admin工程,其他的暫可忽略;打開項目后,我們需要改的地方只有如下截圖配置(也可以對打包后的配置文件修改):

使用dubbo+zookeeper+spring boot構建服務的方法詳解  

#zookeeper配置地址和端口
dubbo.registry.address=zookeeper://127.0.0.1:2081
#后臺登錄密碼
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

  執行打包后,能得到名稱:dubbo-admin-2.0.0.war包,然后放在tomcat中,再通過瀏覽器瀏覽,賬號和密碼:都是root;登錄后能看到我們之前的啟動的provider和consumer在里面,這就是dubbo-admin監控注冊中心服務的界面,能夠直接對這些服務做點擊操作,其他的不多說自行嘗試吧。 

git地址: https://github.com/shenniubuxing3    nuget發布包:https://www.nuget.org/profiles/shenniubuxing3

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

醴陵市| 和政县| 四子王旗| 德昌县| 资兴市| 鄂温| 宝兴县| 温泉县| 柘城县| 郸城县| 金湖县| 兰坪| 遂川县| 舟曲县| 唐山市| 鄂州市| 册亨县| 清原| 石屏县| 延庆县| 新巴尔虎左旗| 瓮安县| 治多县| 沧源| 盈江县| 玛沁县| 丹凤县| 定安县| 保定市| 泾川县| 阳山县| 岳西县| 民乐县| 长寿区| 和龙市| 天峻县| 彭泽县| 邯郸市| 蒙阴县| 和田市| 通辽市|