欢迎来到 0713网站目录
登录

最近看到一个新闻,说是内容是 “IBM、甲骨文、CNCF 就谷歌对 Istio 治理的处理提出抗议”。相信很多小伙伴看了以后,针对 Istio、微服务都有一丝疑虑,接下来我们用灵魂拷问的方式,来分析相关的问题。本文仅代表作者个人观点。

拷问 1:为啥要用微服务?

 

编辑搜图

请点击输入图片描述

在谈微服务靠谱靠谱之前,我们先说说微服务本质是啥?咱们不妖魔化概念,捡干的说。

微服务的“微”,是小的意思。比传统单体应用小。怎么把大的单体应用变小?拆呗。

至于怎么拆,这是门学问,后面说。

为什么拆?

容器时代之前,拆微服务的不多,拆主要是为了方便组件独立开发、升级,balabala........

在容器云时代,有的应用比较大,不拆就上不了容器云。

上不了容器云有什么问题么?

没啥问题。如果在虚拟机甚至物理机上运行,你没觉得他慢,弹性能力差,你没觉得它有问题,那就是没问题,就别拆。Oracle RAC这样式的,也没法拆,也上不了容器云(起码段时间内)。

结论:上容器云的本质目的,是由于你想利用容器云让你的应用运行弹性扩展能力增强、开发迭代速度加快,所以要把应用往容器云上挪。有的轻量级的 web 应用好挪,不用拆就能怼上去。有的应用大,直接上不去,向上就得拆,就费用微服务。

有人问,为啥非要上容器云?没有非要。当年虚拟化大流行的年代,谁没规定非要上 vSphere 啊。很简单:根据自己的需要。

拷问 2:咋听说上了微服务后,运维难度增加?微服务靠谱不?

首先,微服务这个概念,一定程度上被妖魔化、被玩坏了。好像微服务站在了一切“传统”应用的对立面,就像当面满清入关,必须剃所有应用的头发一样,所有应用必须要拆,拆的越碎越好。

现在市面上使用最多的微服务,还是以 SpringBoot 为开发框架的 SpringCloud 系,这是实时。

但是,我要说的是:SpringCloud 架构确实比较复杂,而且是代码侵入式的。大魏曾经上过一门微服务迁移的课(红帽内部一周的课),每天基本做的事情,就是改源码。需要使用 SpringCloud 的哪个治理组件,就得把对应的代码(主要是 annotation 方式 )加进去,把配置参数也加进去。大幅增加了应用开发人员的工作量。

而造成这个问题的关键点在于:SpringCloud 是站在七层(应用),解决 4-7 层的所有问题(应用之间调度,RBAC 等)。码农工作量不大才怪。

如果有要说微服务靠谱不这个话题。首先来说,SpringBoot 挺靠谱的。SpringCloud 框架庞杂,如果业务没那么多治理需求的话,建议挑少量的治理组件上,别一下都怼上。

拷问 3:微服务或者说云原生的应用开发框架,只能选 SpringBoot?

不是。

SpringBoot 是目前很流行的开发框架,起源是要解决 EJB 太重的问题,但还是重。

而微服务和云原生要求什么?pod 启动快、占用资源少。

这方便,Quarkus 有它的优势,尤其是云原生。

IDC 对比过 SpringBoot 和 Quarkus 的性能,后者高不少。但 Quarkus 也有其限制,用其所长。

详细内容参考我之前写的文章:关于云原生应用的思考

拷问 4:Istio 被吹了好几年了,它咋出来的?靠谱不?

如拷问 2 所述:SpringCloud 要求码农通过代码实现从 4-7 层的所有逻辑,显然太累,灵活性也差。这时候 google 和 IBM 出于要简化这件事的目的,联手推出了基于 K8S 的微服务治理框架 Istio(技术细节不赘述,想了解可以买我的书《OpenShift 在企业中的实践》)。

也就是说,像 RBAC,服务注册中心、微服务之间调用路由等啥啥问题,Istio 都干了。这确实是架构上的创新。

那为啥 Istio 现在生产案例不多呢?其实也有案例,国内外都有,但和 SpringCloud 相比,还是少。

从技术角度看:

  1. Istio 是个迭代的比兔子跑的还快的开源项目。小版本迭代甚至以周记。Istio 迭代后,有时候架构,API 都会有一些变化,平滑升级不顺畅(例如直接从 Istio 1.1 升级到 1.2)。
  2. Istio 本身就是个微服务的框架,组件太多,自身运行也比较消耗资源,比如 mixer 组件。Istio 到了 1.5,引入了 Istiod,架构有所精简。具体的效果大魏还没测试。
  3. Istio 采用 sidecar 的方式,在每个 pod 中业务容器旁边塞一个代理。pod 流量出栈入栈都会先经过这个代理。这个代理增加了应用访问的时间。如果说个时间的话,不少于 10ms。当应用规模大、微服务之间相互调用太多时,这个延迟就会有指数级增长。
  4. Istio 本身还是站在运维角度去考虑问题的,运维人员觉得不错,但 Istio 没有和应用开发框架有深度的集成。但写应用的是开发人员,他们对这些未必关心。SpringCloud 想对接受的广,本质上是因为 SringBoot 的开发友好型。

