国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向服務(wù)體系結(jié)構(gòu)的分布式系統(tǒng)程序框架的設(shè)計(jì)與實(shí)現(xiàn)

2016-05-19 14:11:24牛倩
電腦知識(shí)與技術(shù) 2016年8期
關(guān)鍵詞:分布式

牛倩

摘要:基于Scala語言設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)框架。該框架適用于面向服務(wù)體系結(jié)構(gòu)的分布式系統(tǒng)快速搭建基于Scala和Java的服務(wù)。通過該框架搭建的服務(wù)程序,可以通過服務(wù)名訪問服務(wù)、自動(dòng)記錄日志信息、通過瀏覽器查看服務(wù)的狀態(tài)和統(tǒng)計(jì)信息、自動(dòng)負(fù)載均衡、自動(dòng)加載配置文件。

關(guān)鍵詞:面向服務(wù)體系結(jié)構(gòu);分布式;服務(wù)程序框架;Scala;Thrift;Zookeeper

中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)08-0079-02

1 概述

面向服務(wù)的體系結(jié)構(gòu)(即SOA,Service-Oriented Architecture)是一類分布式系統(tǒng)的體系結(jié)構(gòu),是構(gòu)造分布式系統(tǒng)中應(yīng)用程序的方法[1]。SOA作為一個(gè)技術(shù)架構(gòu),決定了不依賴某個(gè)特定的技術(shù)和平臺(tái)環(huán)境來實(shí)現(xiàn)[2]。應(yīng)用系統(tǒng)SOA架構(gòu)建設(shè)的必要性體現(xiàn)在三個(gè)方面:1)解決應(yīng)用系統(tǒng)信息孤島問題;2)解決應(yīng)用系統(tǒng)緊耦合問題;3)解決應(yīng)用系統(tǒng)資源復(fù)用低問題[3]。本文將為面向服務(wù)體系結(jié)構(gòu)的分布式系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)一個(gè)可以快速搭建服務(wù)的框架,從而把更多的經(jīng)歷集中在服務(wù)本身的功能上。使基于該框架的服務(wù)可以支持通過服務(wù)名訪問服務(wù)、跨程序語言的RPC、服務(wù)負(fù)載均衡、服務(wù)日志記錄、服務(wù)配置信息自動(dòng)加載等功能。

2 相關(guān)技術(shù)簡介

2.1 Thrift

Thrift是Facebook實(shí)現(xiàn)的一種高效的、支持多種編程語言的遠(yuǎn)程服務(wù)調(diào)用的框架[4]。它結(jié)合了功能強(qiáng)大的軟件堆棧和代碼生成引擎,通過定義一個(gè)簡單的定義文件中的數(shù)據(jù)類型和服務(wù)接口,以作為輸入文件,編譯器就可以生成代碼用來方便地生成RPC客戶端和服務(wù)器通信的無縫跨編程語言。

2.2 Zookeeper

ZooKeeper是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等[5]。

2.3 Scala

Scala是一種可伸縮式編程語言。它有以下幾個(gè)優(yōu)點(diǎn)[6]:1)與Java無縫兼容;2)支持類型推理;3)良好的并發(fā)性和分布式操作機(jī)制和性能;4)更靈活的更多樣的模式匹配機(jī)制;5)完全的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,函數(shù)也是對(duì)象,可以在程序的任何地方使用函數(shù),甚至把函數(shù)傳遞到任何地方。已經(jīng)有很多公司在使用Scala語言來開發(fā)分布式系統(tǒng),包括Twitter、LinkedIn、Intel等等[7]

2.4 Ostrich

Ostrich是Twitter用于監(jiān)控服務(wù)器性能的一個(gè)Scala庫,主要功能是收集、展示統(tǒng)計(jì)信息,同時(shí)也提供了關(guān)閉服務(wù)器、重新加載配置、監(jiān)測服務(wù)器有效性等簡易控制功能,以及獲取線程、GC以及Profile等調(diào)試和性能信息[8]。通過這個(gè)框架可以很方便地觀測到系統(tǒng)內(nèi)各個(gè)服務(wù)的狀態(tài)及統(tǒng)計(jì)信息。

3 需求分析

本框架的主要目的是實(shí)現(xiàn)系統(tǒng)內(nèi)服務(wù)啟動(dòng)關(guān)閉時(shí)的一系列任務(wù)管理。這樣,使用本框架,開發(fā)者就可以很便捷的搭建一個(gè)服務(wù)器,然后把主要經(jīng)歷放在服務(wù)本身的功能上。為了達(dá)到這一目的,我們的框架包括以下功能:

1)自動(dòng)加載Config文件;規(guī)定統(tǒng)一文件格式(Scala Class)

2)利用Zookeeper的域名服務(wù)功能自動(dòng)管理系統(tǒng)中的服務(wù)。通過服務(wù)的名字來訪問服務(wù)集群,而不是Host+IP的形式訪問單個(gè)服務(wù).

3)通過指定Thrift文件來自動(dòng)創(chuàng)建Thrift服務(wù)端;并創(chuàng)建基于B\S架構(gòu)管理服務(wù)用來記錄統(tǒng)計(jì)信息和服務(wù)的狀態(tài)。

4)通過指定Thrift文件來自動(dòng)創(chuàng)建Thrift客戶端。

5)支持可選擇的服務(wù)端負(fù)載均衡策略;包括通過服務(wù)名字隨機(jī)訪問和通過服務(wù)名字訪問指定序號(hào)的服務(wù)。

