免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Spring Boot Dubbo 構(gòu)建分布式服務(wù)

概述:

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

節(jié)點(diǎn)角色說(shuō)明
Provider暴露服務(wù)的服務(wù)提供方
Consumer調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方
Registry服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心
Monitor統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心
Container服務(wù)運(yùn)行的容器

調(diào)用關(guān)系說(shuō)明

  1. 服務(wù)容器 Container 負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。
  2. 服務(wù)提供者 Provider 啟動(dòng)的時(shí)候,向注冊(cè)中心 Registry 注冊(cè)自己提供的服務(wù)。
  3. 服務(wù)消費(fèi)者 Consumer 在啟動(dòng)的時(shí)候,向注冊(cè)中心 Registry 訂閱自己所需要的服務(wù)。
  4. 注冊(cè)中心 Registry 返回服務(wù)提供者的地址列表給消費(fèi)者,如果有變更注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。
  5. 服務(wù)消費(fèi)者從提供者地址列表中,基于軟負(fù)載均衡算法,選擇一臺(tái)提供者進(jìn)行進(jìn)行調(diào)用,如果調(diào)用失敗再選擇另外一臺(tái)。
  6. 服務(wù)消費(fèi)者與提供者在內(nèi)存中統(tǒng)計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心 Monitor 。

項(xiàng)目構(gòu)建

開(kāi)發(fā)環(huán)境主要涉及以下方面:

  • Spring Boot
  • JDK 8
  • Dubbo 2.7.1
  • Zookeeper

具體代碼可以查看 github 的 dubbo 模塊:https://github.com/UniqueDong/springboot-study

Dubbo API

定義服務(wù)接口,打成 jar 包讓消費(fèi)者依賴(lài),服務(wù)者實(shí)現(xiàn)接口。該工程只有接口定義以及 model 對(duì)象。@Data 屬于lombok 開(kāi)源庫(kù)提供的特性,方便開(kāi)發(fā)。

  • model 對(duì)象定義:
@Datapublic class User implements Serializable {    private Long id;    private String username;}
  • provider 接口定義:
public interface UserProvider {    List<User> listUser();}

Provider 服務(wù)提供者

  • pom依賴(lài):

引入spring-boot-starter,dubbo-api 接口就是我們上面提到的 接口定義 jar ,dubbo-spring-boot-starter ,dubbo-dependencies-zookeeper。

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>            <exclusions>                <exclusion>                    <artifactId>spring-boot-starter-logging</artifactId>                    <groupId>org.springframework.boot</groupId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>zero.springboot.study</groupId>            <artifactId>dubbo-api</artifactId>            <version>1.0.0-SNAPSHOT</version>        </dependency>        <!--dubbo start-->        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-spring-boot-starter</artifactId>            <version>2.7.1</version>        </dependency>        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo</artifactId>            <version>2.7.1</version>        </dependency>        <!-- Zookeeper dependencies -->        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-dependencies-zookeeper</artifactId>            <version>2.7.1</version>            <type>pom</type>            <exclusions>                <exclusion>                    <artifactId>log4j</artifactId>                    <groupId>log4j</groupId>                </exclusion>                <exclusion>                    <artifactId>slf4j-log4j12</artifactId>                    <groupId>org.slf4j</groupId>                </exclusion>            </exclusions>        </dependency>        <!--dubbo end-->               <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.57</version>        </dependency>    </dependencies>
  • 配置文件 yaml 定義:
spring:  application:    name: dubbo-provider#自定義配置embedded:  zookeeper:  	# zookeeper 服務(wù)連接端口    port: 2181# dubbo 配置dubbo:  # 注冊(cè)中心配置   registry:    id: dubbo-provider    address: zookeeper://127.0.0.1:${embedded.zookeeper.port}    group: local  application:    name: dubbo-provider    id: dubbo-provider    logger: slf4j    qosEnable: true    qosPort: 22224    qosAcceptForeignIp: false  # dubbo 協(xié)議配置  protocol:    # -1 表示使用隨機(jī)未被占用的端口    port: -1    name: dubbo  scan:    # dubbo 服務(wù)提供者實(shí)現(xiàn)類(lèi)所在包    base-packages: com.zero.provider.impl
  • 實(shí)現(xiàn) api 定義的接口

    注意 @Service 是 Dubbo 的,不要導(dǎo)入了 Spring 的。

