一.服务框架
服务框架基于业务对应用SaaS分发模式的服务进行整合,以产生新的应用,其具有如下的特点:
ü 它是面向特定领域的可复用软件集成平台;
ü 反映了该领域应用的一般需求和结构;
ü 具有部分实现的特性,包括一组与业务功能的整合密切相关、相互协作的组件;
ü 服务框架中,与业务相关,但与业务功能的整合无关的组件以外部服务形式引入。
ü 基于服务框架开发应用是通过扩展和复用外部服务实现的。
分布式服务框架是面向服务架构的基石,是解耦子系统的利刃。核心实现是RPC(远程过程调用),但又不仅限于RPC,因为一个系统的高效、稳定、可靠的运行还需要依赖于服务管理发现、服务部署运行监控跟踪等辅助系统的支撑。在一个大型系统中,服务化之后服务的可维护、可管理、可监控以及高可用、负载均衡等因素同服务本身同样重要,这一点业内已经形成了共识。
目前公司内部主要使用的是Thriftpool以及Hedwig,除此之外,业内知名的几个服务框架还包括:
- Finagle -- Twitter开发并开源,专为JVM设计的一个可扩展的RPC系统,其核心的组件包括Future、Service以及Filter;
- Dubbo -- 阿里开发贡献的一个开源项目,是一个高性能分布式服务框架,它主要由三个核心部分组成:Remoting:提供远程调用的网络通信框架;集群:抽象出具有负载均衡、故障转移等集群能力;注册中心:一个服务注册框架,提供服务事件的发布订阅
- Sofa-PBRPC -- 是一个轻量级的,基于Protobuf实现的一个RPC框架,由百度开发并开源,仅支持C++
- Motan -- 新浪微博的RPC框架,序列化接口可扩展、具有集群方案,不开源
- Poppy -- 腾讯基于Protocol Buffer的网络通信解决方案,除了RPC方式的编程接口之外,也具有集群方案,支持服务监控、调试、在线profiling等辅助功能,不开源
二.软件框架
软件框架(Software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。