您当前的位置:首页 > 生活百科 > 知识

6问微服务到底靠不靠谱?

时间:2020-07-26 11:47:37  来源:  作者:

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

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

6问微服务到底靠不靠谱?

 

编辑搜图

请点击输入图片描述

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

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

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

为什么拆?

容器时代之前,拆微服务的不多,拆主要是为了方便组件独立开发、升级,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问微服务到底靠不靠谱?

 

编辑搜图

请点击输入图片描述

6问微服务到底靠不靠谱?

 

编辑搜图

请点击输入图片描述

拷问 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



Tags:微服务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  Tags: 微服务  点击:(8)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 微服务  点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  Tags: 微服务  点击:(35)  评论:(0)  加入收藏
实施微服务架构,我们一直在遵循一个实践原则:每个微服务要有自己独立的数据库,避免数据库层面的耦合。这种理所当然感觉好像不需要多加思考,就是应该这样做; 图片来源:James Lewi...【详细内容】
2021-10-11  Tags: 微服务  点击:(42)  评论:(0)  加入收藏
在今年的NGINX Sprint 2.0虚拟大会上,NGINX(来自流行的开源web服务器/负载均衡器和反向代理背后的公司F5),发布了NGINX现代应用参考架构(MARA)。该公司在一篇博客文章中说,这将帮...【详细内容】
2021-09-26  Tags: 微服务  点击:(60)  评论:(0)  加入收藏
今天,字节跳动正式宣布开源 CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合,具有高性能、可扩展、高可靠的特点。项目地址:https://github.com/clo...【详细内容】
2021-09-08  Tags: 微服务  点击:(93)  评论:(0)  加入收藏
1. Spring Boot 与 Spring Cloud Spring Boot 是用于编写微服务的 Java 基础框架。在Spring Cloud 提供了各种构建全栈微服务的功能。构建小型和大型系统都适合。由于控制反...【详细内容】
2021-08-31  Tags: 微服务  点击:(162)  评论:(0)  加入收藏
现有问题在 EFK 日志收集 篇中,我们讲解了如何利用 EFK 收集 Kubernetes 集群日志。但是,还存在如下问题。 Elasticsearch 以单节点的形式部署,不能满足生产环境的要求 Fluentd...【详细内容】
2021-08-13  Tags: 微服务  点击:(102)  评论:(0)  加入收藏
在 Java 和 Kotlin 中, 除了使用Spring Boot创建微服务外,还有很多其他的替代方案。 名称 版本 发布时间 开发商 GitHub ...【详细内容】
2021-08-06  Tags: 微服务  点击:(173)  评论:(0)  加入收藏
一、微服务的现状及未来1.服务架构的演变1.1 单体架构  单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问...【详细内容】
2021-07-22  Tags: 微服务  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
自1991年第一款锂离子商业化以来,锂离子电池以高比能量的特点迅速占领了便携式电子产品市场,例如我们生活当中手机聚合物电池、无人飞机的高倍率电池、新国标电动车、新能源汽...【详细内容】
2021-12-27  全航工作室    Tags:锂电池   点击:(0)  评论:(0)  加入收藏
一张身份证里藏着惊人的信息。本文将教你如何从身份证号码前6位数看是哪里人。1949年,地级市的数目为54个,地区的数目为170个;1982年,地级市的数目为112个,地区的数目为170个,在此...【详细内容】
2021-12-27  聪颖书签U    Tags:身份证号   点击:(3)  评论:(0)  加入收藏
在每年的公历12月25日,是基督教徒纪念耶稣诞生的日子,我们称为圣诞节。圣诞节这个名称是基督弥撒的缩写,弥撒是基督教会的一种礼拜仪式。耶诞节是一个宗教节,我们把它当做耶稣的...【详细内容】
2021-12-24  长松爱剪辑    Tags:圣诞节   点击:(190)  评论:(0)  加入收藏
2022年1月,新的一年的开端,你的发展会如何?能为你开启一年的好运吗?下面跟着我一起来看看12星座2022年1月发展吧。白羊座优势: 魅力得以展现,爱情顺势而来。弱势: 情绪起伏大,...【详细内容】
2021-12-24  孟依婷啊    Tags:星座   点击:(16)  评论:(0)  加入收藏
DN/De/D/Φ/PN/SDR的区别 D:一般是指管道的内径,管道内壁内圆的直径。 DN:是指公称直径,又称平均外径,既不是管道的外径也不是内径,而是外径和内径的平均值。这是管道及其附件...【详细内容】
2021-12-24  水电小知识    Tags:管材   点击:(8)  评论:(0)  加入收藏
今天是公历2021年12月19日,农历十一月十六,星期日。后天,斗指子,太阳黄经达270°,就到了今年“二十四节气”之第22个节气——冬至节气!冬至,作为中国二十四节气的一个...【详细内容】
2021-12-20  冀豫耕耘    Tags:冬至   点击:(3)  评论:(0)  加入收藏
锂离子电池自从进入市场以来,以其寿命长、比容量大、无记忆效应等优点,获得了广泛的应用。锂离子电池低温使用存在容量低、衰减严重、循环倍率性能差、析锂现象明显、脱嵌锂不...【详细内容】
2021-12-20  全国能源信息平台    Tags:锂电池   点击:(5)  评论:(0)  加入收藏
引子感谢绿地,18年买的房子现在外墙还没做完,今年是奶爸的第四个租房的年头了,9月份刚刚换了一间大一点的房子。大房子住着倒是舒服些,然而房东配的床却完全不走心,这不前两天大...【详细内容】
2021-12-16  晋升奶爸的垃圾佬    Tags:手电钻   点击:(6)  评论:(0)  加入收藏
讲到电力负荷的计算,想必大部分从业多年的电气工程师都陌生了,但是对于一个初学者而言就可能一知半解了。那么什么是电力负荷呢?其实电力负荷是一个相对模糊的概念,它笼统地说是...【详细内容】
2021-12-15  电气设计狄老师    Tags:电力负荷   点击:(5)  评论:(0)  加入收藏
什么是过电流?什么是过负荷?想必很多初学电气的朋友都一知半解。其实过负荷、过载、过电流都包含有相同的意思,都会导致电器温度升高。其中过负荷、过载一般超过额定值不多,允许...【详细内容】
2021-12-15  电气知识课堂    Tags:电流   点击:(7)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条