微服务路由设计

透明化路由:消费者只知道当前服务者提供了哪些方法,并不知道服务具体在什么位置,这就是透明化路由


服务提供者将需要发布的服务地址信息和属性列表写入注册中心,消费者根据本地引用的接口名称等信息从注册中心获取服务提供者列表,缓存到本地

消费者可能先于服务者启动服务提供者动态增加或者宕机退出就会导致注册中心发生服务提供者地址变更,注册中心检测到变更之后会主动推送给服务消费者,消费者根据变更列表刷新本地缓存,保证本地服务列表实时的准确性

采用客户端缓存服务提供者的方式不仅可以提升服务性能还能保证系统可靠性,当注册中心全部宕机之后,服务依然可用,只是没办法发布新的服务和老服务下线



负载均衡:

1)随机 在对等集群组网中,随机路由有算法消息分发还是比较均匀的,问题

  a.在一个截面上碰撞的概率较高

  b.费对等集群组网,或者硬件配置差异较大时,会导致各节点负载不均衡

2)轮询 较慢的服务会堆积请求

实现比较简单就是按照权重遍历服务者列表,到达上限之后重新归零,继续循环

3)服务调用时延,消费者缓存服务提供者的平均时延,然后计算每个服务提供者的平均时延和调用时延,根据差值的大小动态调整权重,是性能好的服务接收较多的消息,实现均衡

4)一致性hash

相同的请求总是发到同一个服务提供者,某一台服务宕机后原本发往该机器的请求,基于虚拟节点平台到其它提供者,不会引起剧烈的变动



本地路由优先策略:

1)injvm模式 injvm是一个伪协议,它不开启端口,也不发起远程调用,优先调用本地jvm内的服务提供者,若用户配置了jvm模式,优先寻找本JVM内的服务提供者

2)innative模式本进程JVM内有没有符合要求的服务提供者->服务提供者IP或本机IP相同的本地和设的服务提供者进程(有、通过本地网卡调用服务提供者)->远程调用

本地网卡回环不会占用网络带宽,延时也比较低


路由规则:

1)ip白名单  consumerip!=127.0.0.2*

2)流量引导,只暴露一部分的服务提供者 providerIP=192.168.1.1*

3)读写分离  method=find*,list*,get*query*=>providerIP=192.168.1.1*

4)前后端分离 app=>web*=>providerIP=192.168.1.1*,app=>java*=>providerIP=192.168.2.1*

5)灰度升级,将app前台应用路由到新的服务器 app=>web*=>providerIP=192.168.1.1*


跨机房部署服务器的时候,要尽量减少服务跨机房调用,可以通过路由分组策略或者是虚拟分组技术来实现




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值