本文分享自华为云社区《DTSE Tech Talk | 第46期:云原生微服务的下一站:Proxyless Service Mesh》,作者:华为云社区精选。

本期直播主题是《云原生微服务的下一站:Proxyless Service Mesh》,华为云云原生DTSE技术布道师、华为云技术规划专家,Sermant开源社区创始人杨奕以及华为云云原生DTSE技术布道师、Sermant社区PMC李来,和开发者一起交流了微服务架构演进历程、新一代的新一代云原生无代理服务网格Sermant如何解决以往架构的痛点以及实操演示如何改造升级微服务架构。

微服务架构各自的痛点

在微服务的概念出现之前分布式业务的改造最早是通过传统的SOA(面向服务)架构来进行的。SOA架构一般会部署集中式的Load Balancer或者中心网关。它的优点是架构简单,但是性能低下,可扩展性差。

此后微服务SDK架构开始流行起来,例如Dubbo和Spring Cloud,主要是通过业务应用中引入SDK来实现服务注册发现、限流降级、全链路灰度等服务治理能力。这种架构的性能卓越,功能丰富,但应用改造成本高,升级困难。

近年来较为流行的微服务架构是Service Mesh 边车架构,它通过在微服务旁边挂载一个单独sidecar进程,去接管各种服务治理能力。Service Mesh架构的特点是应用改造成本低,可以解决多语言问题,但是资源消耗高,性能低下。

Sermant是什么

Sermant是面向Java微服务的新型云原生Proxyless Service Mesh方案,它结合了上述三种微服务架构的优势,并且解决了它们的痛点问题,既有SDK架构的高性能、多功能的好处,又有边车架构的零侵入优势, 而且还能一键接入。

Sermant核心原理是利用字节码增强为宿主应用程序提供插件化的服务治理功能,并且提供动态配置用于调整运行时服务治理功能。此外,配套的Backend组件也使得Sermant具有边车自身运行时的可观测能力。

Sermant的核心架构优势

Sermant的Proxyless Service Mesh架构具有高性能、插件化、非侵入的特点。

  • 高性能

Sermant利用了Java的字节码增强能力,实现方式是面向AOP的服务治理能力注入。相对于Istio这种sidecar架构来说,无独立进程开销,性能提升明显。

  • 插件化

Sermant框架底座封装了字节码增强的SPI接口,提供了动态配置、事件上报等能力,基于这个底座的插件开发基础,Sermant提供了完善和便利的开发生态,把所有的服务治理功能插件化。目前开源仓库中的插件已经有了限流降级、灰度发布、优雅上下线等能力

另外,各个插件之间、插件和业务之间做到了类隔离,不但使得治理能力解耦,也避免了和业务应用之间的类冲突问题。Sermant完善的类隔离机制使得插件可以轻松地实现热插拔,在故障注入等场景以及插件升级时无需中断应用即可将插件动态注入到业务应用进程中。

  • 非侵入

Sermant是基于JavaAgent实现的,利用字节码增强的能力,Sermant不需要修改业务应用的源代码,在运行时可以动态修改目标类的字节码,对于业务应用的开发者来说是无感知的。

在虚机场景,开发和运维人员只需在java -jar启动应用程序的命令前,添加一段-javaagent的启动参数指定Sermant的jar包的路径就可以让应用在运行时挂载Sermant。

在容器场景,在部署了sermant-injector组件后,创建容器时只需在Deployment中添加一行sermant-injection:enabled的Label就能在创建Pod时让业务应用挂载Sermant启动,真正做到一键接入。

Sermant在微服务治理中的应用

  • 微服务架构改造

传统的SOA/ESB架构做改造升级一般为两种:引入微服务SDK对海量的微服务做全量改造;引入传统的sidecar架构,对微服务做少量改造。前者的改造量巨大,各业务部门之间难以协同推进;后者工作量较少,但是性能和运维问题仍存在隐患。

Sermant的改造方式对应用非侵入,周期短,并且支持灰度改造,在不影响业务稳定的前提下,可以逐步实现架构的整体升级。

▲ 微服务架构改造

  • 全链路灰度发布

