容器化时代我们应当选择Kubernetes
前天发的文章《基于Kubernetes 构建.NET Core 的技术体系》,有同学问.NET Core上有Spring Cloud类似的平台吗? .NET Core出现这么久了,这个为云原生应用开发而准备的系统需要Spring cloud这样的全家桶吗?今天写下这篇文章的目的就是陈述一下容器化时代还需要Spring Cloud这样的基础设施吗? 大家希望使用Spring Cloud的初衷都是为了实现应用的微服务化。然而对于微服务而言,有六个基本必须实现的:
- 进程通讯
- 服务注册与发现
- 负载均衡
- 配置中心
- 熔断器
- 网关路由
我们已经进入到容器化时代,Kubernetes成为了市场上容器编排的事实标准,而且k8S 同样具备了微服务所需要的服务注册与发现、负载均衡、配置中心。Spring cloud 的核心是Netflix微服务框架,非常成熟,但是在netflix oss开发初期,那个时候还没有docker,我们现在所有的服务都是通过虚拟容器承载的。
Netflix OSS的许多内容都是在一个已经过去的年代写出来的,那时所有东西都只能运行在AWS云上而没有其它选择。关于那个年代的许多宝贵遗产和前提假设都已经被封装到了Netflix的库里面,对于现在你运行的环境(比如Linux容器)已经不适用了。在Linux容器、Docker、容器管理系统等等出现之后,我们越来越看到把我们的微服务运行在Linux容器(公有云、私有云,或者都要等等)里的巨大价值。另外,因为这些容器都是直接把这些服务打包起来,所以我们倾向于不要过多关心在容器里面运行的到底是什么技术(是Java?还是Node.js?或者Go?或者.NET Core?)
Kubernetes是多语言的,不仅仅针对Java平台,而是以通用的方式为所有语言解决分布式计算问题。Kubernetes提供了配置管理、服务发现、负载均衡、跟踪、统计、单实例、平台级和应用栈之外的调度工作。该应用不需要任何客户端逻辑的库或代理程序,可以用任何语言编写。这意味着一个平台可以被多个团队(包括使用
Spring的
Java开发人员)使用,并提供多种用途:应用程序开发、测试环境、构建环境(源码运行、构建服务、依赖仓库)等。
Kubernetes解决了更广的微服务架构问题。除了提供运行时服务,
Kubernetes也可以让你制定环境、设置资源限制、RBAC、管理应用程序生命周期、允许自动扩容和自我修复(几乎表现得像一个抗脆弱平台)。
- 在K8s集群中,没有必要拥有Eureka。K8s中的ETCD拥有所有必要的信息。 您的应用程序将通过指定的K8s服务名称联系K8s API服务器以获取端点信息。
- Kubernetes 可以解决你所遇到的问题,可能可以取代netflix的整套技术
.NET Core 就是为云原生应用的开发而准备的平台,.NET Core相较于他的哥哥.NET的优势也正是我们很容易的使用C# 语言去构建高内聚低耦合的云原生系统。借助于K8S,service fabric, 我们很容易构建一个.NET Core的微服务生态。结合.NET Core和k8s 容器服务在腾讯云上制作了一个教程 《.NET 微服务实战 — 微信公众号开发( https://cloud.tencent.com/developer/edu/major-100017)》,教程里例子-公众号开发虽然简单,我只是使用这个简单例子来阐述一个简单的问题,云时代的.NET 是怎么样的,我们要怎么样使用.NET Core。
- 2017年,该如何选择容器编排方案? swarm/kubernetes/Mesos ?
- NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!
- 人工智能时代,未来我们应该选择什么工作,才不会被替代?(楚才国科)
- 华为云开源两款容器技术 Kubernetes的拐点时代到来
- 容器时代,难道这就是我们想要的未来?
- 我们为什么选择Kubernetes
- 3G时代,我们到底该选择谁?
- 在编程互汇的时代,我们为什么要选择学习Python?
- kubernetes容器启动详解
- 不重视数据就可能被淘汰——大数据时代,你应该如何选择?
- 《我们应当怎么做需求分析》阅读笔记
- 民主的时代,我们需要架构师吗
- 在 Azure 中部署 Kubernetes 容器集群
- 我们所处的时代,天天都是愚人节...........
- 《Effective STL》 01:慎重选择容器类型
- 时代让我们丢掉了什么
- 大数据热潮是我们这个时代的创新故事,就像四个世纪之前的显微镜
- 大数据时代 何处安放我们的元数据?
- 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
- 我们应当怎样做需求分析(1)