溫馨提示×

溫馨提示×

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

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

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

發(fā)布時間:2021-11-12 17:51:21 來源:億速云 閱讀:140 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)”吧!

一、先來一張圖

說起 Dubbo,相信大家都不會陌生!阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架,可以使得應(yīng)用可通過高性能的 RPC  實(shí)現(xiàn)服務(wù)的輸出和輸入功能,同時可以和 Spring 框架無縫集成。

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

Dubbo 架構(gòu)圖

節(jié)點(diǎn)角色說明:

  • Provider:暴露服務(wù)的服務(wù)提供方

  • Consumer:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方

  • Registry:服務(wù)注冊與發(fā)現(xiàn)的注冊中心

  • Monitor:統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間的監(jiān)控中心

  • Container:服務(wù)運(yùn)行容器

二、實(shí)現(xiàn)思路

今天,我們以一個用戶選擇商品下訂單這個流程,將其拆分成3個業(yè)務(wù)服務(wù):用戶中心、商品中心、訂單中心,使用 Springboot + Dubbo  來實(shí)現(xiàn)一個小 Demo!

服務(wù)交互流程如下:

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

本文主要是介紹 Springboot 與 Dubbo  的框架整合以及開發(fā)實(shí)踐,而真實(shí)的業(yè)務(wù)服務(wù)拆分是一個非常復(fù)雜的過程,比我們介紹的這個要復(fù)雜的多,上文提到的三個服務(wù)只是為了項(xiàng)目演示,不必過于糾結(jié)為什么要這樣拆分!

好了,廢話也不多說了,下面我們開擼!

  • 1.在虛擬機(jī)創(chuàng)建 4 臺 centos7,任意選擇一臺安裝 zookeeper

  • 2.構(gòu)建微服務(wù)項(xiàng)目并編寫代碼

  • 3.在 centos7 上部署微服務(wù)

  • 4.遠(yuǎn)程服務(wù)調(diào)用測試

三、zookeeper安裝

在使用 Dubbo 之前,我們需要一個注冊中心,目前 Dubbo 可以選擇的注冊中心有 zookeeper、Nacos  等,一般建議使用 zookeeper!

首先在安裝 Zookeeper 之前,需要安裝并配置好 JDK,本機(jī)采用的是Oracle Java8 SE。

  • 安裝JDK(已經(jīng)安裝可以忽略)

yum -y install java-1.8.0-openjdk
  • 查看java安裝情況

java -version

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

  • JDK安裝完成之后,下載安裝Zookeeper

#創(chuàng)建一個zookeeper文件夾 cd /usr mkdir zookeeper  #下載zookeeper-3.4.14版本 wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz  #解壓 tar -zxvf zookeeper-3.4.14.tar.gz
  • 創(chuàng)建數(shù)據(jù)、日志目錄

#創(chuàng)建數(shù)據(jù)和日志存放目錄 cd /usr/zookeeper/ mkdir data mkdir log  #把conf下的zoo_sample.cfg備份一份,然后重命名為zoo.cfg cd conf/ cp zoo_sample.cfg zoo.cfg
  • 配置zookeeper

#編輯zoo.cfg文件 vim zoo.cfg

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

  • 啟動Zookeeper

#進(jìn)入Zookeeper的bin目錄 cd zookeeper/zookeeper-3.4.14/bin  #啟動Zookeeper ./zkServer.sh start  #查詢Zookeeper狀態(tài) ./zkServer.sh status  #關(guān)閉Zookeeper狀態(tài) ./zkServer.sh stop

出現(xiàn)如下信息,表示啟動成功!

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

四、項(xiàng)目介紹

  • springboot版本:2.1.1.RELEASE

  • zookeeper版本:3.4.14

  • dubbo版本:2.7.3

  • mybtais-plus版本:3.0.6

  • 數(shù)據(jù)庫:mysql-8

  • 構(gòu)建工具:maven

  • 服務(wù)模塊:用戶中心、商品中心、訂單中心

