SpringCloud怎么迈向云原生?( 三 )


2022 年 9 月 24 日,由云原生社区主办的第一届 Service Mesh Summit 在上海成功举办,从大会内容上,我们可以看到,Service Mesh在 易用性、通用性、学习成本上,都还是比较高的 。
市场在关注服务网格时更加得理性,而服务网格本身也更加“务实”,以实现快速平稳落地为出发点,解决落地过程中的各种问题,比如性能、资源占用、跨集群、多协议支持、功能扩展等等 。解决这些问题,或者坚持在 Istio/Envoy 体系上继续优化;或者转投其他的实现,更换数据面代理,如 MOSN、Pipy、APISIX、Linkerd Proxy;再或者引入其他的技术来解决,如 eBPF、WASM、RDMA、DPDK 等等 。
4、路在何方4.1 只把k8s作为容器编排调度?目前java为主的微服务体系还是比较完整的,所以即使使用了k8s,也可以仅仅把k8s用作容器编排,不需要对接istio的服务治理能力 。
Spring Cloud全家桶肯定能满足java体系下的微服务一站式设计与实现,这点毋庸置疑 。
当然,问题主要还是在云原生下,多语言的治理能力会有所缺失 。
另外,流量管理上,和knative、seldon等平台打通会比较麻烦,它们都是直接对接istio进行流量管理的 。
4.2 Spring Cloud 的路?Mesh体系下,由于天然支持HTTP调用,因此Spring Cloud的调用接入还是比较方便的,也有Spring Cloud Kubernetes项目做了注册中心的打通 。
核心的痛点在于对统一控制面的服务治理的接入 。
对于Spring Cloud来说,就是要实现Proxyless体系,但是目前官方社区没有看到这方面的特别探索 。
倒是Spring Cloud Alibaba的服务治理组件Sentinel有一些变化 。
Sentinel 的历史

  • 2012 年,Sentinel 诞生,主要功能为入口流量控制 。
  • 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景 。Sentinel 也因此积累了大量的流量归整场景以及生产实践 。
  • 2018 年,Sentinel 开源,并持续演进 。
  • 2019 年,Sentinel 朝着多语言扩展的方向不断探索,推出 C++ 原生版本,同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持,以解决 Service Mesh 架构下多语言限流的问题 。
  • 2020 年,推出 Sentinel Go 版本,继续朝着云原生方向演进 。
  • 2021 年,Sentinel 正在朝着 2.0 云原生高可用决策中心组件进行演进;同时推出了 Sentinel Rust 原生版本 。同时我们也在 Rust 社区进行了 Envoy WASM extension 及 eBPF extension 等场景探索 。
  • 2022 年,Sentinel 品牌升级为流量治理,领域涵盖流量路由/调度、流量染色、流控降级、过载保护/实例摘除等;同时社区将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现 。
另外,Sentinel 社区正在将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现 。有关 Sentinel 流控降级与容错 spec 的最新进展,请参考 opensergo-specification 。
SpringCloud怎么迈向云原生?

文章插图
但是sentinel重点还是关注容错能力,路由能力是缺失的 。
所以,只能继续关注OpenSergo会怎么补齐这块能力了 。
4.3 学习Dubbo 3.0,全面拥抱云原生与Spring Cloud体系一样闻名的Dubbo体系,我们已经可以看到dubbo 3.x从 Mesh 到 Proxyless 对云原生的全面拥抱 。

经验总结扩展阅读