亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一、Dubbo介紹

引用官方的一段介紹

Apache Dubbo (incubating) |?d?b??| is a high-performance, JAVA based RPC framework open-sourced by Alibaba. As in many RPC systems, dubbo is based around the idea of defining a service, specifying the methods that can be called remotely with their parameters and return types. On the server side, the server implements this interface and runs a dubbo server to handle client calls. On the client side, the client has a stub that provides the same methods as the server.

Dubbo是阿里出的一個(gè)高性能的分布式微服務(wù)框架,它的特點(diǎn)是性能高、界面友好、文檔齊全(特別是中文文檔),是很多中小型公司快速搭建微服務(wù)的首選技術(shù)。前段時(shí)間被阿里重新進(jìn)行維護(hù),并進(jìn)入Apache孵化器。遷移到Apache后也推出了新的starter,簡(jiǎn)單試用后感覺(jué)不錯(cuò),為此特地寫下這一系列筆記,用以記錄。(整個(gè)項(xiàng)目的源碼在最后一章,感興趣的童鞋可以下載自己搭建試試,也可以將其作為腳手架搭建你自己的微服務(wù))

二、搭建注冊(cè)中心

在dubbo中,每一個(gè)服務(wù)都是分布式的,消費(fèi)者與提供者的關(guān)系并不是一對(duì)一的關(guān)系,而是一對(duì)多,并且服務(wù)提供者的實(shí)例位置是未知的,如果都由開發(fā)者使用靜態(tài)文件去維護(hù)這個(gè)關(guān)系顯示不合適的,一方面是徒增工作量,另一方面是靈活度不高,如果服務(wù)提供者更換了服務(wù)器地址,那么需要重新配置等,所以目前比較推崇的方案是所有服務(wù)提供者均主動(dòng)將自己的信息注冊(cè)到同個(gè)地方中,而消費(fèi)者只要一律從這個(gè)地方取他需要的東西即可,這個(gè)地方就是所謂的注冊(cè)中心。目前dubbo可以選擇的注冊(cè)中心包括zookeeper、redis等,一般建議使用zookeeper,下面演示一下在windows中如何搭建zookeeper注冊(cè)中心。

1、下載zookeeper

直接在官網(wǎng)的鏡像站下 (https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/current/zookeeper-3.4.12.tar.gz)

2、解壓并配置zookeeper

為了演示,直接使用官方示例配置。把解壓出來(lái)的zookeeper-3.4.12confzoo_sample.cfg 文件名改為zoo.cfg即可,如下圖:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

3、運(yùn)行zookeeper注冊(cè)中心

雙擊運(yùn)行/zookeeper-3.4.12/bin/zkServer.cmd,出現(xiàn)以下窗口代表運(yùn)行成功。

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

三、搭建Dubbo Admin

在Dubbo中,一大殺器就是它的可視化監(jiān)控界面,在這個(gè)界面中可以查看服務(wù)者、提供者的數(shù)量、狀態(tài)等,并對(duì)服務(wù)降級(jí)、容錯(cuò)、屏蔽等提供了可視化操作。下面演示如何搭建Dubbo Admin。

1、下載源碼并解壓

