分布式服务化

RPC基本原理

rpc是基于接口的远程服务调用

RPC原理

  1. 本地代理存根:Stub

  2. 本地序列化反序列化

  3. 网络通信

  4. 远程序列化反序列化

  5. 远程服务存根:SKeleton

  6. 调用实际业务服务

  7. 原路返回服务结果

  8. 返回给本地调用方

  9. 注意处理异常

  10. 设计
    共享:POJO实体类定义,接口定义
    REST/PB下.真的不需要吗?另一个选择:WSDL/WADL

  11. 代理
    java使用动态代理或aop,C#使用远程代理

  12. 序列化
    语言原生序列化:RMI,Remoting
    二进制平台无关:HEssian,avro,fst
    文本,json

  13. 网络传输
    tcp/ssl
    http/https

RPC技术框架

如何设计一个RPC

从RPC到分布式服务化

分布式服务治理

微服务

  1. 多个相同的服务如何管理
  2. 服务的注册和发现机制
  3. 如何负载均衡,路由等集群功能
  4. 熔断,限流等治理能力
  5. 心跳,重试等策略
  6. 高可用,监控,性能等

配置/注册/元数据中心

配置中心:管理系统需要的配置参数信息
注册中心:管理系统的服务注册,提供发现和协调能力
元数据中心:管理各个节点使用的元数据信息

服务的注册和发现

服务的集群与路由

多个服务提供者提供相同的服务:

  1. 划分namespace
  2. 划分配置中心
  3. 按版本划分
    对于相同能力的多个服务,分摊流量
  4. 路由
  5. 负载均衡
    服务路由(和网关路由类似)=》过滤用。故意让流量到指定的机器上
  6. 基于IP段的过滤(按ip过滤)
  7. 服务都滴啊上tag,用tag匹配这次调用范围
    服务负载均衡(让流量分散到所有机器上),多种策略,目的是尽量均匀
  8. random(带权重)
  9. RoundRobin(轮询)
  10. LeastActive(快的多给)
  11. ConsistentHashLoadBalance(同样参数请求到一个提供者)

服务的过滤与流控

为什么需要服务流控

稳定性工程:

  1. 系统会故障是正常现象
  2. 在系统出问题时,直接不服务,还是保持部分服务能力
    系统容量有限
    响应式编程(回弹性)
    需要流控的本质是,请求大于处理的能力
    流控三种方法:
  3. 限流:内部线程数,外部调用数
  4. 服务降级:去掉不必要的业务逻辑,只保留核心逻辑
  5. 过载保护:系统短时间不提供新的业务处理服务,积压处理完后再恢复输入请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值