ServiceMesh已经成为微服务领域的热门话题,也被广泛认为是云原生应用的指导架构。理论上,服务网格环境可以提升微服务通信的流量管理和安全级别,提供应用运行状态的全貌,但在实践层面往往难以管理,过于复杂。为了避免陷阱,我们不得不采取一系列步骤来简化流程。确定重要事项,规划探索之旅在踏上ServiceMesh之旅之前,我们首先需要确定最重要的事项,并据此规划探索路径。在微服务之间建立零信任通信已成为大多数企业的当务之急,但不同组织的需求往往各不相同。也许你想要ServiceMesh的高级流量管理功能,也许是通过sidecar代理增强的可观察性。无论您的需求是什么,您都必须首先确定它们的优先级,并获得您的开发人员、SRE工程师和安全运营(SecOps)团队的理解和支持,然后才能开始并专注于完成工作。请注意,不要期望整个过程一蹴而就,否则ServiceMesh的实现之路难免会陷入困境。一旦确定了目标的正确优先级,我们就可以为服务网格之旅创建路线图。作为前进的方向,路线图应概述实施计划的顺序,并确定每个步骤如何与IT和业务目标保持一致。例如,您可以优先考虑增强可观察性的方向,以加快问题解决速度并提高应用程序正常运行时间,以超过预先确定的流量管理目标。通过这个排名,你可以专注于解决ServiceMesh应该达到的目标,并获得相应的回报。明智地选择ServiceMesh解决方案目前,市场上有许多ServiceMesh控制平面,不同的解决方案之间总是有利有弊。在选择ServiceMesh时,请首先确保它能够支持您的运行环境。如果您已经部署了Mesos等系统、内部专有/遗留架构或特定的公共云平台,请确保所选的ServiceMesh与其兼容。其次,确定部署哪个服务网格控制平面。尽管各种类型的ServiceMesh控制平面都提供相似的基本功能,但不同的解决方案在功能和成熟度上总是存在差异。确定服务网格的控制平面是否适合您的用例,并研究应如何设计整个技术堆栈。在这些方面,Istio整体表现更好。比如Istio在服务双向TLS方面占据领先地位,而其他ServiceMesh的微服务零信任实现能力还有待提升。第三,评估您现有的技能和资源可以轻松应对的复杂程度。在增加功能的时候,随着ServiceMesh的规模和集群数量的增加,整个系统会变得越来越复杂。请注意,我们往往会低估开发过程中的复杂程度,实际上很难预测未来会发生什么,因此必须设置限制和缓冲。在选择服务网格时,请关注几个“必要因素”:可观察性、安全性和流量管理、组织中已有的技能、选择最好的服务网格架构等。同时问问自己是否真的需要每个pod有一个sidecar代理,或者如果您需要满足Citrix?ServiceMeshlite等替代或变体架构的需求。为意外和复杂性做好计划无论您计划得多么周密,在实施服务网格时总会遇到意外。但这并不是说计划没有用——你计划得越好,你就越能做好应对意外的准备。代理不是那么透明有时,代理的透明度可能很差。一般来说,当一个微服务试图去调用一些不存在的或者临时有负载压力的资源时,就会触发超时。但是代理的存在扭曲了应用程序超时,导致每个微服务认为其请求已立即收到。为此,我们必须仔细调整应用程序中的超时机制。此外,代理对HTTP流量不够透明。许多代理将HTTP标头转换为小写以实现合规性、一致性和资源消耗。事实上,HTTP/2规范要求标头是小写的。如果您的应用程序仍然按大小写区分HTTP标头,那么代理的干预很可能会破坏其基本功能。确保代理通信引起的细微差别不会破坏您的应用程序,并努力调整代理或应用程序本体以匹配生态系统的实际性质。尽早测试,经常测试我们无法预测未来,也不可能预见哪些组件会出错。服务网格是一个复杂的分布式系统,具有大量移动部件,每个部件都有可能发生故障。如果应用程序出现问题,我们面临的是应用程序本身、相关工具,甚至是其他故障源。为此,重要的是逐步实施、持续监控和频繁测试。为此,您需要拥有完整的可观察性堆栈,包括日志记录、指标、分布式跟踪和服务图。分布式跟踪和服务图再次成为服务可观察性的关键要素。分布式跟踪通过监控微服务架构中的请求流并通过每个微服务跃点建立延迟映射,帮助您快速解决延迟问题。服务图是微服务依赖关系和运行状态的动态图形表示,可以轻松可视化环境并帮助您发现任何问题。另外需要注意的是,一定要坚持部署持续测试,引导项目始终走在正轨上。您可能会考虑设置一个端到端的24/7测试服务来持续测试您的微服务系统。准备大量的修改工作。今天的小作坊明天可能会发展成大企业,必须提前做好准备。您可能需要调整默认的CPU和内存分配机制,以尽可能减少资源消耗。同样,一旦部署了ServiceMesh,修订需求就会涌入。如果没有一个合理的计划,一个持续运行的应用程序将迅速升级为无数的sidecar代理,所以不要玩不确定性游戏。智慧是从错误中学习的,但真正的智慧应该从别人的错误中学习。服务网格在安全性、高级流量管理甚至可观察性方面做出了可靠的承诺,但实现通常很复杂。请认真规划,做好准备,努力走出属于自己的顺利甚至充实的探索之路。
