点击上方“程序猿技术大咖”,关注并选择“设为星标”
《Istio 实践手册》,从服务网格概念出发,将逐步渗透到 Istio 具体细节中来,旨在帮助 Istio 学习者、使用者快速掌握相关知识点,可作为 Istio 学习、实践手册,建议收藏!(不断更新中……)
Spring Boot、
Spring Cloud等框架的应用服务也称之为微服务架构,但这却只是将它作为服务的
Web容器而已。
Kafka、
Redis实例等,相应
CI/CD的配置也会增加或调整。同时随着微服务数量增多、业务复杂性的提升及需求的多样性等(如,对接第三方异构系统等),服务间通信的错综复杂,一步步地将微服务变得更加臃肿,服务治理也是难上加难,而这些问题在单体架构中是很容易解决的。为此,有人开始怀疑当初微服务化是否是明智之选,甚至考虑回归到传统单体应用。
PPT中的微服务总是美好的,但现实中的微服务却是一团糟糕,想甩甩不掉,越看越糟心。难道就没有办法了么?

1、传统微服务架构面临的挑战
过于绑定特定技术栈。 当面对异构系统时,需要花费大量精力来进行代码的改造,不同异构系统可能面临不同的改造。 代码侵入度过高。 开发者往往需要花费大量的精力来考虑如何与框架或 SDK
结合,并在业务中更好的深度融合,对于大部分开发者而言都是一个高曲线的学习过程。多语言支持受限。 微服务提倡不同组件可以使用最适合它的语言开发,但是传统微服务框架,如 Spring Cloud
则是Java
的天下,多语言的支持难度很大。这也就导致在面对异构系统对接时的无奈,或选择退而求其次的方案了。老旧系统维护难。 面对老旧系统,很难做到统一维护、治理、监控等,在过度时期往往需要多个团队分而管之,维护难度加大。
2、迎来新一代微服务架构
Service Mesh的出现,迎来了新一代微服务架构,也被称为“下一代微服务”。为了更好地理解
Service Mesh的概念和存在的意义,我们来回顾一下这一演进过程。
1.1 耦合阶段

基础设施功能(如,服务发现,负载均衡、熔断等)和业务逻辑高度耦合。 每个微服务都重复实现了相同功能的代码。 管理困难。如果某个服务的负载均衡发生变化,则调用它的相关服务都需要更新变化。 开发者不能集中精力只关注于业务逻辑开发。
1.2 公共库 SDK
SDK,让服务的业务逻辑与这些公共功能降低耦合度,提高重复利用率,更重要的是开发者只需要关注公共库
SDK的依赖及使用,而不必关注实现这些公共功能,从而更加专注于业务逻辑的开发,比如
Spring Cloud框架是类似的方式。如下图所示:

这些公共库 SDK
存在较为陡峭的学习成本,需要耗费开发人员一定的时间和人力与现有系统集成,甚至需要考虑修改现有代码进行整合。这些公共库 SDK
一般都是通过特定语言实现,缺乏多语言的支持,在对现有系统整合时有一定的局限性。公共库 SDK
的管理和维护依然需要耗费开发者的大量精力,并需专门人员来进行管理维护。
1.3 Sidecar 模式
SDK的启发,加上跨语言问题、更新后的发布和维护等问题,人们发现更好的解决方案是把它作为一个代理,服务通过这个透明的代理完成所有流量的控制。
Sidecar代理模式,也被翻译为"边车"代理,它作为与其他服务通信的桥梁,为服务提供额外的网络特性,并与服务独立部署,对服务零侵入,更不会受限于服务的开发语言和技术栈,如下图所示。

Sidecar模式进行通信代理,实现了基础实施层与业务逻辑的完全隔离,在部署、升级时带来了便利,做到了真正的基础设施层与业务逻辑层的彻底解耦。另一方面,
Sidecar可以更加快速地为应用服务提供更灵活的扩展,而不需要应用服务的大量改造。
Sidecar可以实现以下主要功能:
服务注册。 帮助服务注册到相应的服务注册中心,并对服务做相关的健康检查。 服务路由。 当应用服务调用其它服务时, Sidecar
可以帮助从服务发现中找到相应的服务地址,完成服务路由功能。服务治理。 Sidecar
可以完全拦截服务进出的流量,并对其进行相应的调用链跟踪、熔断、降级、日志监控等操作,将服务治理功能集中在Sidecar
中实现。集中管控。 整个微服务架构体系下的所有服务完全可以通过 Sidecar
来进行集中管控,完成对服务的流控、下线等。
1.4 Service Mesh
Sidecar模式充分应用于一个庞大的微服务架构系统,为每个应用服务配套部署一个
Sidecar代理,完成服务间复杂的通信,最终就会得到一个如下图所示的网络拓扑结构,这就是
Service Mesh,又称之为“服务网格“。

Service Mesh,它将彻底解决了传统微服务架构所面临的问题。
下篇预告:将会重点介绍关于服务网格的概念、功能、能够解决的问题以及原理等内容。
感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!

云原生第7课:Kubernetes 网络与服务管理 微服务架构设计中的设计模式、原则及最佳实践 MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧 微服务架构下的核心话题 (三):微服务架构的技术选型

喜欢就点个"在看"呗,留言、转发朋友圈
文章转载自程序猿技术大咖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




