Pegasus学习三:服务通信框架介绍

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

什么是Pegasus

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

其核心模块包括以下几类:

  • 远程通信:基于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,所以完全确保了请求会被发送到可用的服务提供者。

原文地址:https://www.cnblogs.com/fxl-njfu/p/10120332.html

时间: 2024-10-08 04:27:34

Pegasus学习三:服务通信框架介绍的相关文章

ZigBee学习三 UART通信

ZigBee学习三 UART通信 本实验只对coordinator.c文件进行改动就可以实现串口的收发. 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique message ID (counter) afAddrType_t GenericApp_DstAddr; unsigned char uartbuf[128];/**************************************************

Hadoop学习系列(2.Hadoop框架介绍与搜索技术体系介绍)

第一天 2.Hadoop框架介绍与搜索技术体系介绍 1. 大数据典型特性与分布式开发难点 2. Hadoop框架介绍与搜索技术体系介绍 3. Hadoop版本与特性介绍 4. Hadoop核心模块之HDFS分布式文件系统架构介绍 5. Hadoop核心模块之Yarn操作系统架构介绍 6. Linux安全禁用设置与JDK安装讲解 7. Hadoop伪分布式环境部署HDFS部分 8. Hadoop伪分布式环境部署Yarn和MR部分 9. Hadoop环境使用常见的错误集合 10. Hadoop环境常

spring cloud深入学习(三)-----服务消费

在上一篇博文中简单实现了eureka-server以及eureka-provider,后面会实现eureka-cosumer,现在针对eureka做进一步的详解. 微服务整体架构 文字再美也没有图片直观,下面通过一张图来说明微服务的整体架构以及调用过程,如下: 服务注册中心-1和服务注册中心-2互相组成了高可用集群:服务提供者启动了两个实例,一个注册到服务注册中心-1上,另外一个注册到服务注册中心-2上:两个服务消费者,也都分别指向了一个注册中心. 服务提供者 1.服务注册 服务提供者在启动的时

Solr相似度算法三:DRFSimilarity框架介绍

地址:http://terrier.org/docs/v3.5/dfr_description.html The Divergence from Randomness (DFR) paradigm is a generalisation of one of the very first models of Information Retrieval, Harter's 2-Poisson indexing-model [1]. The 2-Poisson model is based on th

es学习(三):分词器介绍以及中文分词器ik的安装与使用

什么是分词 把文本转换为一个个的单词,分词称之为analysis.es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体. 示例 POST http://192.168.247.8:9200/_analyze { "analyzer":"standard", "text":"good good study" } # 返回 { "tokens": [ { "token":

成熟的C#网络通信框架介绍——ESFramework通信框架

ESFramework通信框架是一套性能卓越.稳定可靠.强大易用的跨平台C#网络通信框架,支持应用服务器集群.其内置了消息的收发与自定义处理(支持同步/异步模型).消息广播.P2P通道.文件传送(支持断点续传).心跳检测.断线重连.登录验证.在线用户管理.好友与群组管理.性能诊断等功能.基于ESFramework通信框架,您可以方便快捷地开发出各种优秀的网络通信应用.此外,我们在长期实践中所积累的丰富经验,更将成为您强大的技术保障,从开发到上线直至后续运维,全程为您保驾护航,让您高枕无忧.具体而

Struts2框架学习(三) 数据处理

Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:ValueStack一种数据结构,操作数据的方式为:先进后出 OGNL : Object-GraphNavigation Language(对象图形导航语言)将多个对象的关系使用一种树形的结构展现出来,更像一个图形,那么如果需要对树形结构的节点数据进行操作,那么可以使用 对象.属性 的方式进行操作,OGNL技

OHSCE 教程:高可靠性的 PHP 通信框架

OHSCE高可靠性的PHP通信框架. PHP以太网(TCP/UDP/ICMP).RS232.RS485通信,可广泛直接或桥接各种网络工程通信. 特别合适于对可靠性要求较高.上位机与末端协同工作的场景.如物联网设备通信.智能化系统.工业与自动化系统.可靠网络服务器. 可运行于Windows.Linux.OS X(基础教程qkxue.net).对Windows提供了全项功能支持,与自动化生态亲和. 不过分追求高性能,充分平衡了可靠性与高性能. 天生支持分布式,可大规模部署. 在保证您的网络可靠性的前

RPC通信框架——RCF介绍(替换COM)

阅读目录 RPC通信框架 为什么选择RCF 简单的性能测试 参考资料 总结 现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. 在对大量框架进行调研后,决定使用RCF替换COM接口. 回到顶部 RPC通信框架 CORBA ICE Thrift zeromq dbus RCF YAMI4 TAO 回到顶部 为什么选择RCF 经过各项对比,认为: RCF