导读:目前主流的微服务治理框架主要是Spring Cloud。而Istio作为新一代微服务框架,越来越受到关注。在本文中,我们分享如何选择这两种微服务框架。

作者:魏新宇 宋志麒 杨金锋

来源:大数据DT(ID:hzdashuju)

Istio被引入的主要原因是传统微服务存在以下问题。

  • 多语言技术栈不统一:C++、Java、PHP、Go。Spring Cloud无法提出非Java语言的微服务治理。

  • 服务治理周期长:微服务治理框架与业务耦合,上线周期长,策略调整周期长。

  • 产品能力弱:Spring Cloud缺乏平台化和产品化的能力,可视化能力弱。

那么,是不是说企业一定需要使用Istio?不是。表2-2是对Spring Cloud与Istio的简单对比。

▼表2-2 Spring Cloud与Istio的对比与选择

也就是说,如果企业的开源语言主要是Java、更新升级不频繁、无过多高级治理功能需求、业务规模不是非常大,使用Spring Cloud是比较合适的。

如果企业要引入Istio,引入成本有多高?具体分三种情况,如表2-3所示。

▼表2-3 企业引入Istio的成本

接下来,我们对在OpenShift上通过Spring Cloud和Istio实现的企业微服务治理进行对比,如表2-4所示。

▼表2-4 Spring Cloud与Istio的实现对比

从开放性以及先进性角度来说,建议将服务网格Istio作为首选微服务应用框架。接下来我们介绍Istio在实践中的使用建议。

Istio运维方面的建议包括版本选择、备用环境、评估范围、配置生效、功能健壮性参考、入口流量选择。当然,这些建议只是基于目前我们在测试过程中得到的数据总结的。随着Istio使用越来越广泛,相信最佳实践将会越来越丰富。

1. 版本选择

Istio是一个迭代很快的开源项目。截止到2021年5月,社区最新的Istio版本为1.9。

频繁的版本迭代会给企业带来一些困扰:是坚持使用目前已经测试过的版本,还是使用社区的最新版本?

在前文中我们已经提到,红帽针对Istio有自己的企业版,通过Operator进行部署和管理。出于安全性和稳定性的考虑,红帽Istio往往比社区要晚两个小版本左右。因此建议使用红帽Istio的最新版本。目前看,社区的最新版本的Istio的稳定性往往不尽如人意。

2. 备用环境

针对相同的应用,在OpenShift环境中部署一套不被Istio管理的环境。比如文中的三层微服务,独立启动一套不被Istio管理的应用,使用OpenShift原本的访问方式即可。

这样做的好处是,每当进行Istio升级或者部分参数调整时都可以提前进行主从切换,让流量切换到没有被Istio管理的环境中,将Istio升级调整验证完毕后再将流量切换回来。

3. 评估范围

由于Istio对微服务的管理是非代码侵入式的。因此通常情况下,业务服务需要进行微服务治理,需要被Istio纳管。而对于没有微服务治理要求的非业务容器,不必强行纳管在Istio中。当非业务容器需要承载业务时,被Istio纳管也不需要修改源代码,重新在OpenShift上注入Sidecar部署即可。

4. 配置生效

如果系统中已经有相关对象的配置,我们需要使用oc replace -f指定配置文件来替换之前配置的对象。Istio中有的配置策略能够较快生效,有的配置需要一段时间才能生效,如限流、熔断等。新创建策略(oc create -f)的生效速度要高于替换性策略(oc replace -f)。因此在不影响业务的前提下,可以在应用新策略之前,先删除旧策略。

此外,Istio的配置生效,大多是针对微服务所在的项目,但也有一些配置是针对Istio系统。因此,在配置应用时,要注意指定对应的项目。

在OpenShift中,Virtual Service和Destination Rules都是针对项目生效,因此配置应用时需要指定项目。

5. 功能健壮性参考

从笔者大量的测试效果看,健壮性较强的功能有基于目标端的蓝绿、灰度发布,基于源端的蓝绿、灰度发布,灰度上线,服务推广,延迟和重试,错误注入,mTLS,黑白名单。

健壮性有待提升的功能有限流和熔断。

所以,从整体上看,Istio的功能虽日趋完善,但仍有待提升。

6. 入口流量方式选择

在创建Ingress网关的时候,会自动在OpenShift的Router上创建相应的路由。Ingress网关能够暴露的端口要多于Router。所以,我们可以根据需要选择通过哪条路径来访问应用。

在Istio体系中的应用不使用Router也可以正常访问微服务。但是PaaS上运行的应用未必都是Istio体系下的,其他非微服务或者非Istio体系下的服务还是要通过Router访问。此外,Istio本身的监控系统和Kiali的界面都是通过Router访问的。

相比Spring Cloud,Istio较好地实现了微服务的路由管理。但在实际生产中,仅有微服务的路由管理是不够的,还需要诸如不同微服务之间的业务系统集成管理、微服务的API管理、微服务中的规则流程管理等。

