论文部分内容阅读
中国互联网信息中心的统计报告显示,截至2015年7月,中国的网站数量达357万,网民人数为6.68亿。在这个背景下,大型互联网企业的站点与无线应用呈现出丰富的多样性,每天承接巨大的访问量。这样的场景驱使互联网公司在技术上从垂直应用架构向服务化架构升级,各个领域的服务聚合为若干服务中心,为不同的产品快速搭建起应用层提供支持,同时服务中心本身具有可伸缩性。研究与实现一款基于Java平台的分布式RPC(远程过程调用)框架即是为服务化架构的实施提供所需的中间件,它将提供透明与高效的点对点RPC功能,以及一系列有助于提升系统可用性,降低维护成本的服务治理功能。研究的过程分为两个阶段。在第一阶段中,对于点对点RPC和服务治理这两项核心功能的相关理论进行了研究,包括前一项功能涉及的RPC访问协议、服务代理、序列化、通信模型,后一项功能涉及的服务注册中心、服务监控、集群与负载均衡、容错机制。在第二阶段中,对于业界的两款典型产品Hessian和Thrift进行了研究与分析,学习它们在RPC功能方面的设计思想和实践经验,并对它们欠缺服务治理功能所造成的问题有了清晰的认识。框架的设计实现过程分为三个阶段,采用自上而下的设计范式。首先,完成RPC框架的总体设计,包括组件与层次结构的划分,以及框架内通用机制的设计;其次,分别实现负责点对点RPC功能的服务提供者与服务消费者组件,以及负责服务治理功能的注册中心与监控中心组件;最后,制定功能与性能测试用例,对框架进行全面的验证。经过功能测试的验证,本款分布式RPC框架支持开发者以配置的方式透明地开发、集成远程服务。同时,框架通过注册中心为服务提供者、服务消费者提供了自动注册与发现、集群与负载均衡,以及容错功能,开发者可以使用监控中心获取服务调用的统计数据。相较于业界现有的同类产品,本款框架的主要优化包括采用了自定义的RPC协议和序列化协议以提高性能,运用扩展点机制、过滤链机制实现了框架的模块化,通过软负载均衡和协议适配技术减少了远程调用路径的中间节点,提升了可用性。性能测试的结果表明,在使用自定义对象作为服务的输入输出参数的测试用例中,本款框架的平均响应时间相比Web Services架构缩短85%,吞吐率达到其10倍。在传统企业中,实施服务化架构的主要目的是整合异构系统,而互联网企业实施服务化架构则更注重各个业务领域的服务中心化,开发迭代效率的提升,以及中间件自身的性能与可用性。本款分布式RPC框架在生产环境中的表现证明了它能够满足互联网企业的需求,它接入了2000个以上的应用,日均调用量超过20亿次,年度可用率达到99.99%。本款框架基于Java平台实现,没有提供其他编程语言的实现,其原因是所属互联网企业配备有技术研发团队,Java是其业务应用研发的主流平台。如果需要在其他开发平台,或是异构系统中集成本款框架,则需实现相应平台的服务提供者和服务消费者组件。注册中心和监控中心组件具有平台无关性,可以直接使用。