31

房多多 Service Mesh 实践

 5 years ago
source link: http://dockone.io/article/8487?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

什么是 Service Mesh

Service Mesh 是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh 保证请求可以在这些拓扑中可靠地穿梭。在实际应用当中,Service Mesh 通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。

Service Mesh 是位于 TCP / IP 之上的抽象层的网络模型。 它假设底层的 L3/L4 网络存在并且能够从点到点传送字节。它也假定这个网络和环境的其他方面一样是不可靠的,因此 Service Mesh 也必须具备处理网络故障的能力。

在某些方面,Service Mesh 有点类似 TCP/IP。TCP 对网络端点间传输字节的机制进行了抽象,而 Service Mesh 则是对服务节点间请求的路由机制进行了抽象。

Service Mesh 在房多多的需求背景

房多多在2018年Q3的时候已经完成大部分服务容器化,房多多容器化的网络方案主要是 Overlay 和 Macvlan,Overlay 网络提供给 nodejs 服务使用,Macvlan 主要给 Java 服务使用。关于 Macvlan 网络性能的测试可以参照网上的一些论文,一般来说,Macvlan 网络可以达到物理网络 95% 以上的性能。我们把 Dubbo 服务挂在 Macvlan 的网络下实现 Dubbo 服务与原有虚拟机服务的互联互通。在把 Dubbo 服务容器化的过程中,发现 Dubbo 对容器的支持并不好,获取网卡 IP 的逻辑也有问题,在多块网卡的容器中,Dubbo 框架经常会随机的获取 IP。官方提供了一个使用环境变量告诉框架要注册的 IP 的方案:

  • DUBBO_IP_TO_REGISTRY --- Registering to the IP address of the registration center
  • DUBBO_PORT_TO_REGISTRY --- Registering to the port of the registration center
  • DUBBO_IP_TO_BIND --- Listening IP addresses
  • DUBBO_PORT_TO_BIND --- Listening ports

UfeeyeN.jpg!web

这个方案并不是很优雅,需要每个服务都维护一个环境变量用于告诉框架需要注册的 IP,所以我们采用了只挂载 Macvlan 网络的方案。

既然 Dubbo服务都挂载到 Macvlan 网络了,有些服务同时提供 HTTP 和 Dubbo服务,如何实现对 HTTP 服务的代理就成了我们考虑的问题,这时候 Service Mesh 进入了我们的视野。

此外,由于此时大部分流量的负载均衡还依赖 Nginx 转发,在 AppID 400+ 的背景下,运维团队和业务团队迫切的需要更高效的方案来解决配置管理和沟通成本的问题,构建房多多 Service Mesh 体系就显得尤为重要,Envoy 是一个成熟稳定的项目,也能够满足近期的需求,在现阶段我们并没有人力去动 Envoy,所以我们直接使用了 Envoy。

为了使 Service Mesh 支持 Overlay 网络和 Macvlan 网络,我们把 Envoy 的一块网卡挂载在 Macvlan 网络中,另一块网卡挂载在 Overlay 网络中,这样 Envoy 就成为内部网关服务,托管内部调用流量。

Vru6fq6.jpg!web

构建数据平面配置的 XDS 服务

XDS 服务主要功能是给数据平面提供服务的集群配置、路由配置等信息,并且需要实现微服务架构中降级和限流的配置功能。

由于历史原因,还有相当多的业务无法从 VM 迁移到容器,需要有一个同时兼容容器和 VM 的数据平面服务,目前 XDS 服务的支持的功能如下:

  • 集群数据来源同时包括容器内部 DNS 和发布系统的 VM 数据
  • 支持多个 vhost 配置
  • 支持路由配置
  • 支持速率控制和网关错误重试

IBfqqa2.jpg!web

研发效率的提升和改进

在房多多,Service Mesh 体系的建设大幅提高了研发效率,节省了大量维护配置所花费的时间,降低了人为配置产生 bug 的可能性,研发流程的改进如下图:

