面向服务体系结构的分布式系统程序框架的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mengyangshizamao
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于Scala语言设计并实现了一个框架。该框架适用于面向服务体系结构的分布式系统快速搭建基于Scala和Java的服务。通过该框架搭建的服务程序,可以通过服务名访问服务、自动记录日志信息、通过浏览器查看服务的状态和统计信息、自动负载均衡、自动加载配置文件。
  关键词:面向服务体系结构;分布式;服务程序框架;Scala;Thrift;Zookeeper
  中图分类号:TP39 文献标识码:A 文章编号:1009-3044(2016)08-0079-02
  1 概述
  面向服务的体系结构(即SOA,Service-Oriented Architecture)是一类分布式系统的体系结构,是构造分布式系统中应用程序的方法[1]。SOA作为一个技术架构,决定了不依赖某个特定的技术和平台环境来实现[2]。应用系统SOA架构建设的必要性体现在三个方面:1)解决应用系统信息孤岛问题;2)解决应用系统紧耦合问题;3)解决应用系统资源复用低问题[3]。本文将为面向服务体系结构的分布式系统设计实现一个可以快速搭建服务的框架,从而把更多的经历集中在服务本身的功能上。使基于该框架的服务可以支持通过服务名访问服务、跨程序语言的RPC、服务负载均衡、服务日志记录、服务配置信息自动加载等功能。
  2 相关技术简介
  2.1 Thrift
  Thrift是Facebook实现的一种高效的、支持多种编程语言的远程服务调用的框架[4]。它结合了功能强大的软件堆栈和代码生成引擎,通过定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器就可以生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。
  2.2 Zookeeper
  ZooKeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等[5]。
  2.3 Scala
  Scala是一种可伸缩式编程语言。它有以下几个优点[6]:1)与Java无缝兼容;2)支持类型推理;3)良好的并发性和分布式操作机制和性能;4)更灵活的更多样的模式匹配机制;5)完全的面向对象程序设计语言,函数也是对象,可以在程序的任何地方使用函数,甚至把函数传递到任何地方。已经有很多公司在使用Scala语言来开发分布式系统,包括Twitter、LinkedIn、Intel等等[7]
  2.4 Ostrich
  Ostrich是Twitter用于监控服务器性能的一个Scala库,主要功能是收集、展示统计信息,同时也提供了关闭服务器、重新加载配置、监测服务器有效性等简易控制功能,以及获取线程、GC以及Profile等调试和性能信息[8]。通过这个框架可以很方便地观测到系统内各个服务的状态及统计信息。
  3 需求分析
  本框架的主要目的是实现系统内服务启动关闭时的一系列任务管理。这样,使用本框架,开发者就可以很便捷的搭建一个服务器,然后把主要经历放在服务本身的功能上。为了达到这一目的,我们的框架包括以下功能:
  1)自动加载Config文件;规定统一文件格式(Scala Class)
  2)利用Zookeeper的域名服务功能自动管理系统中的服务。通过服务的名字来访问服务集群,而不是Host IP的形式访问单个服务.
  3)通过指定Thrift文件来自动创建Thrift服务端;并创建基于B\S架构管理服务用来记录统计信息和服务的状态。
  4)通过指定Thrift文件来自动创建Thrift客户端。
  5)支持可选择的服务端负载均衡策略;包括通过服务名字随机访问和通过服务名字访问指定序号的服务。
  6)通过代理技术,实现对接口的自动记录日接口访问信息的功能。并且可以配置记录日志的详细程度。
  7)通过代理技术,实现对异常的统一处理,并且支持可配置的异常处理策略。
  8)支持自动调用以上功能的接口,使用户可以只通过Thrift文件、Config文件即可简单的通过一个方法就可以启动服务。
  4 设计与实现
  本框架一共设计并实现了11个类。各类的名字功能及关系,见表1。
  由于篇幅有限,本文只列出EasyThriftServiceBuilder和EasyThriftClientBuilder中的类的参数表(见代码1)和EasyThriftServiceBuilder.build函数的实现方法(代码2)。
  代码2是EasyThriftServiceBuilder中build函数的实现。Build函数主要做了下面的工作:1)设置Service的代理(addProxySupport);2)根据配置文件创建Thrift Service(TThreadPoolServer);3)创建EasyThriftService。EasyThriftService会自动注册服务名、创建服务监控程序、根据config文件设置负载均衡、根据config文件记录log信息等功能。
  5 测试与验证
  首先我们定义了简单的Thrift文件test.thrift和Config文件testConfig.scala。调用EasyThriftServiceBuilder.build函数创建服务端和调用EasyThriftClientBuilder.build函数创建客户端。并测试了客户端和服务端的基于服务名的访问。一切正常,满足需求规格说明。随后将该框架应用于基于Scala语言的面向服务的分布式的系统内的服务上,运行良好,达到预期目标。
  6 结论
  本文描述了为面向服务的分布系统设计了一种服务框架,并基于Scala语言实现了支持跨语言的该服务框架。利用该框架,用户可以便捷的创建基于服务名访问的Thrift服务器和客户端。并且通过浏览器观测服务的状态和统计信息。
  参考文献:
  [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] 中国知网. 面向服务的架构[EB/OL]. http://epub.cnki.net/kns/brief/default_result.aspx.
  [3] 黄嘉东, 徐兵元, 叶向阳. 企业级应用系统SOA架构建设研究与实践[J]. 中国高新技术企业, 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.