Sermant的流量染色、流量标签透传、标签路由能力使得Sermant具备了完整的全链灰度发布的能力。并且染色、透传、路由规则都支持动态配置,让全链灰度发布可以按照实际场景的需求来进行开关或调整治理规则。

点击关注,第一时间了解华为云新鲜技术~

云原生微服务的下一站:Proxyless Service Mesh的更多相关文章

  1. NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南

    Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...

  2. .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

    系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

  3. Solon 1.8.0 发布,云原生微服务开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  4. Solon 1.8.3 发布,云原生微服务开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  5. 微服务架构下分布式事务解决方案——阿里云GTS

    https://blog.csdn.net/jiangyu_gts/article/details/79470240 1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这 ...

  6. 微服务架构下 CI/CD 如何落地

    本文系云原生应用最佳实践杭州站活动演讲稿整理.杭州站活动邀请了 Apache APISIX 项目 VP 温铭.又拍云平台开发部高级工程师莫红波.蚂蚁金服技术专家王发康.有赞中间件开发工程师张超,分享云 ...

  7. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  8. 微服务架构下分布式Session管理

    转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”. 一.应用架构变 ...

  9. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...

  10. 微服务框架下的思维变化-OSS.Core基础思路

    如今框架两字已经烂大街了,xx公司架构设计随处可见,不过大多看个热闹,这些框架如何来的,细节又是如何思考的,相互之间的隔离依据又是什么...相信很多朋友应该依然存在自己的疑惑,特别是越来越火热的微服务 ...

随机推荐

  1. 一些常见小程序的UI设计分享

    外卖优惠券小程序的UI设计 电子商城系统UI分享 A B C

  2. Linux账号密码安全运维

    前言 随着云计算厂商的兴起,云资源如ECS不再只有企业或者公司才会使用,普通人也可以自己买一台ECS来搭建自己的应用或者网站.虽然云计算厂商帮我们做了很多安全相关的工作,但并不代表我们的机器资源就绝对 ...

  3. Java内部类与匿名类

    内部类 定义: 一个类的内部又完整的嵌套了另一个类结构,被嵌套的类就被我们称为内部类,嵌套内部类的类被我们称为外部类 //外部类 class Outer { //内部类 class Inner { } ...

  4. 殷浩详解DD系列

    第五讲:https://blog.csdn.net/Taobaojishu/article/details/115911833 内部有1-4讲链接

  5. Kubernetes:kube-apiserver 和 etcd 的交互

    kubernetes:kube-apiserver 系列文章: Kubernetes:kube-apiserver 之 scheme(一) Kubernetes:kube-apiserver 之 sc ...

  6. Util应用框架基础(五) - 异常处理

    本节介绍Util应用框架如何处理系统错误. 概述 系统在运行过程中可能发生错误. 系统错误可以简单分为两类: 系统异常 系统本身出现的错误. 业务异常 不满足业务规则出现的错误. 如何处理系统异常 如 ...

  7. JPA中@ElementCollection使用

    转载请注明出处: 在JPA中,@ElementCollection注解主要用于映射集合属性,例如List.Set或数组等集合属性,以及Map结构的集合属性,每个属性值都有对应的key映射.这个注解可以 ...

  8. 高效开发与设计:提效Spring应用的运行效率和生产力

    引言 现状和背景 Spring框架是广泛使用的Java开发框架之一,它提供了强大的功能和灵活性,但在大型应用中,由于Spring框架的复杂性和依赖关系,应用的启动时间和性能可能会受到影响.这可能导致开 ...

  9. Jdk_HashMap 源码 —— hash(Object)

    Jdk 源码 HashMap 的源码是在面试中考的算是比较多的,其中有很多高性能的经典写法,也值得多学习学习. 本文是本人在阅读和学习源码的过程中的笔记(不是教程),如有错误欢迎指正. Jdk Ver ...

  10. 手动部署Kraft模式Kafka集群

    手动部署Kraft模式kafka集群 基本信息 IP地址 Hostname Release Kafka-Version 172.29.145.157 iamdemo1 Centos7.9 kafka_ ...