IT学习站-137zw.com

作者: 却写杂布计
查看: 83|回复: 0

more +资源更新Forums

more +随机图赏Gallery

画画教程 SAI零基础合集(11套)202G  完整版课程分享画画教程 SAI零基础合集(11套)202G 完整版课程分享
喜马拉雅付费专辑 华语辩论冠军的思辩表达课 分享下载喜马拉雅付费专辑 华语辩论冠军的思辩表达课 分享下载
价值1169元 建设项目目标成本编制与投资收益测算 课程价值1169元 建设项目目标成本编制与投资收益测算 课程
医学生必备图谱及教材 蓝色生死恋全集奈特图谱十二本+黄...医学生必备图谱及教材 蓝色生死恋全集奈特图谱十二本+黄...
手把手教你招投标从入门到独立完成标书 完整版课程手把手教你招投标从入门到独立完成标书 完整版课程
黑马Android安卓开发项目就业班第95期 完整版课程黑马Android安卓开发项目就业班第95期 完整版课程

Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

[复制链接]
却写杂布计 | 显示全部楼层 发表于: 2019-11-14 07:55:05
却写杂布计 发表于: 2019-11-14 07:55:05 | 显示全部楼层 |阅读模式
查看: 83|回复: 0
Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)  技术博客 1769816-20190906132421359-1490318289

一、背景

在我上一篇文章《Spring Cloud开发人员如何解决服务冲突和实例乱窜?》中提到使用服务的元数据来实现隔离和路由,有朋友问到能不能直接通过IP来实现?本文就和大家一起来讨论一下这个问题
 
二、可行性分析

要实现通过IP来隔离和路由的话有一个非常关键的点需要解决,就是怎样实现IP可辨识,意思就是如何区分那个IP是服务器上的,那个IP是开发人员本机
Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)  技术博客 1769816-20190906132423386-1501962013

如上图所示其实我们还是能找到规律可以辨识的,所以这个是可以行的!

  • 开发人员本机IP - 其实就是客户端IP,也就是原始请求方的IP172.16.20.2
  • 服务器IP - 可以理解为服务器上的服务所在机器的IP(有点绕):172.16.20.1
 
三、路由规则逻辑

主要实现以下目标:

  • 普通用户访问服务器上的页面时,请求的所有路由只调用服务器上的实例
  • 开发A访问时,请求的所有路由优先调用开发A本机启动的实例,如果没有则调用服务器上的实例
  • 开发B访问时同上,请求的所有路由优先调用开发B本机启动的实例,如果没有则调用服务器上的实例
在找到IP的辨识规律后,推导出下面3个路由规则来实现上面的目标

  • 优先匹配原始请求方的IP的服务实例
  • 再者匹配上游服务所在机器IP的服务实例
  • 上面2个逻辑都匹配不到的话使用轮询的方式找一个实例
 
具体的自定义负载均衡的对象怎么写我这里就不详细描述了,可以参考我上一篇文章《Spring Cloud开发人员如何解决服务冲突和实例乱窜?
 
四、获取原始请求方的IP

获取原IP的代码片段如下,只需要在网关上增加一个过滤器获取IP,然后添加到header里面一直传递下去就可以了把原IP添加到header的HTTP_X_FORWARDED_FOR里面传递给下游服务 
五、获取服务器所在机器的IP

直接使用JDK自带的InetAddress就可以了 
六、总结

通过IP的方案来实现开发环境服务实例隔离和策略路由后,可以实现到开发完全无感知,既不需要配置元数据,也不需要自己去传version之类的参数了。
但是这个方案其实也是有局限性

  • 开发服务器必须是只用一台来部署所有的服务,因为如果上游服务和下游服务不在同一个IP上就失去了辨识能力了
  • 因为网络环境比较复杂,不一定能获取到客户端的真实原IP
  • 开发人员启动客户端/前端的机器与启动后台服务必须是同一台电脑上才行;例如如果是前端开发人员A启动的客户端,去调试后台开发人员B启动的服务就不行了,因为原IP与注册上去的服务实例IP匹配不上
 
最后可能大家会问原IP怎样全链路传递下去?链路传递可以参考一下我的另外一篇文章《日志排查问题困难?分布式日志链路跟踪来帮你
 
推荐阅读
 
扫码关注有惊喜!
Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)  技术博客 1769816-20190906132425393-1275541


来源:http://www.137zw.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-4 09:37 , Processed in 0.254427 second(s), 33 queries .

快速回复 返回顶部 返回列表