星星博客 »  > 

微服务 SpringCloud是什么以及和k8s关系

SpringCloud 是什么?


官方解释:

官网: https://spring.io/projects/spring-cloud/
SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot 的开发风格做到一键启动和部署。SpringCloud 并没有重复制造轮子,它只是将各家公司开 发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
 
 

SpringCloud 和 SpringBoot 什么关系?


SpringBoot 专注于快速方便的开发单个个体微服务。

SpringCloud 是关注全局的微服务协调整理治理框架,它将 SpringBoot 开发的一个个单体微服务整合并管理起来,SpringBoot 可以离开 SpringCloud 独立开发项目,但是 SpringCloud 离不开

SpringBoot,属于依赖关系。
 
 
 

SpringCloud 优缺点


  • SpringCloud 来源于 Spring,质量、稳定性、持续性都可以得到保证。
  • SpringCloud 是 Java 领域最适合做微服务的框架,对 Java 开发者来说就很容易开发。
  • 耦合度低,不影响其他模块
  • 多个开发团队可以并行开发项目,提高开发效率
  • 直接写自己的代码即可,然后暴露接口,通过组件进行服务通信。

缺点

  • 只能针对 Java 开发
  • 部署麻烦、组件多
  • 每个微服务都可以用一个数据库,导致数据管理复杂
  • 一套完整的微服务包括自动化部署,调度,资源管理,进程隔离,自愈,构建流水线等功能,单靠SpringCloud 是无法实现的,所以 SpringCloud+k8s 才是最好的方案

 

为何要将 SpringCloud 项目部署到 k8s 平台?


 

SpringCloud 只能用在 SpringBoot 的 java 环境中,而 kubernetes 可以适用于任何开发语言,只要能被放进 docker 的应用,都可以在 kubernetes 上运行,而且更轻量,更简单。
每个微服务可以部署多个,没有多少依赖,并且有负载均衡能力,比如一个服务部署一个副本或 5 个副本,通过 k8s 可以更好的去扩展我们的应用。
Spring 提供应用的打包,Docker 和 Kubernetes 提供部署和调度。Spring 通过 Hystrix 线程池提供应用 内的隔离,而 Kubernetes 通过资源,进程和命名空间来提供隔离。Spring 为每个微服务提供健康终 端,而 Kubernetes 执行健康检查,且把流量导到健康服务。Spring 外部化配置并更新它们,而Kubernetes 分发配置到每个微服务。
SpringCloud 很多功能都跟 kubernetes 重合,比如服务发现,负载均衡,配置管理,所以如果把
SpringCloud 部署到 k8s,那么很多功能可以直接使用 k8s 原生的,减少复杂度。
SpringCloud 容易上手,是对开发者比较友好的平台;Kubernetes 是可以实现 DevOps 流程的,
SpringCloud 和 kubernetes 各有优点,只有结合起来,才能发挥更大的作用,达到最佳的效果。

 

SpringCloud 项目部署到 k8s 的流程


制作镜像--->控制管理 pod--->暴露应用--->对外发布应用--->数据持久化---→日志/监控

1.制作镜像: 应用程序、运行环境、文件系统
2.控制器管理 pod:deployment 无状态部署、statefulset 有状态部署、Daemonset 守护进程部署、 job & cronjob 批处理
3.暴露应用:服务发现、负载均衡
4.对外发布应用:service、Ingress HTTP/HTTPS 访问
5.pod 数据持久化:分布式存储-ceph 和 gluster
6.日志/监控:efk、prometheus、pinpoint 等

 

相关文章