其他文献
青年编辑已逐步成为科技期刊编辑工作中的骨干力量。本文结合科技期刊对编辑的要求,阐述了青年编辑需要从加强职业道德修养、熟练掌握编辑业务技能、不断深化专业科技知识、努
在中外文化交流的新时期,翻译如何助力中国文化和文学走出去成为一个重要命题。在冯友兰《中国哲学简史》与莫言《生死疲劳》的翻译中,存在许多共同的跨文化阐释的成功因素,
健康伦理以健康利益为关注支点,拓展了生命伦理的研究对象、研究内容和价值维度,补充、丰富了其原则内涵,展露出新的生命力。健康伦理是在医学发展新阶段对医学伦理、生命伦理的
20世纪古代白话短篇小说的研究,是以文本和材料的发现为开端,从重视材料的收集、主要作家作品的介绍、侧重于社会认识价值,逐渐发展到从多个角度、运用多种方法,对几乎全部作品进
马克思主义中国化产生了四个理论成果,即毛泽东思想、邓小平理论、'三个代表'重要思想和以人为本、科学发展观、和谐社会等为主要内容的一系列新时期的新思想。正确
高校人才培养对河北省产业结构进行供给侧结构性调整至关重要。将高校人才培养结构与产业需求结构对接起来,以实现培养的人才满足人才市场的结构需求。文章对河北省人才培养和
自中国改革开放、尤其是市场化转型以来,伴随市民社会理念在全球的复兴和拓深,作为一种现代化的路径与目标,市民社会得到了学术界的广泛关注和深入讨论,而和谐社会的背景将对
河北南部一带在中国古代曾先后崛起邯郸、邺城、大名等重要城市,这些城市在各自时代都发展为地区乃至北方中心城市。在东汉末年和北周末年两个时期,冀南中心城市先后发生了由邯
往C/C复合材料中加入超高温陶瓷,以满足其在高温有氧环境中的应用。采用高固相含量浆料浸渍结合前驱体浸渍裂解工艺制备C/C-ZrB2-SiC复合材料,研究ZrB2浆料的分散性和流变行
大学生志愿服务活动是践行社会主义核心价值观的有效载体和重要途径。本文通过对大学生参加社会志愿服务活动和践行社会主义核心价值观的情况及存在问题的分析,探索了建立大学