3uEvYjb.jpg!web

同时也降低了框架开发成本和业务改动的成本,每次推动业务升级框架都需要比较长的一段时间,业务无法及时用上新框架的功能,多种框架版本也加重运维负担,Service Mesh 帮我们解决了很多痛点。

  • 代理层实现服务发现,对于开发而言只需要开发一个单机的应用,降低框架开发成本
  • 降级和限流都在代理层实现,规则灵活,方便修改策略
  • 基础架构的升级无需依赖业务

小结和规划

得益于云原生架构,Service Mesh 可以使用云原生的基础设施,基础设施能力的改进可以直接赋能业务,而不像传统的框架一样,基础设施的升级和改进无法提高传统框架的服务能力。

房多多的 Service Mesh 还处于初级阶段,后面可以做的事情还有很多,比如蓝绿发布,类似 API 网关的 API 版本部署,配置镜像等。

原文链接: https://mp.weixin.qq.com/s/nZ1V9RUdLPf0V3mvKulhCQ


Recommend

  • 17

    2020年12月03日 作者: 继东 薛晨 业祥 张昀 文章链接 5802字 12分钟阅读在私有云集群环境下建设 Service Mesh ,往往需要对现有技术架构做较大范围的改造,同时会...

  • 9

    Chaos Mesh® 在腾讯——腾讯互娱混沌工程实践PingCAPSQL at Scale本篇文章整理自腾讯互娱高...

  • 5

    服务网格(Service Mesh)在中国工商银行的探索与实践 导读 ServiceMesh是下一代的微服务架构基础。蚂蚁集团从 2018 年初开始技术探索并进行了落地试点。目...

  • 10

    Service Mesh 在中国工商银行的探索与实践发布于 今天 10:12 *Service Mesh* 是下一代的微服务架构基础。蚂蚁集团从 2018 年初就开始了技术探索并...

  • 2

    两年前Service Mesh(服务网格)一出来就受到追捧,很多人认为它是微服务架构的最终形态,因为它可以让业务代码和微服务架构解耦,也就是说业务代码不需要修改就能实现微服务架构,但解耦还不够彻底,使用还是不方便,虽然架构解耦了,但部署还没有解耦。

  • 4

    Service Mesh已经在云原生界火了很多年,大家的探索热情依然不减。而最近一段时间Proxyless Service Mesh也开始进入大家的视野,比如:Istio官宣支持gRPC Proxyless Service MeshDubbo 3.0引入Proxyless Service Mesh架构那么,...

  • 2

    KUN(中文名鲲)是UCloud面向内部的基于Kubernetes的资源交付平台,提供监控告警、CI/CD、网络双栈、Service Mesh等能力。在践行Service Mesh理念的过程中,面对Istio的不足,团队针对其源码做了大量改进,包括给网络子系统P...

  • 5
    • www.servicemesher.com 2 years ago
    • Cache

    轻量Service Mesh在Ucloud的实践

    轻量Service Mesh在Ucloud的实践 · Service Mesh|服务网格中文社区 2018年6月14日 ...

  • 6
    • www.51cto.com 1 year ago
    • Cache

    携程Service Mesh性能优化实践

    携程Service Mesh性能优化实践-51CTO.COM 携程Service Mesh性能优化实践 作者:Cloud Container 2022-07-15 09:20:17

  • 5
    • www.51cto.com 1 year ago
    • Cache

    Proxyless Mesh 在 Dubbo 中的实践

    作者 | 王程铭随着 Dubbo 3.1 的 release,Dubbo 在云原生的路上又迈出了重要的一步。在这个版本中添加了 Proxyless Mesh 的新特性,Dubbo Proxyless Mesh 直接实现 xDS 协议解析,实现 Dubbo 与 Control Plane 的直接通信,进而实现控制面对流量管控、服务治...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK