五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

微服务综合治理面临的久久挑战

在业务初期,因人手久久有限,想要快速开发并爱上线产品,很多团队使用单体的架构来开发。但是随着公司的发展,会不断往系统里面添加新的业务功能,系统越来越庞大,需求不断增加,越来越多的人也会加入到开发团队,代码库也会增速的膨胀,慢慢的单体应用变得越来越臃肿,可维护性和灵活性逐渐降低,维护成本越来越高。

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

这个时候很多团队会把单体应用架构改为微服务的架构,解决单体应用的问题。但随着微服务越来越多,运维投入会越来越大,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战,下面从软件生命周期的角度来分析这些挑战:

  • 开发测试态

    • 如何实现开发、测试、线上环境隔离?
    • 如何快速调试本地变更?
    • 如何快速部署本地变更?
  • 发布态

    • 如何设计服务发布策略?
    • 如何无损下线旧版本服务?
    • 如何实现对新版本服务灰 度测试?
  • 运行态

    • 线上问题如何排查?有什么工具可以利用呢?
    • 对于服务质量差的节点如何处理?
    • 对于完全不工作的实例我们如何恢复?

面对以上问题,Serverless 应用引擎在这方面都做了哪些工作?

Serverless 应用引擎

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

如上图所示,Serverless 应用引擎(SAE)基于神龙 + ECI + VPC + SLB + NAS 等 IaaS 资源,构建了一个 Kubernetes 集群,在此之上提供了应用管理和微服务治理的一些能力。它可以针对不同应用类型进行托管,比如 Spring Cloud 应用、Dubbo 应用、HSF 应用、Web 应用和多语言应用。并且支持 Cloudtoolkit 插件、云效 RDC / Jenkins 等开发者工具。在 Serverless 应用引擎上,零代码改造就可以把 Java 微服务的应用迁移到 Serverless。

总的来说,Serverless 应用引擎能够提供成本更优、效率更高的一站式应用托管方案,零门槛、零改造、零容器基础,即可享受 Serverless + K8s + 微服务带来的技术红利。

微服务治理实践

1. 开发态实践

1)多环境管理

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

  • 多租户共有一个注册中心,通过不同的租户对流量进行隔离;更进一步可以通过网络 VPC 进行环境隔离;
  • 提供环境级别的运维操作,比如一键停止和拉起整个环境的功能;
  • 提供环境级别的配置管理;
  • 提供环境级别的网关路由流量管理。

2)云端联调

Serverless 应用引擎(SAE)基于 Alibaba CloudToolkit 插件+ 跳板机可以实现:

  • 本地服务订阅并注册到云端 SAE 内置的注册中心;
  • 本地服务可以和云端 SAE 服务互相调用。

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

如上图所示,在实现的时候用户需要有一个 ECS 代理服务器,实际注册的是 ECS 代理服务器到 SAE 的注册中心,IDEA 在安装 Cloudtoolkit 插件以后,在启动进程时,会在本地拉起一个通道服务,这个通道服务会连上 ECS 代理服务器,本地所有的请求都会转到 ECS 代理服务器上,云端对服务的调用也会通过 ECS 代理转到本地,这样就可以以最新的代码在本地断点调试,这就是云端联调的实现。

3)构建快速开发体系

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

代码在本地完成联调以后,要能快速地通过 Maven 插件和 IDEA-plugin,可以很快地一键部署到云端的开发环境。

2. 发布态实践

1)应用发布三板斧

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

五月丁香(修改版)原创如何通过 Serverless 综合提高 Java 微服务

  • 可灰度:应用在发布的过程中,运维平台一定要有发布策略,包括单批、分批、金丝雀等发布策略;同时还要支持流量的灰度;批次间也要允许自动/手动任选。
  • 可观测:发布过程可监控,白屏化实时查看发布的日志和结果,及时定位问题。
  • 可回滚:允许人工介入控制发布流程:异常中止、一键回滚。

通过这三点可以让应用发布做到可灰度、可观测、可回滚。

上一篇:世纪联华的 Serverless 之路


下一篇:kubernetes Serverless、CaaS、FaaS是什么