美团大众点评服务框架Pigeon

服务框架Pigeon架构

? Pigeon提供jar包接入 ,线上运行在tomcat里

? Monitor-CAT ,负责调用链路分析、异常监控告警等

? 配置中心-Lion ,负责一些开关配置读取

? Governor-服务治理门户

? 一个interface定义为一个服务 ,每个服务有一个唯一标识

服务的注册与发现

? 注册信息包括service name、ip、port、group等

? 服务提供方初始化完成后自动注册 ,也可以通过api或管理端注册

? 服务调用方通过service name去发现服务

Registry (Zookeeper)
/DP/SERVER/com.dianping.iphub.IpService
10.66.1.1:5020,10.66.1.2:5020

服务的注销

? 服务地址通过zookeeper持久节点存储 ,避免临时节点的不稳定

? 关闭tomcat时会调用pigeon脚本去注册中心摘除本机服务地址

? 对于残留的无效地址 ,有独立的心跳服务会检测无效的服务地址进行zookeeper删除

? 客户端对于无效的服务地址 ,内部也有心跳检测机制等来保证

编程方式、序列化

? 基于Hessian序列化 ,通过netty实现自定义TCP协议格式 ,开发成本低 ,通过java interface定义服务接口

? 基于Thrift序列化 ,通过netty实现自定义TCP协议格式 ,性能更高 ,开发成本稍高 ,通过定义IDL或annotation方式定义服务接口 ,

更方便接入其他语言 ,thrift会有一些制如方法不支持重载、struct不支持继承等

调用模式

? Sync ,同步等待返回调用

? Future ,可实现并行发出多个请求 ,总耗时是最慢的请求的执行时长 ,推荐方式

? Callback ,发出结果不等待返回 ,结果回调 ,完全异步化

? Oneway ,无需返回结果

客户端心跳

? 心跳线程客户端发起 ,定期发送 ,服务端响应 ,连续5次不成功则在本地路由缓存里摘除该服务端节点 ,摘除后下次尝试重连

客户端负载均衡

? 多种负载均衡策略 ,默认是自适应策略 ,客户端会计算发往每个服务端节点的在途请求数 ,新的请求会优先选择在途请求数最小的节点发送

? 预热控制 ,针对服务端某个刚启动的节点 ,客户端按从慢到快的频率 ,将请求逐步发往这个节点 ,防止服务端刚启动的节点大量请求进来导致大量超时

? 也可自定义负载均衡策略

服务限流

? 可以在服务端对某一个服务接口的某一个方法 ,针对不同的调用方应用的请求进行流量QPS限制 ,超出阀值后调用端会收到服务拒绝异常 ,未来会在调用端进行限流

? 服务端会对任意接口的请求所占用的线程数进行控制 ,防止单个接口某个方法用尽线程池所有可用线程

服务隔离

? 服务端默认会监控每个接口的超时情况 ,超时多的接口请求会自动路由到独立的慢线程池处理 ,如果该接口恢复正常 ,则会回到正常共享线程池处理

? 也可以为某些接口方法配置独立的线程池 ,剩余的使用公共池

服务监控分析与告警

? 通过监控系统CAT (已开源 )分析调用链路 ,包括调用量、TP耗时、异常、请求及响应大小、区间耗时明细、QPS等

项目地址:https://github.com/dianping/pigeon

采用的监控系统:Central Application Tracking

项目地址:https://github.com/dianping/cat

监控系统环境搭建:http://www.cnblogs.com/softidea/p/5719331.html

时间: 2024-07-29 12:39:59

美团大众点评服务框架Pigeon的相关文章

【腾讯Bugly干货分享】美团大众点评 Hybrid 化建设

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/rNGD6SotKoO8frmxIU8-xw 本期 T 沙龙探讨了移动端热更新相关的话题.由于沙龙时间的限制,本期我们选取了美团的 Hybrid 化建设.去哪儿的跨平台 ListView 性能优化.微博 Android 端热更新踩过的坑话题.还期待热更新.热修复哪些话题?欢迎留言给我们.也欢迎报名参加 T 沙龙分享自己开发中的心得. Hybrid 是移动