本文摘编自《金融级IT架构与运维:云原生、分布式与安全》,经出版方授权发布。(ISBN:978-7-111-69829-6)

《金融级IT架构与运维:云原生、分布式与安全》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:3位资深专家撰写,8位IT负责人推荐,从架构、云原生、分布式、安全、运维为金融企业提供解决方案,案例丰富。

刷刷视频

微服务治理框架的选择:对比Spring Cloud和Istio相关推荐

  1. 微服务治理框架- - -Spring Cloud

     前言:最近微服务很是火热,那么什么是微服务?相信小伙伴们对此也是一知半解,那么今天叶秋学长带领大家一起学习微服务治理框架Spring Cloud,快来跟着学长一起学习吧~~ 目录 对SpringCl ...

  2. 微服务治理框架(C++版)详细设计

    @TOC 微服务治理框架(C++版)详细设计 概述 gRPC 是一款高性能.开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(C++.Golang.P ...

  3. 《深入理解 Spring Cloud 与微服务构建》第三章 Spring Cloud

    <深入理解 Spring Cloud 与微服务构建>第三章 Spring Cloud 文章目录 <深入理解 Spring Cloud 与微服务构建>第三章 Spring Clo ...

  4. Spring Cloud与微服务学习总结(2)——Spring Cloud相较于Dubbo等RPC服务框架的优势

    摘要: 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时,有些甚至还不知道该项目的存在.可能这也与国内阿里巴巴开源服务治理 ...

  5. 微服务进阶(四):Spring Cloud netflix概览及架构设计

    文章目录 一.Spring Cloud 简介 二.微服务架构 三.Spring Cloud Netflix 组件以及部署 四.Spring Cloud Netflix 组件开发 4.1 注册和监控中心 ...

  6. spring vault_微服务–第2部分:使用Spring Cloud Config和Vault进行配置管理

    spring vault 在使用Spring Boot和Spring Cloud的MicroServices –第1部分:概述中 ,我们简要介绍了什么是微服务以及如何使用SpringBoot和Spri ...

  7. 服务连接不上nacos集群_Rust 微服务实践: 连接 rust , nacos , spring cloud

    说到微服务,一想到就是针对业务复杂度不断提高的应用衍生出来的框架,大多数应用场景是大型复杂的应用.那么微服务为个人开发者有什么好处呢?我认为有以下好处: 替换原先的包/库级别的代码复用和封装. 使用微 ...

  8. Spring Cloud与微服务学习总结(9)——Spring Cloud面试题汇总

    为什么需要学习Spring Cloud 不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用.但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复 ...

  9. Spring Cloud与微服务学习总结(1)——Spring Cloud及微服务入门

    一.Spring Cloud是什么鬼?  Spring Cloud为开发者提供了快速建立一些常见的模式在分布式系统的工具(如配置管理.服务发现.断路器.智能路由.微代理,控制总线,一次性令牌,全球锁, ...

最新文章

  1. 加载多瓦片地图_手把手教 | 网络时空大数据爬取与分析DAS系统(瓦片地图获取)...
  2. docker停止容器,删除镜像常用指令
  3. node 之 ... 扩展运算符报错
  4. 计算机专业录取分数及大学排名,计算机专业录取分数最高的大学有哪些?附排名前50大学名单...
  5. 【手算】逆序数树形计算方法
  6. java 创建文件夹的方法_java中创建文件夹的方法
  7. 做一个项目,平时都用到哪些工具提高效率(下)
  8. 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!...
  9. linux如何运行java程序,Linux环境下运行简单java程序
  10. 微服务之间最佳调用方式是什么?
  11. 51单片机课程设计:基于TCS230/3200的颜色复制显示器
  12. 信息收集端口扫描工具masscan
  13. AutoCAD-源泉设计-利器
  14. 《设计心理学 1 日常的设计》 唐纳德·A·诺曼 pdf下载
  15. 网易云课堂资源合集百度云分享 下载
  16. win10中常用快捷键 (包括切换窗口、打开我的电脑等快捷键)
  17. QT property属性的应用
  18. Ubuntu 图形桌面与命令行界面 切换快捷键
  19. 芯片封装形式(网上到处找的)
  20. 老砒霜和小创创---小朋友,你这样就别怪叔叔坏心眼了

热门文章

  1. MySQL笔记-Linux平台中MySQL的启动和关闭
  2. Leaflet文档阅读笔记-Quick Start Guide笔记
  3. Java基础入门笔记-Getter与Setter
  4. oracle查询注意点,oracle查询相关注意点
  5. android滤镜效果,Android图像处理之霓虹滤镜效果
  6. php.ini var dump,php安装xdebug后var_dump()不能输变量内容解决办法
  7. dnf加物理攻击的卡片有哪些_DNF:节日宝珠之外百分比神器附魔,拍卖行100w,实用不氪金...
  8. 操作系统之进程管理:4、线程与多线程
  9. (数据库系统概论|王珊)第十章数据库恢复技术-第四、五、六、七节:数据库恢复技术和数据库镜像
  10. C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)