- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向服务体系结构的分布式系统程序框架的设计与实现.doc
面向服务体系结构的分布式系统程序框架的设计与实现 摘要:基于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会自动注册服务名、创建服务监控程序、根据
文档评论(0)