點(diǎn)擊下面地址下載dubbo admin項(xiàng)目源碼 (https://codeload.github.com/apache/incubator-dubbo-ops/zip/master)

下載后解壓出來(lái),如下圖:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

2、打包

打開cmd,進(jìn)入第一步解壓出來(lái)的dubbo-admin文件夾中,執(zhí)行mvn clean package

(ps:要是提示未存在mvn命令,就把maven文件夾的bin目錄添加到系統(tǒng)環(huán)境變量PATH中)

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

3、配置dubbo admin

打開上面那步打出來(lái)的war包(incubator-dubbo-ops-masterdubbo-admintargetdubbo-admin-2.0.0.war),編輯WEB-INF文件夾中的dubbo.properties文件,如下圖

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

將紅框處的IP地址改為你的注冊(cè)中心的地址,由于我們的注冊(cè)中心是在本地運(yùn)行的,故此處無(wú)需做修改。

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

4、運(yùn)行Dubbo Admin

將war包改名為ROOT.war后放到Tomcat的webApp目錄中,然后運(yùn)行tomcat。使用瀏覽器打開http://127.0.0.1:8080,提示輸入賬號(hào)密碼,賬號(hào)和密碼默認(rèn)均為root,登陸后的界面如下:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

四、搭建API項(xiàng)目

由于Dubbo是采用RPC調(diào)用方式,這也是與Spring Cloud比較大的區(qū)別之一。在Spring Cloud中,服務(wù)通過(guò)HTTP接口提供給其它服務(wù)調(diào)用,對(duì)于調(diào)用者與被調(diào)用者來(lái)說(shuō),只要雙方保證滿足http接口的契約即可,但是在dubbo中,是嚴(yán)格要求調(diào)用接口的類路徑、參數(shù)等雙方一致。所以需要構(gòu)建一個(gè)API項(xiàng)目,該項(xiàng)目里面存放服務(wù)接口即公共實(shí)體,雙方依賴這個(gè)項(xiàng)目完成遠(yuǎn)程調(diào)用。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
</project>

公共實(shí)體-People.java

package com.czh.dubbo.common.entity;
import java.io.Serializable;
public class People implements Serializable {
 /**
 * 
 */
 private static final long serialVersionUID = 1415852192397895853L;
 // 人員編號(hào)
 private int id;
 // 姓名
 private String name;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 @Override
 public String toString() {
 return "People [id=" + id + ", name=" + name + "]";
 }
}

公共服務(wù)接口-PeopleService.java

package com.czh.dubbo.common.service;
import com.czh.dubbo.common.entity.People;
public interface PeopleService {
 People getPeople(People people);
}

五、搭建服務(wù)提供者

服務(wù)提供者就是被消費(fèi)者所調(diào)用的,它需要實(shí)現(xiàn)公共服務(wù)接口,并通過(guò)dubbo把自己的服務(wù)暴露出來(lái)。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh</groupId>
 <artifactId>dubbo-provider</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>dubbo-provider</name>
 <description>Demo project for Spring Boot</description>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.12.RELEASE</version>
 <relativePath /> <!-- lookup parent from repository -->
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-project -->
 <dependency>
 <groupId>com.alibaba.boot</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>0.1.0</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
 <dependency>
 <groupId>com.101tec</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.10</version>
 </dependency>
 <dependency>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
 </build>
</project>

com.alibaba.boot是遷移過(guò)后出的一個(gè)最新的dubbo spring boot starter,也是目前官方推薦使用的。值得注意的是,該starter不包含注冊(cè)中心客戶端,需要自己配置。一般推薦使用zookeeper作為注冊(cè)中心,所以需要手動(dòng)引入zkclient。

application.properties

#web服務(wù)端口,由于我們不需要使用web服務(wù),所以將其設(shè)為隨機(jī)端口
server.port=-1
#dubbo服務(wù)端口,我們無(wú)需知道dubbo服務(wù)運(yùn)行在哪個(gè)端口,故也將其設(shè)為隨機(jī)端口
dubbo.protocol.port = -1
#dubbo服務(wù)名稱
dubbo.application.name = dubbo-provider
#dubbo服務(wù)所在包路徑
dubbo.scan.basePackages = com.czh.dubbo.provider.service
#注冊(cè)中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#設(shè)置服務(wù)的日志輸出級(jí)別為debug級(jí)
logging.level.com.czh.dubbo.provider.service=debug

服務(wù)實(shí)現(xiàn)類PeopleServiceImpl

package com.czh.dubbo.provider.service;
import java.util.Random;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dubbo.config.annotation.Service;
import com.czh.dubbo.common.entity.People;
import com.czh.dubbo.common.service.PeopleService;
//注意,這里的service注解用的不是spring的注解,而是com.alibaba.dubbo.config.annotation.Service;
@Service
public class PeopleServiceImpl implements PeopleService{
 private static final Logger logger = LoggerFactory.getLogger(PeopleServiceImpl.class);
 /**
 * 這個(gè)方法的作用是接收傳過(guò)來(lái)的People實(shí)體,將其ID賦為隨機(jī)數(shù)
 */
 @Override
 public People getPeople(People people) {
 people.setId(new Random().nextInt(10000));
 logger.debug("People:{},ID:{}",people.getName(),people.getId());
 return people;
 }
}

六、搭建服務(wù)消費(fèi)者

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.czh</groupId>
 <artifactId>dubbo-consumer</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>dubbo-consumer</name>
 <description>Demo project for Spring Boot</description>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.12.RELEASE</version>
 <relativePath /> <!-- lookup parent from repository -->
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-project -->
 <dependency>
 <groupId>com.alibaba.boot</groupId>
 <artifactId>dubbo-spring-boot-starter</artifactId>
 <version>0.1.0</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
 <dependency>
 <groupId>com.101tec</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.10</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
 <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>fastjson</artifactId>
 <version>1.2.47</version>
 </dependency>
 <dependency>
 <groupId>com.czh.dubbo</groupId>
 <artifactId>dubbo-common</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
 </build>
</project>

application.properties

#web服務(wù)端口
server.port=80
#消費(fèi)者名稱
dubbo.application.name=dubbo-consumer
#需要使用到提供者服務(wù)的包路徑
dubbo.scan.base-packages=com.czh.dubbo.consumer.controller
#注冊(cè)中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

控制器PeopleController

package com.czh.dubbo.consumer.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.czh.dubbo.common.entity.People;
import com.czh.dubbo.common.service.PeopleService;
@RestController
public class PeopleController {
 @Reference
 private PeopleService peopleService;
 @GetMapping("/people/{name}")
 public People getPeople(@PathVariable("name") String name) {
 People people = new People();
 people.setName(name);
 return peopleService.getPeople(people);
 }
}

至此,整個(gè)項(xiàng)目便搭建完畢,三個(gè)項(xiàng)目的項(xiàng)目結(jié)構(gòu)如下

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

七、上線運(yùn)行

1、打包運(yùn)行

安裝API項(xiàng)目到本地maven倉(cāng)庫(kù)

在dubbo-common項(xiàng)目的pom.xml文件上點(diǎn)擊右鍵,Run as - Maven install

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

打包服務(wù)提供者與服務(wù)消費(fèi)者

在這兩個(gè)項(xiàng)目的pom.xml文件執(zhí)行以下操作:點(diǎn)擊右鍵,Run as - Maven build… 在彈出的選項(xiàng)框中Golas 填寫:clean package,如下圖

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

點(diǎn)擊run,打包成功后如下圖:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

將兩個(gè)項(xiàng)目的target文件夾中拿出打好的jar包放到某個(gè)文件夾下備用,如下圖

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

使用java -jar 命令依次運(yùn)行dubbo-provider 與dubbo-consumer,順序不能搞錯(cuò),并且得確保provider啟動(dòng)完成后再啟動(dòng)consumer,否則后期會(huì)出現(xiàn)空指針異常。

至此,我們總共啟動(dòng)了四個(gè)服務(wù),分別是zookeeper注冊(cè)中心、dubbo-admin、dubbo-provider、dubbo-consumer,如下圖:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

打開dubbo監(jiān)控網(wǎng)頁(yè)檢查服務(wù)消費(fèi)者和提供者是否已經(jīng)注冊(cè)成功:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 


十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到,提供者與消費(fèi)者已成功注冊(cè)到注冊(cè)中心

2、基本調(diào)用

使用瀏覽器訪問(wèn)此地址http://127.0.0.1/people/test,觀察服務(wù)提供者的控制臺(tái)輸出內(nèi)容

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

后臺(tái)控制臺(tái)已輸出日志了,證明調(diào)用成功,那么瀏覽器是否能夠拿到數(shù)據(jù)呢?

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到瀏覽器也拿到數(shù)據(jù)了,證明已經(jīng)成功完成調(diào)用了。

3、容錯(cuò)與屏蔽

容錯(cuò)

顧名思義就是當(dāng)服務(wù)提供者出現(xiàn)異常時(shí),消費(fèi)者是否能夠正常處理,在這里,我們關(guān)閉掉服務(wù)提供者,再進(jìn)行調(diào)用,觀察是否會(huì)報(bào)錯(cuò)

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以觀察到前端報(bào)異常了。我們進(jìn)入dubbo-admin在消費(fèi)者中把服務(wù)容錯(cuò)開啟,如下

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

再進(jìn)行調(diào)用可以看到

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到此時(shí)調(diào)用后返回確實(shí)為空,證明容錯(cuò)生效。

屏蔽

當(dāng)對(duì)某個(gè)服務(wù)啟動(dòng)屏蔽時(shí),此時(shí)消費(fèi)者調(diào)用該服務(wù)時(shí)均會(huì)返回空對(duì)象。首先我們需要確保提供者與消費(fèi)者均已啟動(dòng),然后在消費(fèi)者中對(duì)提供者進(jìn)行屏蔽,如下圖

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

再進(jìn)行服務(wù)調(diào)用

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到此時(shí)調(diào)用后返回確實(shí)為空,證明屏蔽生效。

其實(shí)屏蔽與容錯(cuò)還有更高級(jí)的玩法,最基本的屏蔽是返回空對(duì)象,我們甚至可以自定義返回內(nèi)容。

進(jìn)入動(dòng)態(tài)配置,選擇新增

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

編輯紅框處的內(nèi)容如下圖:

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

再訪問(wèn)網(wǎng)頁(yè)

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到確實(shí)屏蔽成功,并返回我們自定義的內(nèi)容,注意,此時(shí)并未調(diào)用到提供者服務(wù)。

3、服務(wù)降級(jí)

為了測(cè)試服務(wù)降級(jí),我們需要再啟動(dòng)一個(gè)服務(wù)提供者

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到目前兩個(gè)服務(wù)提供者

然后我們?cè)龠B續(xù)多次訪問(wèn)網(wǎng)頁(yè)

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

