容器化时代我们应当选择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。
容器化时代我们应当选择Kubernetes的更多相关文章
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...
- Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL
Kind 介绍 Kind是Kubernetes In Docker的缩写,顾名思义是使用Docker容器作为Node并将Kubernetes部署至其中的一个工具.官方文档中也把Kind作为一种本地集群 ...
- 一份.NET 容器化的调查小结
小编在上个月在微信公众号"dotnet跨平台" 做了一个针对.NET 容器化的调查:https://mp.weixin.qq.com/s/oszbuIORT0G8XLLgMZzkn ...
- CTO说|非容器化应用怎么玩多云?Kubernetes不管我们管啊
Kubernetes已经成为容器编排系统的事实标准,是现在主流的跨云容器化应用操作系统. 但是,Kubernetes的目标并不是容器本身,而是承载其上的应用,本质上是为了解决(容器化)应用上云这个难题 ...
- kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...
- Kubernetes — 我的第一个容器化应用
而在这篇文章中,我们就来扮演一个应用开发者的角色,使用这个 Kubernetes 集群发布第一个容器化应用. 在开始实践之前,我先给你讲解一下 Kubernetes 里面与开发者关系最密切的几个概念. ...
- 容器、容器集群管理平台与 Kubernetes 技术漫谈
原文:https://www.kubernetes.org.cn/4786.html 我们为什么使用容器? 我们为什么使用虚拟机(云主机)? 为什么使用物理机? 这一系列的问题并没有一个统一的标准答案 ...
- 为啥Underlay才是容器网络的最佳落地选择
导语: 几年前,当博云启动自研容器网络研发的时候,除了技术选型的考虑,我们对于先做 Underlay 还是 Overlay 网络也有过深度的讨论.当时的开源社区以及主流容器厂商,多数还是以 Overl ...
- 从K8S部署示例进一步理解容器化编排技术的强大
概念 Kubernetes,也称为K8s,生产级别的容器编排系统,是一个用于自动化部署.扩展和管理容器化应用程序的开源系统.K8s是一个go语言开发,docker也是go语言开发,可见go语言的是未来 ...
随机推荐
- 最值得收藏的java技术博客(Java篇)
第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大 ...
- 玩转JPA(一)---异常:Repeated column in mapping for entity/should be mapped with insert="false" update="fal
最近用JPA遇到这样一个问题:Repeated column in mapping for entity: com.ketayao.security.entity.main.User column: ...
- Oracle解决Ora-01653无法扩展表空间问题
先针对可能性1查看表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M) & ...
- 【bzoj2331】[SCOI2011]地板
题目链接: TP 题解: 分类讨论好烦啊! 0表示没有插头,1.2表示有插头,1表示接下来可以转弯,2表示接下来不能转弯,只能停在一个地方. 然后分类讨论: 插头状态 到达状态 0 0 2 2 | 1 ...
- BZOJ_2795_[Poi2012]A Horrible Poem_hash+暴力
Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节. 如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. Input 第一行一个正 ...
- 谈谈网络分层和IP
概述 在计算机网络这门课中,往往是将各层协议拆开一章一章的讲,每层协议是干嘛的,都各种怎么工作的.但如果有人问,这些协议之间怎么协调工作,有什么关系,往往处于懵逼状态. 网络分层 网络为什么分层,其实 ...
- Android缓存机制——LruCache
概述 LruCache的核心原理就是对LinkedHashMap的有效利用,它的内部存在一个LinkedHashMap成员变量,值得注意的4个方法:构造方法.get.put.trimToSize LR ...
- 死磕 java集合之SynchronousQueue源码分析
问题 (1)SynchronousQueue的实现方式? (2)SynchronousQueue真的是无缓冲的吗? (3)SynchronousQueue在高并发情景下会有什么问题? 简介 Synch ...
- Scala 编码习惯
1. 不用var.var是可以被不断修改的,而val是不能被修改的.使用val而不是var能让你的程序更强壮,bug更少,更好调试,更容易测试,在并发条件下,更容易调优而获得更好的性能.数学证明我们不 ...
- 我敢说你不一定完全理解try 块,catch块,finally 块中return的执行顺序
大家好,今天我们来讲一个笔试和面试偶尔都会问到的问题,并且在工作中不知道原理,也会造成滥用. 大家可能都知道,try 块用来捕获异常,catch块是处理try块捕获的异常,finally 块是用来关闭 ...