6)通過代理技術(shù),實(shí)現(xiàn)對(duì)接口的自動(dòng)記錄日接口訪問信息的功能。并且可以配置記錄日志的詳細(xì)程度。

7)通過代理技術(shù),實(shí)現(xiàn)對(duì)異常的統(tǒng)一處理,并且支持可配置的異常處理策略。

8)支持自動(dòng)調(diào)用以上功能的接口,使用戶可以只通過Thrift文件、Config文件即可簡單的通過一個(gè)方法就可以啟動(dòng)服務(wù)。

4 設(shè)計(jì)與實(shí)現(xiàn)

本框架一共設(shè)計(jì)并實(shí)現(xiàn)了11個(gè)類。各類的名字功能及關(guān)系,見表1。

由于篇幅有限,本文只列出EasyThriftServiceBuilder和EasyThriftClientBuilder中的類的參數(shù)表(見代碼1)和EasyThriftServiceBuilder.build函數(shù)的實(shí)現(xiàn)方法(代碼2)。

代碼2是EasyThriftServiceBuilder中build函數(shù)的實(shí)現(xiàn)。Build函數(shù)主要做了下面的工作:1)設(shè)置Service的代理(addProxySupport);2)根據(jù)配置文件創(chuàng)建Thrift Service(TThreadPoolServer);3)創(chuàng)建EasyThriftService。EasyThriftService會(huì)自動(dòng)注冊服務(wù)名、創(chuàng)建服務(wù)監(jiān)控程序、根據(jù)config文件設(shè)置負(fù)載均衡、根據(jù)config文件記錄log信息等功能。

5 測試與驗(yàn)證

首先我們定義了簡單的Thrift文件test.thrift和Config文件testConfig.scala。調(diào)用EasyThriftServiceBuilder.build函數(shù)創(chuàng)建服務(wù)端和調(diào)用EasyThriftClientBuilder.build函數(shù)創(chuàng)建客戶端。并測試了客戶端和服務(wù)端的基于服務(wù)名的訪問。一切正常,滿足需求規(guī)格說明。隨后將該框架應(yīng)用于基于Scala語言的面向服務(wù)的分布式的系統(tǒng)內(nèi)的服務(wù)上,運(yùn)行良好,達(dá)到預(yù)期目標(biāo)。

6 結(jié)論

本文描述了為面向服務(wù)的分布系統(tǒng)設(shè)計(jì)了一種服務(wù)框架,并基于Scala語言實(shí)現(xiàn)了支持跨語言的該服務(wù)框架。利用該框架,用戶可以便捷的創(chuàng)建基于服務(wù)名訪問的Thrift服務(wù)器和客戶端。并且通過瀏覽器觀測服務(wù)的狀態(tài)和統(tǒng)計(jì)信息。

參考文獻(xiàn):

[1] Papazoglou M P. Service-Oriented Computing: Concepts, Characteristics and Directions[J]. Web Information Systems Engineering. wise .proceedings of the Fourth International Confer, 2003.

[2] 中國知網(wǎng). 面向服務(wù)的架構(gòu)[EB/OL]. http://epub.cnki.net/kns/brief/default_result.aspx.

[3] 黃嘉東, 徐兵元, 葉向陽. 企業(yè)級(jí)應(yīng)用系統(tǒng)SOA架構(gòu)建設(shè)研究與實(shí)踐[J]. 中國高新技術(shù)企業(yè), 2016(2).

[4] Apache. Apache Thrift-Home[EB/OL]. http://thrift.apache.org/.

[5] Apache. Apache Zookeeper-Home[EB/OL]. http://zookeeper.apache.org/.

[6] ?cole Polytechnique Fédérale de Lausanne(EPFL). The Scala Programming Language[EB/OL]. http://www.scala-lang.org/.

[7] ?cole Polytechnique Fédérale de Lausanne(EPFL). WHAT IS SCALA?[ EB/OL]. http://www.scala-lang.org/what-is-scala.html.

[8] Twitter. Ostrich [EB/OL]. https://github.com/twitter/ostrich.

猜你喜歡
分布式
基于RTDS的分布式光伏并網(wǎng)建模研究
湖南電力(2022年3期)2022-07-07 08:56:58
光伏:從嚴(yán)控制發(fā)展規(guī)模 分布式限定10GW
能源(2018年5期)2018-06-15 08:55:58
分布式光伏發(fā)展的四大矛盾
能源(2017年7期)2018-01-19 05:05:03
分布式光伏熱錢洶涌
能源(2017年10期)2017-12-20 05:54:07
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
分布式光伏:爆發(fā)還是徘徊
能源(2017年5期)2017-07-06 09:25:54
基于點(diǎn)估計(jì)法的分布式電源的配置優(yōu)化
一種用于微電網(wǎng)分布式發(fā)電的新型Buck-Boost逆變器
基于DDS的分布式三維協(xié)同仿真研究
西門子 分布式I/O Simatic ET 200AL
元阳县| 安仁县| 乌鲁木齐县| 祁阳县| 东阳市| 新民市| 广南县| 东乌珠穆沁旗| 库尔勒市| 宿松县| 天等县| 博野县| 福州市| 炎陵县| 江川县| 格尔木市| 阜平县| 甘德县| 尼勒克县| 新余市| 龙口市| 河西区| 盈江县| 龙南县| 玛曲县| 谷城县| 页游| 韩城市| 栾川县| 潞城市| 桑植县| 三门县| 美姑县| 南和县| 丰镇市| 红安县| 碌曲县| 岳普湖县| 伊宁市| 台北市| 离岛区|