Download presentation
Presentation is loading. Please wait.
Published byWidyawati Lesmono Modified 5年之前
1
Dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成
2
INTRODUCTION 单一应用架构->垂直应用架构->分布式服务架构->流动计算架构
3
节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 Comtainer 服务运行容器
4
CONTENTS 01 注册发现 02 负载均衡 03 权限控制 04 流量统计 05 服务降级 06 错误排查
5
01 步骤: 1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL
向/dubbo/com.foo.BarService/consumers目录下写入自己的URL 3.监控中心启动时订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者URL 样例: dubbo:// :20880/com.provider.TestService?anyhost=true&application=dubbo-provider&dubbo=2.5.6&generic=false&interface=com.provider.TestService&methods=sayHello&owner=dubbo-provider&pid=37732&side=provider×tamp= , dubbo version: 2.5.6, current host:
6
服务提供者宕机掉线怎么办? 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外。 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者。 注册中心集体宕机怎么办? 服务提供者和服务消费者不能注册新服务,仍能通过本地缓存通讯。 监控中心如何运作? 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。
7
02 Random LoadBalance 随机,按权重设置随机概率。
在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。 RoundRobin LoadBalance 轮循,按公约后的权重设置轮循比率。 存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。 LeastActive LoadBalance 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。 ConsistentHash LoadBalance 一致性 Hash,相同参数的请求总是发到同一提供者。 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
8
Random LoadBalance 计算总权重;判断各个子权重是否一样; 若子权重不相同且总权重大于0,用总权重确认随机值,再计算落在哪个服务上; 其余,用服务总数,均等计算落在那个服务上; RoundRobin LoadBalance 计算最大权重,最小权重; 若两者不同,计算权重基数,找出权重大于基数的服务;若选出的服务总数等于1,选中此服务;若大于1,利用总数取模,返回被选中的服务; 若相同,利用服务的总数取模,返回被选中的服务;
9
LeastActive LoadBalance
寻找相同最小活跃数,并记录相关信息,判断所有权重是否一样; 若相同最小活跃数服务数量为1,则返回此服务; 若权重不同,且总权重大于0,用总权重确认随机值,再计算落在哪个服务上; 其余,相同最小活跃数服务均等随机选取服务;
10
03 通过令牌验证在注册中心控制权限,可以防止消费者绕过注册中心访问提供者 Token验证模式,无法限制集群内消费者的访问限制
11
基于 com.alibaba.dubbo.rpc.Filter 做白名单限制
在服务提供端配置Filter,限制 Ip 等相关信息 思考能否利用dubbo 中 Group、Version的概念去简单的实现控制?
12
04 监控中心负责统计各服务器调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。
监控中心是可选的(非必须): 1)Monitor可以不安装。 2)Monitor挂掉不会影响到Consumer和Provider之间的调用,只是丢失部分采样数据。
13
05 服务熔断 在股票市场,“熔断”一词不陌生。指交易时间中,价格波动的幅度达到某一限定目标时,暂停交易的机制,给市场更多的冷静时间,避免恐慌情绪蔓延导致市场波动。 效果:暂停,恢复 服务降级 服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。 效果:部分服务降级 dubbo当前版本,无熔断机制,有服务降级的概念
14
dubbo 利用 Mock 配置,实现服务降级。
屏蔽:表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。 容错:表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。
15
06 dubbo 内置 log4j、slf4j、jcl、jdk 这些日志框架的适配;若想记录每一次请求信息,也可开启访问日志。
对于总体的日志查看,可以是使用开源的ELK汇总日志,查看日志。 ELK简洁: Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
16
学习链接 功能特性 http://dubbo.io/books/dubbo-user-book/
功能特性 安装使用 框架设计与扩展 GitBook文档地址
17
谢谢观看 THANKS FOR WATCHING
Similar presentations