五、代碼實(shí)踐

5.1、初始化數(shù)據(jù)庫

首先在 mysql  客戶端,創(chuàng)建3個數(shù)據(jù)庫,分別是:dianshang-user、dianshang-platform、dianshang-business。

  • 在 dianshang-user 數(shù)據(jù)庫中,創(chuàng)建用戶表 tb_user,并初始化數(shù)據(jù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

  • 在 dianshang-platform 數(shù)據(jù)庫中,創(chuàng)建商品表 tb_product,并初始化數(shù)據(jù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

  • 在 dianshang-platform 數(shù)據(jù)庫中,創(chuàng)建訂單表 tb_order、訂單詳情表 tb_order_detail

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

5.2、創(chuàng)建工程

數(shù)據(jù)庫表設(shè)計完成之后,在 IDEA 下創(chuàng)建一個名稱為dianshang的Springboot工程。

最終的目錄如下圖:

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

目錄結(jié)構(gòu)說明:

  • dianshang-common:主要存放一些公共工具庫,所有的服務(wù)都可以依賴使用

  • dianshang-business:訂單中心,其中api模塊主要是提供dubbo服務(wù)暴露接口,provider模塊是一個springboot項(xiàng)目,提供服務(wù)處理操作

  • dianshang-user:用戶中心,其中api模塊和provider模塊,設(shè)計與之類似

  • dianshang-platform:商品中心,其中api模塊和provider模塊,設(shè)計與之類似

在父類pom文件中加入dubbo和zookeeper客戶端,所有依賴的項(xiàng)目都可以使用。

<!-- lombok --> <dependency>     <groupId>org.projectlombok</groupId>     <artifactId>lombok</artifactId>     <version>1.18.4</version>     <scope>provided</scope> </dependency>  <!-- Dubbo Spring Boot Starter --> <dependency>     <groupId>org.apache.dubbo</groupId>     <artifactId>dubbo-spring-boot-starter</artifactId>     <version>2.7.3</version> </dependency> <!-- 因?yàn)槭褂玫氖?nbsp;zookeeper 作為注冊中心,所以要添加 zookeeper 依賴 --> <dependency>     <groupId>org.apache.zookeeper</groupId>     <artifactId>zookeeper</artifactId>     <version>3.4.13</version>     <exclusions>         <exclusion>             <groupId>org.slf4j</groupId>             <artifactId>slf4j-api</artifactId>         </exclusion>         <exclusion>             <groupId>org.slf4j</groupId>             <artifactId>slf4j-log4j12</artifactId>         </exclusion>         <exclusion>             <groupId>log4j</groupId>             <artifactId>log4j</artifactId>         </exclusion>     </exclusions> </dependency> <!--使用curator 作為zookeeper客戶端--> <dependency>     <groupId>org.apache.curator</groupId>     <artifactId>curator-framework</artifactId>     <version>4.2.0</version> </dependency> <dependency>     <groupId>org.apache.curator</groupId>     <artifactId>curator-recipes</artifactId>     <version>4.2.0</version> </dependency>

溫馨提示:小編在搭建環(huán)境的時候,發(fā)現(xiàn)一個坑,工程中依賴的zookeeper版本與服務(wù)器的版本,需要盡量一致,例如,本例中zookeeper服務(wù)器的版本是3.4.14,那么在依賴zookeeper文件庫的時候,也盡量保持一致,如果依賴3.5.x版本的zookeeper,項(xiàng)目在啟動的時候會各種妖魔鬼怪的報錯!

5.3、創(chuàng)建用戶中心項(xiàng)目

在 IDEA 中,創(chuàng)建dianshang-user子模塊,并依賴dianshang-common模塊

<dependencies>     <dependency>         <groupId>org.project.demo</groupId>         <artifactId>dianshang-common</artifactId>         <version>1.0.0</version>     </dependency> </dependencies>

同時,創(chuàng)建dianshang-user-provider和dianshang-user-api模塊。

  • dianshang-user-api:主要對其他服務(wù)提供接口暴露

  • dianshang-user-provider:類似一個web工程,主要負(fù)責(zé)基礎(chǔ)業(yè)務(wù)的crud,同時依賴dianshang-user-api模塊

5.3.1、配置dubbo服務(wù)

在dianshang-user-provider的application.yml文件中配置dubbo服務(wù),如下:

#用戶中心服務(wù)端口 server:   port: 8080 #數(shù)據(jù)源配置 spring:   datasource:     druid:       driver-class-name: com.mysql.cj.jdbc.Driver       url: "jdbc:mysql://localhost:3306/dianshang-user"       username: root       password: 111111 #dubbo配置 dubbo:   scan:     # 包名根據(jù)自己的實(shí)際情況寫     base-packages: org.project.dianshang.user   protocol:     port: 20880     name: dubbo   registry:     #zookeeper注冊中心地址     address: zookeeper://192.168.0.107:2181

5.3.2、編寫服務(wù)暴露接口以及實(shí)現(xiàn)類

在dianshang-user-api模塊中,創(chuàng)建一個UserApi接口,以及返回參數(shù)對象UserVo!

public interface UserApi {      /**      * 查詢用戶信息      * @param userId      * @return      */     UserVo findUserById(String userId); }

其中UserVo,需要實(shí)現(xiàn)序列化,如下:

@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class UserVo implements Serializable {      private static final long serialVersionUID = 1L;      /**      * 用戶ID      */     private String userId;      /**      * 用戶中文名      */     private String userName; }

在dianshang-user-provider模塊中,編寫UserApi接口實(shí)現(xiàn)類,如下:

@Service(interfaceClass =UserApi.class) @Component public class UserProvider implements UserApi {      @Autowired     private UserService userService;      @Override     public UserVo findUserById(String userId) {         QueryWrapper<User> queryWrapper = new QueryWrapper<User>();         queryWrapper.eq("user_id",userId);         User source = userService.getOne(queryWrapper);         if(source != null){             UserVo vo = new UserVo();             BeanUtils.copyProperties(source,vo);             return vo;         }         return null;     } }

其中的注解@Service指的是org.apache.dubbo.config.annotation.Service下的注解,而不是Spring下的注解哦!

接著,我們繼續(xù)創(chuàng)建商品中心項(xiàng)目!

5.4、創(chuàng)建商品中心項(xiàng)目

與用戶中心項(xiàng)目類似,在 IDEA 中,創(chuàng)建dianshang-platform子模塊,并依賴dianshang-common模塊

<dependencies>     <dependency>         <groupId>org.project.demo</groupId>         <artifactId>dianshang-common</artifactId>         <version>1.0.0</version>     </dependency> </dependencies>

同時,創(chuàng)建dianshang-platform-provider和dianshang-platform-api模塊。

  • dianshang-platform-api:主要對其他服務(wù)提供接口暴露

  • dianshang-platform-provider:類似一個web工程,主要負(fù)責(zé)基礎(chǔ)業(yè)務(wù)的crud,同時依賴dianshang-platform-api模塊

5.4.1、配置dubbo服務(wù)

在dianshang-platform-provider的application.yml文件中配置dubbo服務(wù),如下:

#用戶中心服務(wù)端口 server:   port: 8081 #數(shù)據(jù)源配置 spring:   datasource:     druid:       driver-class-name: com.mysql.cj.jdbc.Driver       url: "jdbc:mysql://localhost:3306/dianshang-platform"       username: root       password: 111111 #dubbo配置 dubbo:   scan:     # 包名根據(jù)自己的實(shí)際情況寫     base-packages: org.project.dianshang.platform   protocol:     port: 20881     name: dubbo   registry:     #zookeeper注冊中心地址     address: zookeeper://192.168.0.107:2181

5.4.2、編寫服務(wù)暴露接口以及實(shí)現(xiàn)類

在dianshang-platform-api模塊中,創(chuàng)建一個ProductApi接口,以及返回參數(shù)對象ProductVo!

public interface ProductApi {      /**      * 通過商品ID,查詢商品信息      * @param productId      * @return      */     ProductVo queryProductInfoById(String productId); }

其中ProductVo,需要實(shí)現(xiàn)序列化,如下:

@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class ProductVo implements Serializable {      private static final long serialVersionUID = 1L;      /**商品ID*/     private String productId;      /**商品名稱*/     private String productName;      /**商品價格*/     private BigDecimal productPrice; }

在dianshang-platform-provider模塊中,編寫ProductApi接口實(shí)現(xiàn)類,如下:

@Service(interfaceClass = ProductApi.class) @Component public class ProductProvider implements ProductApi {      @Autowired     private ProductService productService;      @Override     public ProductVo queryProductInfoById(String productId) {         //通過商品ID查詢信息         Product source = productService.getById(productId);         if(source != null){             ProductVo vo = new ProductVo();             BeanUtils.copyProperties(source,vo);             return vo;         }         return null;     } }

接著,我們繼續(xù)創(chuàng)建訂單中心項(xiàng)目!

5.5、創(chuàng)建訂單中心項(xiàng)目

與商品中心項(xiàng)目類似,在 IDEA 中,創(chuàng)建dianshang-business子模塊,并依賴dianshang-common模塊

<dependencies>     <dependency>         <groupId>org.project.demo</groupId>         <artifactId>dianshang-common</artifactId>         <version>1.0.0</version>     </dependency> </dependencies>

同時,創(chuàng)建dianshang-business-provider和dianshang-business-api模塊。

  • dianshang-business-api:主要對其他服務(wù)提供接口暴露

  • dianshang-business-provider:類似一個web工程,主要負(fù)責(zé)基礎(chǔ)業(yè)務(wù)的crud,同時依賴dianshang-business-api模塊

5.5.1、配置dubbo服務(wù)

在dianshang-business-provider的application.yml文件中配置dubbo服務(wù),如下:

#用戶中心服務(wù)端口 server:   port: 8082 #數(shù)據(jù)源配置 spring:   datasource:     druid:       driver-class-name: com.mysql.cj.jdbc.Driver       url: "jdbc:mysql://localhost:3306/dianshang-business"       username: root       password: 111111 #dubbo配置 dubbo:   scan:     # 包名根據(jù)自己的實(shí)際情況寫     base-packages: org.project.dianshang.business   protocol:     port: 20882     name: dubbo   registry:     #zookeeper注冊中心地址     address: zookeeper://192.168.0.107:2181

5.5.2、編寫服務(wù)暴露接口以及實(shí)現(xiàn)類

在dianshang-business-api模塊中,創(chuàng)建一個OrderApi接口,以及返回參數(shù)對象OrderVo!

public interface OrderApi {      /**      * 通過用戶ID,查詢用戶訂單信息      * @param userId      * @return      */     List<OrderVo> queryOrderByUserId(String userId); }

其中OrderVo,需要實(shí)現(xiàn)序列化,如下:

@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class OrderVo implements Serializable {      private static final long serialVersionUID = 1L;      /**訂單ID*/     private String orderId;      /**訂單編號*/     private String orderNo;      /**訂單金額*/     private BigDecimal orderPrice;      /**下單時間*/     private Date orderTime; }

在dianshang-business-provider模塊中,編寫OrderApi接口實(shí)現(xiàn)類,如下:

@Service(interfaceClass = OrderApi.class) @Component public class OrderProvider implements OrderApi {      @Autowired     private OrderService orderService;      @Override     public List<OrderVo> queryOrderByUserId(String userId) {         QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>();         queryWrapper.eq("user_id",userId);         List<Order> sourceList = orderService.list(queryWrapper);         if(!CollectionUtils.isEmpty(sourceList)){             List<OrderVo> voList = new ArrayList<>();             for (Order order : sourceList) {                 OrderVo vo = new OrderVo();                 BeanUtils.copyProperties(order, vo);                 voList.add(vo);             }             return voList;         }         return null;     } }

至此,3個項(xiàng)目的服務(wù)暴露接口已經(jīng)開發(fā)完成!接下來我們來編寫怎么進(jìn)行遠(yuǎn)程調(diào)用!

5.6、遠(yuǎn)程調(diào)用

5.6.1、編寫創(chuàng)建訂單服務(wù)

在dianshang-business-provider模塊中,編寫創(chuàng)建訂單接口之前,先依賴dianshang-business-api和dianshang-user-api,如下:

<!--商品服務(wù)接口暴露 api--> <dependency>     <groupId>org.project.demo</groupId>     <artifactId>dianshang-platform-api</artifactId>     <version>1.0.0</version> </dependency> <!--用戶服務(wù)接口暴露 api--> <dependency>     <groupId>org.project.demo</groupId>     <artifactId>dianshang-user-api</artifactId>     <version>1.0.0</version> </dependency>

在dianshang-business-provider模塊中,編寫創(chuàng)建訂單服務(wù),如下:

@RestController @RequestMapping("/order") public class OrderController {      @Autowired     private OrderService orderService;      @Autowired     private OrderDetailService orderDetailService;      @Reference(check =false)     private ProductApi productApi;      @Reference(check =false)     private UserApi userApi;      /**      * 新增      */     @JwtIgnore     @RequestMapping(value = "/add")     public boolean add(String productId,String userId){         LocalAssert.isStringEmpty(productId,"產(chǎn)品Id不能為空");         LocalAssert.isStringEmpty(userId,"用戶Id不能為空");         ProductVo productVo = productApi.queryProductInfoById(productId);         LocalAssert.isObjectEmpty(productVo,"未查詢到產(chǎn)品信息");         UserVo userVo = userApi.findUserById(userId);         LocalAssert.isObjectEmpty(userVo,"未查詢到用戶信息");         Order order = new Order();         order.setOrderId(IdGenerator.uuid());         order.setOrderNo(System.currentTimeMillis() + "");         order.setOrderPrice(productVo.getProductPrice());         order.setUserId(userId);         order.setOrderTime(new Date());         orderService.save(order);          OrderDetail orderDetail = new OrderDetail();         orderDetail.setOrderDetailId(IdGenerator.uuid());         orderDetail.setOrderId(order.getOrderId());         orderDetail.setProductId(productId);         orderDetail.setSort(1);         orderDetailService.save(orderDetail);         return true;     } }

其中的@Reference注解,是屬于org.apache.dubbo.config.annotation.Reference下的注解,表示遠(yuǎn)程依賴服務(wù)。

參數(shù)check  =false表示啟動服務(wù)時,不做遠(yuǎn)程服務(wù)狀態(tài)檢查,這樣設(shè)置的目的就是為了防止當(dāng)前服務(wù)啟動不了,例如用戶中心項(xiàng)目沒有啟動成功,但是訂單中心又依賴了用戶中心,如果check=true,此時訂單中心啟動會報錯!

5.6.2、編寫用戶查詢自己的訂單信息

同樣的,在dianshang-user-provider模塊中,編寫用戶查詢自己的訂單信息接口之前,先依賴dianshang-business-api和dianshang-user-api,如下:

<dependency>     <groupId>org.project.demo</groupId>     <artifactId>dianshang-business-api</artifactId>     <version>1.0.0</version> </dependency> <dependency>     <groupId>org.project.demo</groupId>     <artifactId>dianshang-user-api</artifactId>     <version>1.0.0</version> </dependency>

在dianshang-user-provider模塊中,編寫用戶查詢自己的訂單信息接口,如下:

@RestController @RequestMapping("/user") public class UserController {      @Reference(check =false)     private OrderApi orderApi;       /**      * 通過用戶ID,查詢訂單信息      * @param userId      * @return      */     @RequestMapping("/list")     public List<OrderVo> queryOrderByUserId(String userId){         return orderApi.queryOrderByUserId(userId);     } }

至此,遠(yuǎn)程服務(wù)調(diào)用,編寫完成!

六、服務(wù)測試

在將項(xiàng)目部署在服務(wù)器之前,咱們先本地測試一下,看服務(wù)是否都可以跑通?

  • 啟動用戶中心dianshang-user-provider

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

  • 繼續(xù)啟動商品中心dianshang-platform-provider

  • 如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

接著啟動訂單中心dianshang-business-provider

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

最后,我們來測試一下服務(wù)接口是否為我們預(yù)期的結(jié)果?

打開瀏覽器,輸入http://127.0.0.1:8082/order/add?productId=1&userId=1測試創(chuàng)建訂單接口,頁面運(yùn)行結(jié)果顯示正常!

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

我們再來看看數(shù)據(jù)庫,訂單是否生成?

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

ok!很清晰的看到,數(shù)據(jù)已經(jīng)進(jìn)去了,沒啥問題!

我們再來測試一下在用戶中心訂單查詢接口,輸入http://127.0.0.1:8080/user/list?userId=1,頁面運(yùn)行結(jié)果如下!

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

到此,本地服務(wù)測試基本通過!

七、服務(wù)器部署

在上文中,我們介紹了服務(wù)的構(gòu)建、開發(fā)和測試,那如何在服務(wù)器端部署呢?

首先,修改各個項(xiàng)目的application.yml文件,將其中的數(shù)據(jù)源地址、dubbo注冊中心地址修改為線上能聯(lián)通的地址,然后在dianshang目錄下使用maven工具對整個工程執(zhí)行如下命令進(jìn)行打包!

mvn clean install

也可以在 IDEA 環(huán)境下,通過maven配置clean install命令執(zhí)行打包。

將各個項(xiàng)目target目錄下的dianshang-user-provider.jar、dianshang-platform-provider.jar、dianshang-business-provider.jar拷貝出來。

分別上傳到對應(yīng)的服務(wù)器目錄,本服務(wù)器采用的是 CentOS7,總共4臺服務(wù)器,其中一臺部署zookeeper,另外三臺部署三個微服務(wù)項(xiàng)目。

登錄服務(wù)器,輸入如下命令,確保JDK已經(jīng)安裝完成!

java -version

關(guān)閉所有服務(wù)器的防火墻,放行端口訪問!

#關(guān)閉防火墻 systemctl stop firewalld.service  #禁止開機(jī)啟動 systemctl disable firewalld.service
  • 啟動用戶中心服務(wù),日志信息輸出到service.log(虛擬機(jī)ip:192.168.0.108)

nohup java -jar  dianshang-user-provider.jar > service.log 2>&1 &
  • 啟動商品中心服務(wù),日志信息輸出到service.log(虛擬機(jī)ip:192.168.0.107)

nohup java -jar  dianshang-platform-provider.jar > service.log 2>&1 &
  • 啟動訂單中心服務(wù),日志信息輸出到service.log(虛擬機(jī)ip:192.168.0.109)

nohup java -jar  dianshang-business-provider.jar > service.log 2>&1 &

打開瀏覽器,輸入http://192.168.0.109:8082/order/add?productId=1&userId=1測試創(chuàng)建訂單接口,頁面運(yùn)行結(jié)果顯示正常!

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

我們再來測試一下在用戶中心訂單查詢接口,輸入輸入http://192.168.0.108:8080/user/list?userId=1,頁面運(yùn)行結(jié)果如下!

如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)

很清晰的看到,輸出了2條信息,第二條訂單是在測試環(huán)境服務(wù)器生成的,第一條是本地開發(fā)環(huán)境生成的。

到此,服務(wù)器部署基本已經(jīng)完成!

如果是生產(chǎn)環(huán)境,可能就需要多臺zookeeper來保證高可用,至少2臺服務(wù)器來部署業(yè)務(wù)服務(wù),通過負(fù)載均衡來路由!

到此,相信大家對“如何利用Springboot+Dubbo構(gòu)建分布式微服務(wù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI