成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Dubbo 高性能 RPC 框架實踐

開發 架構
Apache Dubbo 是一款微服務框架,為大規模微服務實踐提供高性能 RPC 通信、流量治理、可觀測性等解決方案,涵蓋 Java、Golang 等多種語言 SDK 實現。

?Dubbo 介紹

Dubbo 是什么?

圖片

介紹:Apache Dubbo 是一款微服務框架,為大規模微服務實踐提供高性能 RPC 通信、流量治理、可觀測性等解決方案,涵蓋 Java、Golang 等多種語言 SDK 實現。 

特征:RPC 通訊框架,服務注冊中心,支持原生云(Dubbo3.0) 

主流版本:2.7.x , 3.0 **SDK: **官方 SDK 支持開發語言:Java、Golang

使用廠家:阿里巴巴、餓了么、釘釘、工商銀行、小米等 

注:本文后續主要基于 2.7.x 版本展開。

Dubbo 和 Eureka 對比

對比

Dubbo

Eureka(Spring-Cloud-Netflix)

注冊中心

ZK

Eureka

CAP

CP

AP

容錯機制

支持

通過 Hytrix 支持

負載均衡

支持

通過 Ribbon 支持

服務注冊和發現協議

封裝 NettyClient 實現

使用 HttpClient

社區支持

Apache

不更新

總結:Dubbo 對比 Eureka 來說的話,其實一個打包的微服務中間件,并且定制化了 RPC 通訊 dubbo 協議對比 HTTP 協議來說性能上會有一定的提高。但是我們對于微服務本身來說應該是一個細粒度的,可以定制的組件對于 Eureka 來說這方面更強。

Dubbo 使用案例

下面是一個通過 dubbo 作為 RPC 通訊的一個例子,一般在生產中會使用 zk 或者 redis 等,作為服務注冊中心來保存服務信息。一個大致的交互圖如下:

圖片

三個角色

  • Zookeeper 作為一個服務注冊中心,管理和維護服務列表;
  • Provider 服務提供者,發布服務;
  • Consumer 服務消費者,通過 API stub 可以像調用本地方法一樣調用遠程的方法;

服務提供者

服務接口定義

public interface OrderService {
String createOrder(String request);
}

服務提供者實現

public class OrderServiceImpl implements OrderService {

@Override
public String createOrder(String request) {
return "create order success, request : " + request;
}
}

服務啟動類

public class RpcDubboProvidorApp {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:dubbo.xml"});
context.start();
System.in.read(); // 按任意鍵退出
}
}

配置文件

<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

<!-- 提供方應用信息,用于計算依賴關系 -->
<dubbo:application name="rpc-dubbo-provider"/>

<!-- 使用 zookeeper 注冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

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

<!-- 聲明需要暴露的服務接口 -->
<dubbo:service interface="io.zhengsh.rpc.api.OrderService" ref="orderService" />

<!-- 和本地bean一樣實現服務 -->
<bean id="orderService" class="io.zhengsh.rpc.provider.OrderServiceImpl" />

</beans>

服務消費者

服務配置

<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

<!-- 配置應用名稱 -->
<dubbo:application name="rpc-dubbo-consumer" />

<!-- 配置 zookeeper 注冊中心的位置 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />

<!-- 配置dubbo的通訊方式,即使用的協議及使用的端口 -->
<dubbo:protocol name="dubbo" port="20890" />

<!-- 生成遠程服務代理,可以和本地bean一樣使用 orderService -->
<dubbo:reference id="orderService" interface="io.zhengsh.rpc.api.OrderService" />

</beans>

服務調用方代碼

public class RpcDubboConsumerApp {
public static void main(String[] args) {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:dubbo.xml"});
context.start();
// 獲取遠程服務代理
OrderService demoService = (OrderService) context.getBean("orderService");
// 執行遠程方法
String hello = demoService.createOrder("iPhone 19");
// 顯示調用結果
System.out.println(hello);
}
}

運行一下:

  • 我們首先啟動RpcDubboProvidorApp
  • 然后啟動RpcDubboConsumerApp
  • 控制臺輸出如下:

圖片

你如果也能獲得如下的輸出表示實驗成功。恭喜。

Dubbo 監控

Dubbo Admin 安裝

  • 下載代碼:git clone https://github.com/apache/dubbo-admin.git
  • 在dubbo-admin-server/src/main/resources/application.properties中指定注冊中心地址

圖片

構建

mvn clean package -Dmaven.test.skip=true

啟動

  • mvn --projects dubbo-admin-server spring-boot:run 或者
  • cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.4.0.jar

訪問 http://localhost:8080

圖片

默認密碼是 root/root

Dubbo Admin 使用

找到自己注冊服務

圖片

模擬請求服務

點擊上一個頁面的 測試? 按鈕,進入如下頁面,測試服務接口,如下圖:

圖片

我傳遞參數,下面成功返回,可以在開發期間做一個簡單的測試。

服務提供者和服務消費者查詢如下圖所示。

圖片

雙擊服務列表中的服務即可進入。

參考文檔

https://dubbo.apache.org/zh/docsv2.7/user/quick-start/

https://github.com/apache/dubbo-admin/blob/develop/README_ZH.md

責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2024-07-02 10:40:35

2020-07-16 08:06:53

網關高性能

2020-10-13 18:09:22

開發框架開源

2014-03-19 14:34:06

JQuery高性能

2024-11-20 19:56:36

2022-01-07 06:12:08

RPC框架限流

2017-05-09 10:07:34

SpringbootDubboZooKeeper

2020-06-17 16:43:40

網絡IO框架

2011-12-28 15:26:16

Spring\Dubb

2023-10-31 18:52:29

網絡框架XDP技術

2018-01-12 14:37:34

Java代碼實踐

2019-05-21 09:40:47

Elasticsear高性能 API

2023-05-18 08:47:42

2015-08-13 09:58:09

HproseNode.js

2018-02-28 10:11:50

騰訊框架開源

2024-12-24 10:50:05

GinWeb開發

2019-07-31 14:36:46

Linux服務器框架

2024-09-25 16:10:05

2020-08-17 08:18:51

Java

2024-06-20 08:06:51

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色一级毛片免费看 | 日韩a视频 | 日韩视频在线免费观看 | 日韩爱爱网 | 中文视频在线 | 久久久久久亚洲精品 | 国产亚洲精品美女久久久久久久久久 | 日韩成人av在线 | 久久精品国产免费一区二区三区 | 在线欧美一区 | 97超在线视频 | 国产精品一区二区免费看 | 国产探花在线精品一区二区 | 一级片在线视频 | 久久精品国产精品青草 | 久草精品视频 | 久久国 | 亚洲三区视频 | 日韩视频一级 | 国产精品欧美一区喷水 | 日韩三 | 日本不卡一二三 | 日韩免费视频一区二区 | 日韩成人免费视频 | 毛片网站在线观看视频 | 99r在线| 亚洲一区二区三区免费在线观看 | 欧美一区二区在线观看 | 日日操操 | 韩国av影院 | 日韩精品成人一区二区三区视频 | 91麻豆精品国产91久久久资源速度 | 99亚洲综合 | 日韩成人精品一区 | 亚洲一区二区精品视频 | 自拍视频一区二区三区 | 激情三区| 欧美精品在线播放 | 性欧美xxxx| 国产精品三级久久久久久电影 | 国产三级日本三级 |