Spring Cloud 微服务部署示例
本系列文档介绍如何在 Rainbond 上部署 Spring Cloud 微服务的优势以及如何融合,包括部署示例教程。
Spring Cloud 微服务部署在 Rainbond 的优势
概述
目前很多公司已经拥有了基于 Spring Cloud 微服务框架开发的业务系统。作为老牌成熟的微服务架构,Spring Cloud 微服务框架为企业业务开发提供了诸多好处。 我们不用去探讨这些好处是什么, Spring Cloud 巨大的市场应用基数已经指明了它的价值。但是它是否是完美无瑕,再无可补足之处呢?世界上没有完美的产品, Spring Cloud 也是如此,以下这些缺点亟待完善:
- 单个组件没有办法很好的管理
- 难以找到性能监控的方案
- 难以灵活的伸缩以适应业务并发
- 部署起来比较麻烦,包括微服务组件本身以及相关的数据库、中间件
针对以上 4 点,Rainbond 平台可以进行天然的补足。
支持单个组件的全生命周期管理
Rainbond 会把 Spring Cloud 的每个微服务组件单独看待,并可以针对每个组件进行深度的管理,比如:
- 开启、关闭、重启、构建、删除、滚动更新、版本回滚
- 性能监控
- 日志管理
- 垂直/水平伸缩
- 基于依赖关系的服务发现与注册
- 持久化存储以及服务组件间的共享存储
- 端口设置以及域名配置
- 插件扩展
- 构建源设置,包括 MAVEN 各种详细参数的设置、配置自动触发构建机制
- 自定义环境变量配置、健康检测机制、权限管理
性能监控
Rainbond 支持插件扩展方式的性能监控方案,支持对基于 Http、Mysql 协议的应用进行 平均响应时间、吞吐率、在线人数
的监控。并检测最近 5 分钟内耗时做多的 url 排行,对于调试系统性能有指导作用。
垂直/水平伸缩
Rainbond 支持一键进行伸缩,这种伸缩包含两个层面:
- 垂直伸缩:伸缩单个服务组件所使用的内存大小
- 水平伸缩:为服务组件启动多个后端实例,并自动配置负载均衡
Spring Cloud 微服务设计已经将程序与数据分离,所以将服务组件视作无状态服务直接进行水平伸缩进行快速扩容。
基于应用市场的快速部署
得益于 Rainbond 独有的共享库机制,在首次部署完成后,我们可以将整套 Spring Cloud 微服务(包括所有微服务组件以及数据库等中间件)打包作为应用模版发布到共享库中去。发布完成后,再次安装只需要从共享库一键安装,极大的简化了部署流程。
在首次部署 Spring Cloud 的过程中,对所使用的诸如 Mysql Redis Rabbit 等中间件,Rainbond 公有云市提供了制作好的市场应用,可供拉取后一键安装。免除了传统部署中搭建各种中间件的麻烦。
Spring Cloud 微服务与 Service Mesh 的融合
概述
Rainbond 原生支持 Service Mesh 微服务架构。也就是说,无论原来是什么,只要部署在 Rainbond 上,那么就天然的成为了 Service Mesh 微服务。这也是 Service Mesh 微服务架构的一大特点:对原应用无侵入。
Spring Cloud 部署在 Rainbond 上后,整套业务即是完整的 Spring Cloud 微服务,又是一套 Service Mesh 微服务。那么如何使业务系统即保留了原有 Spring Cloud 微服务架构的特点,又能享受到 Service Mesh 带来的种种好处呢?这就涉及到了Spring Cloud 微服务与 Service Mesh 的融合。
融合的核心思想,就是 Spring Cloud 框架维护的功能,保持不变; Spring Cloud 框架无法维护的功能,交给 Service Mesh 和 Rainbond。
Spring Cloud 不维护什么
我不会去深入讨论 Spring Cloud 微服务框架都维护了什么,这样的帖子网上有很多。
在这里,我想说明的是,当读者选择将自己原有的 Spring Cloud 微服务部署在 Rainbond 时,有哪些工作应该由 Rainbond 来完成。