1. 程式人生 > >基於zookeeper的dubbo配置

基於zookeeper的dubbo配置

摘要:
Dubbo 是阿里巴巴公司開源的一個高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫整合。

Dubbo誕生的背景:
隨著網際網路的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分散式服務架構以及流動計算架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。

  • 單一應用架構
    • 當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
    • 此時,用於簡化增刪改查工作量的 資料訪問框架(ORM) 是關鍵。
  • 垂直應用架構
    • 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。
    • 此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。
  • 分散式服務架構
    • 當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
    • 此時,用於提高業務複用及整合的 分散式服務框架(RPC) 是關鍵。
  • 流動計算架構
    • 當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。
    • 此時,用於提高機器利用率的 資源排程和治理中心(SOA) 是關鍵。
下面介紹一下dubbo的配置過程:

第一步 在spring官網下載一個spring比較全的包。 我用的還是以前的3.2版本。

第二步 新建一個web專案。將spring的包放在lib下面。

第三步 在dubbo.io官網的版本庫下載dubbo的jar包。

第四步 在Apache的官網下載zookeeper的專案。 zookeeper的安裝方法在上篇文章講過了。拿出zookeeper根目錄下面的zookeeper.jar就可以。

附加一些jar 工程下面有的 可以無視。slf4j-api-1.7.5.jar,slf4j-log4j12-1.7.5.jar,netty-3.7.0.Final.jar,jetty-util-6.1.26.jar,jetty-6.1.26.jar,commons-cli-1.2.jar 這些jar在zookeeper3.5的lib下面都有。直接拷貝就可以。

還有一個就是zkclient-0.1.0.jar 一定要下載I0Itec的,這個應該不是zk開發的。

新建一個介面:
package com.unj.dubbotest.provider;
public abstract interface DemoService {
 
 public abstract String build(String name) throws Exception;
 
}

新建一個實現類:
package com.unj.dubbotest.provider.impl;
import com.unj.dubbotest.provider.DemoService;
public class DemoServiceImpl implements DemoService {
 public String build(String name) throws Exception {
  System.out.println("name is === " + name);
  return "你好 名稱是 ------------- >>>> " + name;
 }
}

在src下面新建一個applicationContext.xml 內容如下:
<?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://code.alibabatech.com/schema/dubbo"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">
 <!-- 具體的實現bean -->
 <bean id="demoService"
  class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />
 <!-- 提供方應用資訊,用於計算依賴關係 -->
 <dubbo:application name="xixi_provider" />
 <!-- 使用multicast廣播註冊中心暴露服務地址 
  <dubbo:registry address="multicast://224.5.6.7:1234" />-->
 <!-- 使用zookeeper註冊中心暴露服務地址 -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 <!-- 用dubbo協議在20880埠暴露服務 -->
 <dubbo:protocol name="dubbo" port="20880" />
 <!-- 宣告需要暴露的服務介面 -->
 <dubbo:service interface="com.unj.dubbotest.provider.DemoService"
  ref="demoService" />
</beans>

最後寫一個啟動服務的類:
package com.unj.dubbotest.provider;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
 
    public static void main(String[] args) throws Exception {
     
     ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
        context.start();
 
        System.out.println("CSDN部落格:DubboTest");
        
        System.in.read(); // 按任意鍵退出
    }
 
}

啟動zookeeper。在執行啟動服務的類 控制檯列印瞭如下資訊:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
CSDN部落格:

說明啟動成功了。

下面在做客戶端。同意 新建一個web專案 把服務端的jar全部拷貝到lib下面去。

新建一個介面 包名和服務端一樣 這邊介面 其實要在伺服器那邊拿過來的。

package com.unj.dubbotest.provider;
public abstract interface DemoService {
 
 public abstract String build(String name) throws Exception;
 
}

在src下面新建一個 applicationConsumer.xml檔案。內容如下:
<?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://code.alibabatech.com/schema/dubbo"
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://code.alibabatech.com/schema/dubbo  
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
        ">
 <!-- consumer application name -->
 <dubbo:application name="consumer-of-helloworld-app" />
 <!-- registry address, used for consumer to discover services -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 <dubbo:consumer timeout="5000" />
 <!-- which service to consume? -->
 <dubbo:reference id="demoService"
  interface="com.unj.dubbotest.provider.DemoService" />
</beans>

新建一個main類來測試:
package com;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.unj.dubbotest.provider.DemoService;
public class Main {
 
 public static void main(String[] args) {
  
  
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] { "applicationConsumer.xml" });
  context.start();
  DemoService demoService = (DemoService) context.getBean("demoService"); // get
  // service
  // invocation
  // proxy
  String hello = "";
  try {
   hello = demoService.build("CSDN部落格:DubboTest");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } // do invoke!
  System.out.println(Thread.currentThread().getName() + " " + hello);
 }
 
}

列印資訊如下:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
main 你好 名稱是 ------------- >>>> CSDN部落格:DubboTest

這就是基於zookeeper的dubbo 配置。

相關推薦

Spring使用Hibernate和再加SpringData時配置的差別基於Java配置

.sh for packages bean java配置 gem springmvc nbsp mod 只使用Spring+Hibernate 配置DataSource、LocalSessionFactoryBean、HibernateTransactionManager

基於JavaConfig配置的攔截器使用

