SolarMesh新版本来袭:引入流量插件

2022-04-11

831

近日,kaiyun开云创新SolarMesh正式发布 v1.10.2 版本,本次版本更新的主题是流量插件。SolarMesh允许开发者对流经服务的流量在入站、出站时进行编码增强,达到对业务流量的切面编程(AOP Aspect Oriented Programming)能力。


近年来,服务网格(Service Mesh)一直被称为下一代微服务技术,这种技术架构相比SOA架构(面向服务架构)而言,更加强调业务逻辑与服务治理逻辑的分层及解耦,在业务逻辑和基础实施逻辑间划分出清晰的边界。


不同于以SpringCloud为代表的SDK实现方式,在服务网格架构下,服务与服务之间的通信通过代理服务——sidecar进行,所有流经的流量都会被代理劫持,再由代理转发到业务服务,以此来实现业务逻辑和基础实施逻辑间的分离。下图清晰地展现了在服务网格中应用的通信结构:


图片来自:Pattern: Service Mesh(http://philcalcado.com/2017/08/03/pattern_service_mesh.html)


这种架构不仅实现了业务无侵入的流量管控,在业务上更是为业务研发人员提供了一条全新的业务拓展路线,面向流量编程。如果业务研发人员将一段业务直接注入到sidecar当中,由sidecar执行,就相当于为流量做了一次动态增强,利用服务网格代码无侵入的特性,将类似于Spring的切面编程能力扩展到所有业务服务当中。


SolarMesh在 v1.10.2 版本中引入了流量插件的概念,将一些轻量级的业务封装成插件,在SolarMesh的界面上为应用流量在入站、出站时进行编码增强,达到对业务流量的切面编程(AOP Aspect Oriented Programming)能力。可以应用于对流量有业务诉求的使用场景,例如对敏感业务数据的过滤,在系统需要停机更新前下发更新通知,对特定核心接口的数据上报等。


演示


示例项目


此次演示使用了一个典型的电商项目mall-swarmhttps://github.com/macrozheng/mall-swarm)


mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。


由于mall-swarm依赖众多,部署麻烦,我们将mall-swarm的所有中间件做了一份k8s部署yaml,让所有的中间件都部署到集群内方便测试,改造后源码开源在mall-swarm-istio(https://github.com/solarmesh-cn/mall-swarm-istio),所以我们这次使用mall-swarm改造版。


前置条件


  • 安装 SolarMesh v1.10.2 及以上版本

  • 在k8s集群中部署了mall-swarm-istio项目

  • 服务接入了sidecar,并且访问正常


首先需要在流量插件库中声明已有的插件




重启solar-controller组件,更新流量插件库


需求


在mall-swarm-istio项目中,访问首页->订单->订单详情页面,可以看到,对外暴露的手机号码是以明文形式展示在页面上的。



在某些场景中,以明文展示真实手机会存在一些安全隐患。所以我们希望可以对手机号码进行加密,让用户不能直接拿到订单上的真实手机号码。在这样的场景下,我们就可以借助流量插件的能力,在数据响应给前端之前对数据进行清洗,加密敏感信息。


实现


访问SolarMesh的流量视图页面,查看整个项目的流量拓扑。



由于手机号码是从mall-admin这个应用返回的数据,所以我们只需要控制住mall-admin这个应用的流量,让它的敏感数据不能响应到应用之外。


选择mall-admin,打开流量插件侧边栏。



添加一个数据清洗流量插件,这个插件会在响应数据中清洗掉所有手机号码。



保存数据清洗流量插件,这样流量插件就会在应用上生效了。



再次访问首页->订单->订单详情页面,现在这个页面的手机号码就不再是明文显示,而是加密之后的状态。



总结


上文中,我们使用了一个简单的例子实现了对手机号码的清洗加密工作,流量插件的工作原理是在 SolarMesh v1.9.1 版本更新中发布的WASM(https://mp.weixin.qq.com/s/I3fEuX69gAoAaSVhjcaUkg)能力的一个扩展。


在实际使用场景中,业务研发人员只需要基于SolarMesh提供的WASM脚手架,根据企业自身的业务特点进行轻量级的函数式编程,将打包好的插件交付给SolarMesh即可完成对插件库本身的扩展,并利用流量插件能力灵活的对业务服务进行增强。辅助用户利用服务网格的特性,满足特定场景下的定制化需求。


技术交流
我们建立了多个云原生技术交流群,其中有来自Oracle、Citrix、华为、腾讯等国内外云计算专家,立即扫码,拉你进群。目前已有2000+开发者加入我们......
云原生厂商 云原生技术服务商
在云原生时代,kaiyun开云创新致力于通过赋能开发者,实现企业快速迭代与交付,大幅提升创新效率。
产品下载