那么,Istio 到底靠谱不。从长远看,靠谱。因为毕竟 Istio 是基于 K8S 的框架对微服务的架构性创新,随着 Istio 版本的迭代,性能和稳定性的提升,案例会越来越多。

拷问 5:我的应用现在 vm 上使用的 SpringCloud,怎么向 K8S/OCP(OpenShift) 迁移?

这有两种方法:

(1)将所有 SpringCloud 和应用一起容器化,然后挪到 OCP 上。

这种方法的好处是:不用改 SpringCloud 框架,上来基本就能用。缺点是让让本就复杂的 SpringCloud 更加复杂。

(2)将 SpringCloud 迁移的时候,按照 K8S 的特点,对组件进行改造。K8S 层有的就用 K8S 的。如下表所示。

这种需要点工作量改造需需要点工作量,好处是后续微服务架构就能一定晨读上调用 K8S,效率高一些,后续运维也会方便。比如写应用的时候,直接用 K8S的 service name。

 

编辑搜图

请点击输入图片描述

 

编辑搜图

请点击输入图片描述

拷问 6:我现在用的是 K8S+SpringCloud,怎么向 OCP+Istio 迁移?

这种方法比拷问 5 中的第二种稍微激进一些,但未来是这个方向。这种做法的好处是业务逻辑用 Spring Boot 实现,其他功能实现都交给交给 Openshift+Istio。

这种方法的大致步骤是:

  1. 在 pom.xml 中注销 SpringCloud 组件的的 Maven 依赖,如:Eureka 。
  2. 删除代码中 SpringCloud 的 annotation,如 @EnableDiscoveryClient
  3. 集中的配置文件回到各个项目中
  4. 用 jar 包构建镜像。也就应用容器化,可以使用 OCP 的 S2I builderimage。
  5. 创建 ConfigMap 用于注入环境变量。
  6. 在 OCP 上部署应用,部署的时候,记住要注入 sidecar。

转载来源:OSChin.net原文标题:灵魂拷问 x6:微服务到底靠谱不?原文链接:https://my.oschina.net/u/4567873/blog/4400010

特别提示:

推荐

最新

最新文章

电信、双线、多线等线路的差别是什么?如何选择?
如何选择合适的虚拟主机
不求与人相比,但求超越自己。
虚拟主机购买其他常见问题
𝗦𝗵𝗮𝗿𝗲 | 张雅钦高清壁纸
𝑺𝒉𝒂𝒓𝒆壁纸|陈都灵|女神在世,权威二字
选择多大空间和流量的主机合适
吃饭只吃七分饱,但“七分饱”究竟是多饱?
如何购买虚拟主机
局域网怎么开启ftp访问共享
陈都灵|哇塞!太适合当壁纸啦~
虚拟主机常见组件版本及参数支持情况(不支持反解析)
祝绪丹|你低头浅笑时,恰似日光拂面来
虚拟主机子站功能开设子网站流程
黄霄雲|人美歌甜,身材还这么好
习近平总书记重要讲话,全文来了!
discuz X3.2最新20141225安装包uc_server不能登陆问题(包括升级后)
虚拟主机乱码目录文件删除(适用Linux系统)
虚拟主机畸形病毒字体文件删除(适用windows系统)
𝗦𝗵𝗮𝗿𝗲 | 章若楠高清壁纸

猜你想看

警惕“沉默的杀手”骨质疏松
王者荣耀各个位置的英雄天花板英雄有谁知道!
电动自行车“每天充”和“用尽再充”,哪个更伤车?修车师傅说出实话
310辆京牌小客车司法处置情况通报:全部以最高限价成交
纠结沃尔沃48V轻混和T8插混怎么选?
“多巴胺穿搭”正流行!比甜骚风好看,今夏必穿
单位行贿罪怎么判?
电动车充电要耗多少度电?一年充电需要多少钱?告诉你好奇的答案
咖啡入门常识及意式咖啡豆分享
五十以后,要过“五有”生活
最美秋色:10月国内秋季旅游10个最佳景点,来一场走进秋天的旅行
《完蛋1》还在回味,《完蛋2》就要来了,帅哥美女在互动剧游戏相见
房地产税为什么放缓了?
如何看懂珠宝玉石的鉴定证书
刘诗诗巴黎CELINE时装秀|优雅永不过时
拒交物业费,法院为何难撑腰?
剧情电影《鹅毛笔》解说文案
如何判断汽车发电机是否发电?
全国哪里的面粉最好吃?
那些你不知道的空调遥控器用法,全都在这里