文档章节

分布式服务框架

郭恩洲_OSC博客
 郭恩洲_OSC博客
发布于 2015/09/11 15:26
字数 1294
阅读 1626
收藏 29

转公司wiki博客.

       分布式服务框架是面向服务架构的基石,是解耦子系统的利刃。核心实现是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等辅助功能,不开源

      新浪的Motan和腾讯的Poppy均不开源,其功能特性只能从相关简介中略知一二,所以本文不打算进行深入分析。其他三个均为开源框架,下面就从RPC核心实现、服务管理、部署运行几个方面对比下这五个系统的实现。

服务调用RPC

  通信(Transport)

  • Thriftpool通信层使用原始的Thrift Transport,就Java的实现来说就是使用NIO;
  • Hedwig、Finagle借助于Netty实现底层的通信,其中Finagle是Transport是可扩展的;
  • Dubbo定义了一个抽象的Transport接口,同时也提供了基于Mina、Netty等的实现;
  • Sofa-PBRPC使用的boost ASIO库实现的通信;

  协议(Protocol)

  • Thriftpool:Thrift
  • Hedwig:Thrift、Protobuf...
  • Dubbo:Dubbo协议、Hessian等,可扩展
  • Finagle:Thrift等,很容易扩展实现
  • Sofa-PBRPC:Protobuf

  服务(Service)

  • 同步/异步:支持同步是每个框架的基本功能,这里主要是指异步的支持
    • Thriftpool借助于Thrift的实现支持异步
    • Hedwig:依赖于协议的实现,Thrif协议支持,Protobuf不支持
    • Dubbo:
    • Finagle天生异步(其最关键的一个组件就是Future)
    • Sofa-PBRPC支持异步
  • 跨语言支持
    • Thriftpool:支持Thrift支持的语言,但只有Java有连接池容错支持
    • Hedwig:
    • Dubbo:仅支持Java
    • Finagle:支持Scala、Java等JVM语言
    • Sofa-PBRPC:C++

服务集群管理

       Sofa-PBRPC仅仅是个RPC框架,基本上没有太多的服务管理功能,所以本节不对其进行比较。

  • 注册与服务发现
    • Thriftpool、Hedwig、Dubbo、Finagle都支持服务的注册及客户端的服务自动发现,基本上都是基于Zookeeper作为主要实现方式,有些还提供其他的服务发现方式比如Dubbo通过广播的方式等
  • 故障转移、负载均衡
    • Thriftpool、Hedwig、Dubbo、Finagle这些框架都具有服务集中注册的功能,所以也很自然地实现负载均衡与故障转移的功能,而且实现都是可以扩展的。
  • 监控
    • Finagle通过zipin
  • 服务依赖关系管理
    • 只有Dubbo的用户文档中特意强调了服务的依赖关系管理,其他的框架均未提到这一点,
  • 服务配置部署与运行
    • 支持Spring配置使用
    • 资源隔离(Docker),弹性伸缩:均未有实现

其他

  • 分布式事务:Dubbo中有一个不成熟的实现

总结

      通过以上对比,这些分布式服务框架至少包括以下功能:

  1. 丰富的客户端特性支持 - 异步、连接池、多协议支持、规避策略等
  2. 完整的集群方案 - 服务发现、负载均衡等
  3. 服务注册管理 - 一般均使用Zookeeper作为服务注册管理组件,
  4. 完善的监控措施 - 宏观上,可以通过统一的监控平台整体运行状况;微观上,可以像本地函数profiling一样,分析一个函数调用的分步耗时。

     以上这几点,基本上成是一个成熟分布式服务框架所必需的特性。

© 著作权归作者所有

郭恩洲_OSC博客
粉丝 37
博文 256
码字总数 118046
作品 0
徐汇
高级程序员
私信 提问
OSC 第 113 期高手问答 -- 分布式服务框架

OSCHINA 本期高手问答(3月22日-3月28日) 我们请来了 @Nettying (李林锋)为大家解答关于分布式服务框架方面的问题。 @Nettying(李林锋),现任华为PaaS平台架构师,8年Java NIO通信框架、平...

开源中国股侠
2016/03/22
10.9K
62
应用服务架构演变史&&SOA架构&&Dubbox分布式服务架构原理与部署

SOA架构 SOA是Service-Oriented Architecture 是一种面向服务的分布式架构的治理系统确保架构有条不絮的演进. 1.应用服务架构的演变史 ORM单一应用架构:最开始数据量很小,系统中的所用的模块...

优云
2018/11/26
0
0
民生银行核心分布式改造实践分享

摘要:在没有分布式技术之前,国内银行的核心系统面临着很多挑战。以民生银行为例,2013年的时候每天交易量约1800万笔,整个项目的硬件和运维投入达到1.1亿多,成本非常高昂。中国民生银行总...

黄小凡
2018/06/25
0
0
分布式模块化 Java 开发平台--Castle-Platform

Castle-Platform是一个分布式、模块化的开发平台,目标是打造高性能、高扩展性的开发平台,完成通用的管理功能。采用了后台管理集中部署,会员业务系统可分离部署等特点,可独立区分后台管理...

tunsi
2016/10/21
9.4K
6
分布式架构需要哪些技术? Dubbo、zookeeper、KafKa、redis、fastdfs、单点登录sso、springmvc+mybatis+shiro、Restful服务、bootstrap html5 css3

JEESZ是一个大型分布式的面向服务的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。 采用服务化的组件开发模式,可实...

代码潇洒哥
2017/03/25
462
0

没有更多内容

加载失败,请刷新页面

加载更多

启动参数

常用启动参数,通过 -Dxx.yy=zz注入应用参数 -Deureka.instance.metadata-map.starkGroup=test3 -Dserver.port=8989 本地调试过程中,可改变端口来启动多个相同服务。修改启动的VM参数即可...

ZH-JSON
6分钟前
3
0
ES配置修改

查看配置 GET /_cluster/settings 修改配置 PUT /_cluster/settings{ "persistent" : { "xpack" : { "monitoring" : { "collection" : { "enabled" : ......

messud4312
18分钟前
2
0
Spring事务传播属性有那么难吗?看这一篇就够了

Spring事务传播属性有那么难吗?看这一篇就够了 笔者文笔功力尚浅,如有不妥,请慷慨指出,必定感激不尽 学习东西要知行合一,如果只是知道理论而没实践过,那么掌握的也不会特别扎实,估计过...

不学无数的程序员
18分钟前
2
0
VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
43分钟前
4
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
52分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部