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

溫馨提示×

溫馨提示×

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

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

dubbo入門

發布時間:2020-04-06 18:43:17 來源:網絡 閱讀:397 作者:dreamyoungman 欄目:編程語言

dubbo 作為一項分布式服務調度框架,可以將系統的服務組件化,將服務單獨抽取出來。提高系統的性能,當然,這個也僅限于分布式的服務當中。dubbo的架構圖如下:
dubbo入門

dubbo的特性:
1 提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的信息交換方式。
2 提供基于接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集群支持。
3 基于注冊中心目錄服務,使服務消費方能動態的查×××提供方,使地址透明,使服務提供方可以平滑增加或減少機器。

dubbo 可以做什么:
1 透明化的遠程方法調用(就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。)
2 軟負載均衡及容錯機制(可在內網替代F5等硬件負載均衡器,降低成本,減少單點。)
3 服務自動注冊與發現(不再需要寫死服務提供方地址,注冊中心基于接口名查詢服務提供者的IP地址,并且能夠平滑添加或刪除服務提供者。)

dubbo 應用場景
1.RPC分布式服務
當網站變大后,不可避免的需要拆分應用進行服務化,以提高開發效率,調優性能,節省關鍵競爭資源等。
比如:為了適用不斷變化的市場需求,以及多個垂直應用之間數據交互方便,我們把公共的業務抽取出來作為獨立的模塊,為其他的應用提供服務,系統逐漸依賴于抽象和rpc遠程服務調用。
2.配置管理
當服務越來越多時,服務的URL地址信息就會爆炸式增長,配置管理變得非常困難,F5硬件負載均衡器的單點壓力也越來越大。
3.服務依賴
當進一步發展,服務間依賴關系變得錯蹤復雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關系。
4.服務擴容
接著,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什么時候該加機器?等等……

dubbo官方推薦利用zookeeper來當做服務注冊中心,至于zookeeper的特性及應用場景在另外一篇文章中也有提到,這次利用zookeeper的windows版本進行dubbo的入門學習。zookeeper的windows版本安裝比較簡單,主要可以分為三步。
1、下載zookeeper安裝包進行解壓。
2、到解壓目錄的conf下面復制zoo_sample.cfg為zoo.cfg。修改zoo.cfg包括端口、數據路徑(dataDir)、數據日志路徑(dataLogDir)
3、運行bin下面的zkServer.cmd即可。

dubbo-helloworld 工程
縮寫的dubbo-helloworld工程結構如下圖:
dubbo入門

    在api工程里面定義接口
package org.hzg.dubbo.api.service;
/**
 * Created by hzg on 2019/3/13
 */
public interface DubboHelloworldApi {
    //接口
    public void helloWorldInterface();
}

在service工程里面實現接口

package org.hzg.dubbo.service.service.impl;
import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.stereotype.Service;
/**
 * Created by hzg on 2019/3/15
 */
@Service("helloWorldImpl")
public class DubboHelloWorldApiImpl implements DubboHelloworldApi {
    @Override
    public void helloWorldInterface() {
        System.out.println("調用成功。。。。。。。。。。。。。。。。。。。。。。。。。。。。");
    }
}

在service工程里面進行zookeeper相關配置

    <!-- 為當前服務提供者取個名字,并且提供給注冊中心 -->
    <dubbo:application name="dubbo-helloworld-service"></dubbo:application>
    <!-- 注冊中心的配置,使用zk暴露服務 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
    <!-- 定義暴露服務的端口號 -->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!-- 暴露具體的服務接口 -->
    <dubbo:service retries="3" interface="org.hzg.dubbo.api.service.DubboHelloworldApi"
        ref="helloWorldImpl"></dubbo:service>

在web工程里面進行zookeeper配置

<!-- 為當前服務提供者取個名字,并且提供給注冊中心 -->
    <dubbo:application name="dubbo-helloworld-web"></dubbo:application>

    <!-- 注冊中心的配置,用于消費者的監聽 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>

    <!-- 監聽服務,通過注冊中心去進行查找,查找到后進行服務調用 -->
    <dubbo:reference id="dubboHelloworldApi" interface="org.hzg.dubbo.api.service.DubboHelloworldApi"
        retries="3" check="false" init="true"></dubbo:reference>

web工程里面的controller

package org.hzg.dubbo.web.controller;
import org.hzg.dubbo.web.service.HelloWorldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * Created by hzg on 2019/3/15
 */
@Controller
public class HelloWorldController {
    @Autowired
    private HelloWorldService helloWorldService;
    @RequestMapping("/index")
    public String index() {
        return "index";
    }
    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello() {
        return "hello";
    }
    @RequestMapping("/helloDubbo")
    @ResponseBody
    public String sayHelloDubbo() {
        helloWorldService.dubboHelloWorld();
        return "this is the first step";
    }
}

web工程里面的service

package org.hzg.dubbo.web.service;

import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created by hzg on 2019/3/15
 */
@Service
public class HelloWorldService {
    @Autowired
    private DubboHelloworldApi dubboHelloworldApi;   //這里就是api里面定義的接口
    public void dubboHelloWorld() {
        dubboHelloworldApi.helloWorldInterface();
    }
}

以上都是一些主要的配置,至于pom文件,tomcat,spring等配置,這里不再贅述,接下來,看效果:
1、啟動zookeeper
dubbo入門

2、啟動service服務(可以看到啟動成功和一些注冊成功的服務信息)
dubbo入門

3、啟動消費者,即web工程
dubbo入門

訪問:127.0.0.1:8080/helloDubbo
dubbo入門

可以看到服務提供方的日志打印
dubbo入門

向AI問一下細節

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

AI

航空| 东乌| 遂平县| 昌江| 会宁县| 临湘市| 开封县| 宁河县| 漳平市| 白河县| 定结县| 饶河县| 乌拉特前旗| 肃北| 利辛县| 车致| 晋宁县| 淮阳县| 庆元县| 阿克苏市| 南通市| 宜良县| 建平县| 绥宁县| 五台县| 修武县| 峨眉山市| 商丘市| 理塘县| 昌图县| 曲阜市| 林西县| 常熟市| 内丘县| 定襄县| 图木舒克市| 彝良县| 平原县| 汝阳县| 武川县| 镇康县|