微服务框架学习三:服务通讯框架介绍

Pegasus来源于点评的开源框架pigeon:https://github.com/dianping/pigeongit

什么是Pegasus

Pegasus是一个高性能的分布式服务框架,致力于提供RPC远程服务调用方案,并可做为精简版SOA服务治理的方案。实现基本的RPC,路由,负载均衡,容错,统计报表,服务注册订阅功能。github

其核心模块包括如下几类:sql

  • 远程通讯:基于NIO的Socket通讯,"底层异步上层同步" + "请求|响应" 模式的信息交互方式,可支持多种序列化协议。
  • 集群支持:提供服务负载智能感知路由策略(load balance),容错(failover),以及服务集群等支持。
  • 服务注册:实现服务自动/手动注册,服务调用者自感知的pub/sub模型。
  • 监控分析:可插拔的集中式服务调用监控分析中心。
  • 异构支持:提供http交互接口的支持,以便各种异构系统的接入。
  • 调用方式:支持多种服务调用方式,如:sync, future, callback, oneway。

为何须要Pegasus

随着应用规模的不断扩大,传统的垂直应用架构及应用堆砌已没法知足,急需一套分布式服务架构以及配套的服务治理框架,以便推进总体业务架构的演进。
技术架构的演进之路简述:单一应用优化 => 垂直拆分 => 分布式架构 => 分布式服务治理 => 云服务架构数据库

构建一个稳定,高效,容错,易维护,可监控的服务调用框架,以便推进公司业务系统朝着SOA架构演进,从而使总体业务架构更加清晰,可控和可度量,最终实现业务产品的健康,敏捷发展。

单一应用优化:应用做为单一包部署,以部署多台机器和数据库表结构及sql为优化手段。

垂直拆分:单一应用按照业务模块拆分为多个独立的应用,分散流量并各自根据流量进行横向扩展,此时数据库可能也已按照业务拆分开,减少单库的压力。

分布式架构:应用之间存在复杂频繁交互,此时应抽取核心业务造成业务中心,为其余应用提供服务,具体业务应用应尽可能薄,以便可以快速响应业务需求变动。

分布式服务治理:业务交互愈来愈复杂,人为掌控已愈来愈难,此时应该有治理系统专门负责,包括分析业务依赖,监控业务性能,优雅升降级,容量规划等,以监控和提高服务质量,支撑决策分析。

云服务架构:业务脉络继续无限增加,一套敏捷和高质的完整支撑框架变得愈来愈重要,缩短开发上线的生命周期,下降试错成本(快速试错),资源优化调配,灰度发布等等,都须要一套自动化的,全局的资源调配架构。包括iaas,paas及一整套配套的工具和系统支持,如iaas的管理工具接口,paas的配置中心,自动化发布流程及工具,自动化QA系统等等。至关复杂(公有云更甚),须要投入很大的人力与物力,但若成功构建,效果明显。架构

咱们能够在哪里用Pegasus

Pegasus能够应用于内部全部Java系统之间的远程服务调用(或其余语言系统对Java系统的调用),它所提供的高性能﹑智能负载路由﹑容错﹑集群等特性,为打造快速﹑稳定﹑可靠的服务提供了技术保障,也为推动SOA化提供了基础平台支持。负载均衡

Pegasus的性能

Pegasus采用NIO方式传输二进制流数据,并采用长链接方式减小握手,比通常的http短链接协议(如soap)更快,从而提升业务吞吐量。另外经过智能的全局负载均衡策略,可以更加合理的调配资源,从而提升总体性能。框架

Pegasus VS Other RPC

Pegasus调用方式

 

 Pegasus类图

Pegasus协做图

Pegasus如何保持高性能

  1. pegasus经过不断的心跳检测,判断服务提供者是否正常服务,一旦与服务提供者的链接中断,或者连续几回心跳没有反馈(如虚拟机假死,但socket链接仍创建),那么就认为该服务提供者出现了异常,会自动将该提供者从客户端的可用列表中摘除,后续的请求将再也不派发给该异常服务端,保证全部的请求都能被正确处理,从而达到高可用。而一旦该提供者恢复正常(如重启后),那么客户端重连任务会自动探测到它,并从新将其加入到可用列表中,接收并处理新的请求。
  2. 由于心跳检测有时间间隔,在间隔期若是某个服务提供者的链接中断,此时若是有请求发往该提供者会出现异常,此时咱们会将该请求发往其余可用的提供者,即重试一次,因为这种状况几率很低,加上重试时又会碰到重试的提供者也瞬间中断的概率几乎为0,因此彻底确保了请求会被发送到可用的服务提供者。
相关文章
相关标签/搜索