微服务框架Dubbo、SpringCloud和Kubernetes的区别
学习课程连接:
Dubbo、SpringCloud和Kubernetes该如何选型?
Dubbo、SpringCloud 和 Kubernetes,是当前开发微服务的三个主流开源框架和平台。
在主流互联网公司的架构师面试中,这三者被问到的频率也极高。那这三个技术到底有何异同,分别适用于什么场景,该如何选择?
dubbo是最早一代服务框架。之后演进出spring cloud,spring cloud基本涵盖dubbo的功能,扩展增加了网关等组件。前几年又演进出k8s,它的核心功能确实是容器发布调度,但是它也融合了dubbo/spring cloud的功能,比如服务发现,API网关/ingress等。
长期看,dubbo/spring cloud会被k8s所取代。
微服务的关注点:
- 配置管理 如数据库连接字符串,缓存的过期时间等
- 服务发现和负载均衡
- 弹性和容错
- API管理
- 服务安全
- 日志监控
- Metrics监控
- 调用链监控
- 调度和发布
- 自愈和自动伸缩
Dubbo、SpringCloud和K8s的横向对比
NA 表示没有
k8s推荐使用Fluentd进行日志监控
Metricd监控
Dubbo、SpringCloud和K8s优点和缺点
选择建议
为什么springcloud比较消耗资源呢?放在容器里更加消耗呢?
通常情况下(具体看应用依赖的starters),springboot应用会加载很多的依赖项,有些其实并非必须,所以springboot应用通常会比较占资源。另外,容器本身也是需要占用OS资源的,所以springboot + 容器的组合通常会更加占资源。