服务框架 Pigeon 的设计与实现

1.服务框架Pigeon架构 监控系统 - CAT,负责调用链路分析.异常监控告警 配置中心 - Lion,负责一些开关配置读取 服务治理 - Governor 一个interface定义为一个服务,每个服务有唯一标识 2.主要模块 3.服务注册与发现 注册信息包括service name.ip.port.group等 服务提供方初始化完成后自动注册 ,也可以通过api或管理端注册 服务调用方通过service name去发现服务 4.服务注销 服务地址通过zookeeper持久节点存储 ,避免

android 粗暴简单仿美团/大众点评搜索方式,详细标注

转载请注明出处王亟亟的大牛之路 美团和大众点评的搜索和筛选栏,不能说好看(审美flag),但是满足了我们的搜索还筛选的需求,所以今天就实现了下这样的一个小Demo 项目结构:运行效果就是下图了,就不再截图了 初始化的样子: 具体实现就是起初3个LinearLayout,点击之后出现一个ListView然后会根据对这个LisvView的点击可能会再出现下一级别的子菜单. 废话不多说,直接上代码 MainActivity public class MainActivity extends Activ

大众点评SSM框架【1】

[摘要] 大众点评的前台页面,React APP的启动. [步骤] 1.下载安装node.js 下载最新的windows版本即可,http://nodejs.cn/download 2.根据项目的readme启动项目 npm install start /b npm run mock npm start 原文地址:https://www.cnblogs.com/likailun/p/9102895.html

大众点评SSM框架【2】

[摘要] 导入后台项目的一些问题记录. [问题1] eclipse的验证 [问题2] 异常:Java compiler level does not match the version of the installed Java project facet 是Project Facets中的jdk版本与项目的编译版本不一致,可以参考文章:Eclipse的Project Facets属性 https://www.cnblogs.com/zj0208/p/6306377.html [最后启动] 原文

大众点评SSM框架【4】

[摘要] 开发过程中的小问题,关闭JSP可视化编辑,查看方法调用的快捷键. [关闭可视化编辑] 在编辑JSP页面时,可能会用可视化界面,每次改动样式,都会很卡(eclipse重新刷页面) 可以选择关闭可视化界面,将第二项设置为default 重新打开之前的JSP文件 [查看方法调用] eclipse模式下shift+ctrl+G JAVA模式下ctrl+alt+H 这样可以查看全部的多级调用 原文地址:https://www.cnblogs.com/likailun/p/9119771.html

美团PK大众点评:互诉侵权背后的真相

团购行业在经过血雨腥风的群雄混战阶段后,已经进入三足鼎立的时代.据7月中旬数据显示,团购网站数量已由2011年8月高峰时的5058家缩减为至176家,而其中美团.大众点评.糯米占据了80%以上的市场份额.通常来说,进入垄断时代以后,巨头应该划分好各自的地盘,并在暗中"操纵"着市场的动向,掌控全局.但没想到是,团购行业的两大巨头美团和大众点评却开始互掐,将对方都告上了法庭.在这看似离奇的事件背后,是双方力量的博弈和无奈的展现. 互讼,意味什么? 美团和大众点评近来就像一对欢喜冤家,双方不

采集大众点评、美团等数据进行大数据挖掘

当你有了一只美丽的爬虫后你可以做很多有意思的事情,比如爬虫爬到了很多餐饮数据后就可以做餐饮地区活跃度分析了,这些分析指标是很有意义的,特别是对准备开店的人.首先要将数据从大众点评.美团或其他网站数据采集下来,方式可以从美食产品入口,然后找到餐饮公司信息,然后找到地址,地区等信息.采集的时候要做好防重策略,这样可以节省很多时间,还有就是不要并发太大,以免影响正常的业务.将采集到的数据写入数据库,以备后用.有了这些数据就可以对餐饮公司的分布做统计分析了,能很容易统计出某个城市餐饮公司的地区分布情况,

iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 例如以下图示[美团和大众点评]: 实现分类控件功能的思路: 1.实现collection v