mint obj apt ole 靜態資源 中斷 context 資源 作用   這兩天遇到一個需求:在請求action時,校驗一下簽名的有效性。為了做到統一,在一處地方做校驗而不是分散在各個action裏做,就用到了攔截器。個人覺得spring mvc中的攔截器和asp.

Bean的基於XML配置方式

tro .get int import file span code cto pat 基於XML配置 Beans.xml <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s

使用Spring框架入門一:基於XML配置的IOC/DI的使用

測試結果 plugins rac prepare lombok ray instance private mls 一、Spring框架   1、方法一:逐項導入基礎依賴包:     spring-core、spring-beans、spring-context、s

SpringBoot入門之基於Druid配置Mybatis多數據源

this ssp hide llb 就是 delet exc .sql isp 上一篇了解了Druid進行配置連接池的監控和慢sql處理,這篇了解下使用基於基於Druid配置Mybatis多數據源。SpringBoot默認配置數據庫連接信息時只需設置url等屬性信息就可以了

Spring(八)之基於Java配置

onf 需要 rgs ava poi .com class 解釋 mes 基於 Java 的配置 到目前為止,你已經看到如何使用 XML 配置文件來配置 Spring bean。如果你熟悉使用 XML 配置,那麽我會說,不需要再學習如何進行基於 Java 的配置是,因為你要

Spring(七)之基於註解配置

關於 int ESS schema 控制 div except strong ont 基於註解的配置 從 Spring 2.5 開始就可以使用註解來配置依賴註入。而不是采用 XML 來描述一個 bean 連線,你可以使用相關類,方法或字段聲明的註解,將 bean 配置移動到

Spring 基於xml配置方式的AOP(8)

復制 calc owin img add ann frame proc message 1、ArithmeticCalculator.java 1 package com.proc; 2 3 public interface ArithmeticCalculator

spring cloud (七) Config server基於svn配置

depend pom cli style void version project static sof 1 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://ma

MyBatis入門程序(基於XML配置

img close 基於xml配置 col @override eap rri nsa on() 創建一個簡單的MyBatis入門程序,實現對學生信息的增刪改查功能(基於XML配置) 一、新建一個Java工程,導入MyBatis核心jar包、日誌相關的jar包以及連接Ora

嵌入式ARM平臺基於Linux配置應用程式開機自啟動(fluxbox參考)

本文轉載於 http://www.eefocus.com/toradex/blog/18-01/426601_a6317.html,特此感謝 By Toradex秦海 1). 簡介 嵌入式ARM平臺裝置採用Embedded Linux作業系統

SpringBoot基於@ControllerAdvice配置全域性異常處理

SpringBoot預設全域性異常處理 SpringBoot提供了一個預設的對映:/error,當處理中丟擲異常之後,會轉到請求中處理,並且該請求有一個全域性的錯誤頁面用來展示異常內容。 啟動訪問一個異常的url出現的呈現的頁面情況是這樣的: 但是這樣的頁面我們也覺得不太友好

cors跨域請求問題 關於spring -springmvc -mybatis .基於xml配置方式

1:場景還原     今天要寫一個方法, 需求是  在購物車服務上,  呼叫一個個人中心的方法 ,用到了 跨域請求.      我就在個人中心的 上面寫了個方法, 並在springMVC.xml中,配置了    &

在IoC容器中裝配Bean(基於XML配置

一、Bean的命名 一般情況下,必須為Bean指定id,id必須唯一不能重複,如果使用name屬性,可以重複。也可以使用匿名的bean。強烈建議通過id指定Bean。 <bean name="#car1,123,$car" class="com.smart.simple.C

在IoC容器中裝配Bean(基於註解配置)

一、 基於註釋的配置 1.1 使用註釋定義Bean @Component("userDao") public class UserDao{ ... } //等同於 <bean id="userDao" class="com.smart.dao.UserDao"/&g

JAVA在不基於XML配置檔案的情況下實現郵件傳送功能(郵箱轟炸)

    今天要講的是如何用Java程式碼實現簡單郵件傳送和複雜郵件傳送的功能,這裡我使用的是QQ郵箱,你們也可以嘗試使用其他的郵箱哦~ 想實現郵件傳送功能首先郵箱賬號必須要開啟 SMTP 服務,在網頁登入郵箱後點擊設定→賬戶然後下拉,如圖 &nb

spring事務管理,基於xml配置完成事務回滾;spring中資料庫表中欄位名和pojo中屬性名不一致時候,實現RowMapper介面手動封裝

宣告使用JDK8,spring5.0.7, 測試說明: service 層 宣告介面進行轉賬,從A轉賬B ,然後對AB 進行更新操作,在事務中對find方法開啟 只讀許可權,無法進行更新操作,造成事務回滾進行測試事務; 主要測試方法:* void tra

ubuntu16.04基於python2配置caffe環境

教程:https://www.cnblogs.com/go-better/p/7160615.html 出錯:python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file or directory

mybatis基於xml配置的多表查詢

mybatis多表查詢 表之間的關係有幾種: 一對多 多對一 一對一 多對多 舉例: 使用者和訂單就是一對多 訂單和使用者就是多對一 一個使用者可以下多個訂單 多個訂單屬於同一個使用者 人和身份證號就是一對一 一個人只能有一個身份證號 一個身份證號只能屬於

mybatis基於XML配置的動態SQL語句

mybatis動態SQL語句 mappers配置檔案中的幾個標籤: <if> <where> <foreach> <sql> If標籤 1 . 作用: 當if標籤的test成立時,就把i