import com.google.common.collect.Lists;import com.zero.api.model.User;import com.zero.api.provider.UserProvider;import org.apache.dubbo.config.annotation.Service;import java.util.List;@Service(interfaceClass = UserProvider.class)public class UserProviderImpl implements UserProvider {    @Override    public List<User> listUser() {        User user = new User();        user.setId(1L);        user.setUsername("青龍");        return Lists.newArrayList(user);    }}

Consumer

  • Pom 定義:

我們要依賴(lài) spring-boot-starter-web 提供http rest接口給前端調(diào)用。同時(shí)內(nèi)部通過(guò) Dubbo 實(shí)現(xiàn) RPC調(diào)用服務(wù)提供者。

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-logging</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>zero.springboot.study</groupId>            <artifactId>dubbo-api</artifactId>            <version>1.0.0-SNAPSHOT</version>        </dependency>        <!--dubbo start-->        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-spring-boot-starter</artifactId>            <version>2.7.1</version>        </dependency>        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo</artifactId>            <version>2.7.1</version>        </dependency>        <!-- Zookeeper dependencies -->        <dependency>            <groupId>org.apache.dubbo</groupId>            <artifactId>dubbo-dependencies-zookeeper</artifactId>            <version>2.7.1</version>            <type>pom</type>            <exclusions>                <exclusion>                    <artifactId>log4j</artifactId>                    <groupId>log4j</groupId>                </exclusion>                <exclusion>                    <artifactId>slf4j-log4j12</artifactId>                    <groupId>org.slf4j</groupId>                </exclusion>            </exclusions>        </dependency>        <!--dubbo end-->        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>    </dependencies>
  • yaml 定義:
server:  # web 日更年期端口  port: 9005spring:  application:    name: dubbo-comsumer#自定義配置embedded:  zookeeper:    port: 2181# dubbo 配置dubbo:  registry:    id: dubbo-comsumer    address: zookeeper://127.0.0.1:${embedded.zookeeper.port}    group: local  application:    name: dubbo-comsumer    id: dubbo-comsumer    logger: slf4j    qosEnable: false    qosPort: 22223    qosAcceptForeignIp: false  protocol:    port: -1    name: dubbo  # 是否檢查服務(wù)提供者有效   consumer:    check: false
  • 服務(wù)消費(fèi)者調(diào)用服務(wù)生產(chǎn)者
import com.zero.api.model.User;import com.zero.api.provider.UserProvider;import org.apache.dubbo.config.annotation.Reference;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserService {    @Reference    private UserProvider userProvider;    public List<User> listUser() {        return userProvider.listUser();    }}
  • 我們通過(guò)一個(gè)RESTfull接口,提供給前端調(diào)用。
@RestController@RequestMapping("/users")public class UserController {    @Autowired    private UserService userService;    @GetMapping    public Object listUser() {        List<User> list = userService.listUser();        return list;    }}

總結(jié)

各種具體協(xié)議、注冊(cè)中心、多注冊(cè)中心、超時(shí)等配置可以查看官方文檔http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

歡迎大家討論糾正,郵箱:zero_develop@163.com 。點(diǎn)贊與關(guān)注微信公眾號(hào)是我們前進(jìn)的動(dòng)力。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Maven+SpringMVC+Dubbo 簡(jiǎn)單的入門(mén)demo配置
SpringBoot集成Dubbo
【JAVA秒會(huì)技術(shù)之Dubbo入門(mén)】Dubbo在電商開(kāi)發(fā)中的應(yīng)用
[引用]Dubbo之旅--Provider示例
SpringCloud微服務(wù)部署
dubbo(四)多協(xié)議支持
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服