兩個(gè)服務(wù)接收到的請(qǐng)求數(shù)量是差不多的,此時(shí)我們對(duì)第二個(gè)服務(wù)進(jìn)行降級(jí),為了測(cè)試明顯,這里我們連續(xù)降兩次級(jí),將其降到0.25,再連續(xù)調(diào)用,觀察結(jié)果

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 


十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

已將第二個(gè)服務(wù)提供者降級(jí)到0.25,此時(shí)再連續(xù)訪問(wèn)

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

此時(shí)很明顯可以看到第二個(gè)服務(wù)接收的請(qǐng)求比第一個(gè)少很多,證明降級(jí)成功。

4、負(fù)載均衡

dubbo提供了三個(gè)基本的負(fù)載均衡策略,分別是 隨機(jī)訪問(wèn)、輪詢、最少并發(fā),從字面上也可以得知是什么意思,在這里我演示一下輪詢的負(fù)載均衡策略。在dubbo-admin中,選擇負(fù)載均衡功能,點(diǎn)擊新增,如下圖

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

按下圖進(jìn)行配置

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

老樣子,這次我們連續(xù)訪問(wèn)網(wǎng)頁(yè)10次

十分鐘搭建不了,你砍我,使用SpringBoot+Dubbo搭建微服務(wù)筆記

 

可以看到兩個(gè)服務(wù)剛好各均分了五個(gè)請(qǐng)求,負(fù)載均衡成功!

八、寫在最后

相比于spring cloud,個(gè)人認(rèn)為dubbo提供的功能相對(duì)簡(jiǎn)單,但每個(gè)功能又很實(shí)用,且使用起來(lái)十分方便(因?yàn)橛锌梢暬膚eb界面操作),更適合中小型公司進(jìn)行微服務(wù)搭建。

分享到:
標(biāo)簽:微服
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定