006 云原生之 Service Mesh(Spring Cloud)
Spring Cloud 典型架构
每个微服务应用启动后,都会向服务注册中心进行注册。服务注册中心产品包括 Eureka、Console、Etcd 等。注册的信息包括微服务的应用名、对外服务的 IP 地址和端口号、应用健康度检查 HTTP URL,还有一些开发者自行设置的 tag 信息等。通常,我们不用考虑如何进行服务注册这些琐事,在 Spring Boot 应用中,只需要添加对应服务注册中心的 starter 依赖,然后设置连接地址即可。具体的服务注册对开发者来说完全是透明的。
在 Spring Cloud 架构下,微服务的通信只需要添加对应的 @EnableDiscoveryClient Annotation,让应用连接到 RegistryServer,然后应用向 Registry Server 查询相关的服务(这个过程就是我们所说的服务自动发现),最后创建一个具有负载均衡能力的 RestTemplate,以便访问其他的 HTTP REST 服务。
针对外部接入的场景,Spring Cloud 还提供了 Gateway 方案,即应用无须接入 Registry Server,而是通过 Cloud Gateway 调用服务,由 Cloud Gateway 负责与 Registry Server 的对接,完成服务发现和对应的服务调用。
Spring Cloud 也存在一些不足之处,尤其是在多语言支持上。如果技术栈基于 JVM,选择的编程语言是 Java、Kotlin、Scala 等 JVM 生态的语言,那么 Spring Cloud 方案就是非常不错的选择。但如果系统的核心编程语言不是 Java,而是 Node.js、Go、Python 或者 Rust 等语言,Spring Cloud 方案就不太适合了。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/0042ca5e0c113d362cf2c84fc】。文章转载请联系作者。
评论