热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Mesh:SideCar是什么?

嗯,,sidecar就是上面这种。。mesh:微服务传统形态和sidecar形态特征:传统形态下,SDK代表着一个特定语言的库、工具包等,由应用程序和微服务框架(比如说dubb

在这里插入图片描述
在这里插入图片描述

嗯,,sidecar就是上面这种。。


mesh : 微服务传统形态 和 sidecar形态

在这里插入图片描述

在这里插入图片描述

特征:

传统形态下,SDK代表着一个特定语言的库、工具包等,由应用程序和微服务框架(比如说dubbo)共处一个进程中,在发布升级中共享生命周期。

serviceMesh下,推荐的是右边的sidecar方案,sidecar方案下没有引入新的功能,调用的拓扑也没有改变,只是改变了原有功能的位置,以独立的应用来存在。大家可以暂时以nginx来理解其网络代理能力也可以。

在这里插入图片描述



  • 在ServiceMesh架构中,给每一个微服务实例部署一个SidecarProxy。该SidecarProxy负责接管对应服务的入流量和出流量,并将微服务架构中的服务订阅、服务发现、熔断、限流、降级、分布式跟踪等功能从服务中抽离到该Proxy中。

  • Sidecar以一个独立的进程启动,可以每台宿主机共用同一个Sidecar进程,也可以每个应用独占一个Sidecar进程。所有的服务治理功
    能,都由Sidecar接管,应用的对外访问仅需要访问Sidecar即可。当该Sidecar在微服务中大量部署时,这些Sidecar节点自然就形成了一个服务网格。


微服务框架的痛点和改进



  • 对于基础架构框架开发者来说存在痛点:面向开发者的模式:新加了功能需要使用框架的应用开发人员配合升级版本,比如要升级maven中的依赖版本号,重新打包发布应用程序,时间上受制于相应的业务应用。业务开发人员相对来说只考虑自身业务稳定等因素,对基础框架的升级具有天然的抗拒心理。



  • 使用SideCar模式带来的改进:这个模式的精髓在于实现了数据面(业务逻辑)和控制面的解耦。带来了下面的两个优点:
    1、面向运维:解耦了调用业务方和微服务,让它们的具备不同的发布升级的生命周期
    2、SideCar作为一个代理,可以完成更多的功能,比如跨语言、限流、负载均衡、灰度、熔断等都可以放到SideCar代理里



缺点:
1、从调用方到服务方增加了两次调用,有性能上的损失。(实际上的设计针对这个做优化,物理机上所有应用跟SideCar之间虽然是跨进程,处于不同的JVM应用中,但是它们处于同一台物理机中,故它们之间的调用可以走内核态方式,整体性能的损失可以在1%以内,平均延迟1.5毫秒左右),理论上多一跳的平均性能损耗在1.5毫秒左右;
2、调用复杂度增加,问题排查难度加大

总结:
对于大规模部署微服务,内部服务异构程度高的场景,使用ServiceMesh方案是一个不错的选择。ServiceMesh实现了业务逻辑和控制的解耦,但是也带来了额外的开销,由于网络中多了一次调用,增加了性能的损耗和访问的延迟。同时,由于每个服务(一般每一台物理机)
都需要部署Sidecar,这也会使本来就具有一定复杂度的分布式系统变得更加复杂。尤其是在实施初期,对ServiceMesh的管理和运维会是一个比较棘手的问题。


推荐阅读
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文汇集了一系列与Windows 7开发相关的资源链接,包括官方开发者指南、培训工具包、兼容性工具包以及SDK等,旨在为开发者提供全面的支持。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文作为SpringCloud Alibaba系列教程的第一部分,主要介绍如何搭建SpringCloud Alibaba的开发环境,帮助初学者快速入门。SpringCloud Alibaba是由阿里巴巴团队开源的一套微服务工具集,旨在简化分布式系统的构建过程。 ... [详细]
author-avatar
拍友2502869293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有