1. 程式人生 > >通過dubbo+zookeeper實現服務介面的封裝及呼叫

通過dubbo+zookeeper實現服務介面的封裝及呼叫

1.首先介紹兩個框架:
dubbo:阿里巴巴開源的高效能的優秀服務框架,使得應用可以通過高效能的rpc(遠端呼叫)實現服務的輸出和輸入功能,可以和spring無縫銜接。
zookeeper:用來封裝複雜易出錯的關鍵服務,將簡單易用的介面和效能高效,功能穩定的系統提供給使用者。
下載連結:http://download.csdn.net/download/qq_36938933/10255688
2.應用場景:
生成:日期+時間+四位遞增數字的訂單號;
例如:2018010214280001 2018-01-02 14:28 0001第一個人,沒呼叫一次 +1的業務場景,這是我們就可以把它單獨成服務,別的系統呼叫該介面就可以。
3.與spring整合

  1. 引入jar包
  2. dubbo 2.4.9,zookeeper 3.4.6,zkclient 0.1
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.4.9</version>
    <exclusions>
    <exclusion>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
    </dependency>
    <dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
    </dependency>
  3. 提供者:`
    public interface CreateIDService {

    String getID();
    }

    @Service
    public class CreateIDServiceImpl implements CreateIDService{
    private static long orderNum=0l;
    private static String date ;
    public synchronized String getID() {
    String str = new SimpleDateFormat(“yyMMddHHmm”).format(new Date());
    if(date==null||!date.equals(str.substring(0, 5))){
    date = str;
    }
    orderNum ++;
    long orderNo = Long.parseLong((date)) * 10000;
    orderNo += orderNum;
    System.out.println(orderNo);
    return orderNo+”“;
    }

}
`
4.消費者:

@Controller
@RequestMapping("/c")
public class CreateUserController {

    @Autowired
    private CreateIDService createID;
    /**
     * 生成訂單號
     * @return
     */
    @RequestMapping("/person")
    public String login(){
        try{
            String id=createID.getID();
            system.out.println(id);
        }catch(Exception e){
            e.printStackTrace();
        }
        return "消費者";
    } 

5.dubbo配置檔案

<?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">
    <!-- 提供方應用資訊,用於計算依賴關係 -->
    <dubbo:application name="dubbo_provider" />
    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <!-- <dubbo:registry  address="115.28.93.69:2182" protocol="zookeeper"/> -->
    <!-- 使用zookeeper廣播註冊中心暴露服務地址 -->  
    <dubbo:registry  protocol="zookeeper"  address="127.0.0.1:2181"/>  
    <!-- 用dubbo協議在20880埠暴露服務 -->
    <dubbo:protocol  name="dubbo" port="20881" />
    <!-- 宣告需要暴露的服務介面 (提供者介面)-->  
    <dubbo:service interface="com.waims.examinee.createUser.service.CreateIDService"  
        ref="createIDServiceImpl" />   
    <!-- 和本地bean一樣實現服務 (提供者介面實現類)-->  
    <bean id="createIDServiceImpl" class="com.waims.examinee.createUser.serviceImpl.CreateIDServiceImpl"/>
</beans>

6.applicationContext配置檔案

<import resource="dubbo.xml"/>

以上就是簡單的介面封裝及系統間介面的呼叫,如有問題請私信聯絡,如果認為有所幫助請記得點贊!!!