张善友:基于Kubernetes 构建.NET Core 技术中台

2019 年 11 月 06 日

张善友:基于Kubernetes 构建.NET Core 技术中台

5 月 25 日,云+社区技术沙龙-互联网架构成功举办。本期沙龙特邀请腾讯的技术专家分享关于技术架构、落地实践案例、无服务器云函数架构、海量存储系统架构等话题,从技术角度看架构发展,为开发者们带来丰富的实践经验内容,深度揭秘技术架构。下面是张善友老师关于利用 Kubernetes 构建.NET Core 技术中台的相关分享。


今天我跟大家介绍的内容有三个:为什么需要中台?二是基于 K8S 搭建技术中台,我们已经进入了新时代,不能用老的一套,如果用老的一套就没有什么优势了。三是为什么用.NET Core 做应用开发?


为什么需要中台


这个图是中国互联网的发展图,前面老师也介绍过了互联网经历了三个时代,我们现在已经处于第三个时代。2018 年—2020 年是企业服务时代,在国内不管是阿里还是腾讯都开始向 2B 转型。PC、移动怎么划分?98—2008 年很多都是搞一个网站,搞一个博客,拉了很多的流量发个广告变现了,之后很多电子商务公司起来了,有了淘宝和微信进入了交易时代,这些交易的网站、流量包括企业内部也有很多的 OA、ERP 等等各种,要到应用从你的企业扩大到你的合作伙伴,从一个单独的系统用很长的链条串起来,进入到了企业服务时代。



企业应用信息化以前叫信息化,现在都叫数字化转型,其实说的就是原来的应用信息化都是企业内部的一个系统架一个网站,比如说这个系统就是给这个部门用的,再发展会给整个公司不同的部门用,你的公司如果大的话,这个系统还要给外部的一些合作伙伴用,我原来最早在腾讯的 IT 待过八年,在腾讯的财富通待过三年,做的都是企业的服务。不过腾讯的 IT 是腾讯自己的企业服务,那些系统因为没有对外面的消费者开放出来,一旦要连到外面的消费者,这个量就发生了质的变化。还有你的上下游,都是要把你的产业链串起来。中国的消费者市场是和全世界其他国家非常不一样的,中国的每个省都是其他一个国家的量,特别是中国的市场,像微信、支付宝这些平台和外国对比非常不一样,他们把我们整个应用的场景非常碎片化,有些 API,API 对外还要做小程序还有 APP 等等。


为什么需要中台?业务中台我们希望业务是从同一个地方发出的。接下来讲一下怎么构建一个技术的中台,其实技术的中台以前叫做技术平台,现在为什么叫做技术中台呢?一个技术平台构建完以后,平台的技术可能十年都不变,现在和原来最大的变化就是更新非常快,你要快速地去应对。



基于 K8s 搭建技术中台


当你去构建一个创业公司的时候,需要去构建这些 IT 系统,这些 IT 系统还是按老方式构建还是新的方式构建?我的选择是基于 K8s 搭建技术中台。



不管是架构还是技术以及研发运营包括业务发展等等各个方面的来说,K8s 是我们去构建这些平台的非常好的基础平台,我公司的架构是以云原生应用,这几年也非常火,我的技术用的是.NET Core,这是微软的技术做的容器化应用,研发运营是用 Devops 的敏捷研发,由这些推动很多的应用,特别是创业公司肯定要做很多应用都是在试错,这个试错要越快越好,而且成本还不能很大,特别是像我这样的一个公司四个人,如果很多东西没有快速的话就出问题了。我们看看 K8s 的容器,容器部署正以每年 75%的速率在增长,超过一半以上的容器环境需要编排工具的辅助,77%的公司的编排工具不会选择。我们从两个角度来看看为什么要 K8s,开发人员的心声说,我创建的应用要在我的基础设施,原来虚拟机这些东西太烂了,K8s 就是一个命令,开发也是一样,你的测试环境还是运营环境帮我们解决了不可变的,就是你开发测试运营是一样的,不会因为你的运营环境的问题,容器天生帮你解决了这种问题。


做一个东西的话,容器非常容易就去做了,一个想法去实施,包括前面提的无服务器计算也是基于容器,那是更好的一种实验方式。从做 IT 管理服务器的同学来说,我的服务器需要保证我服务的网页以及程序员开发给我的应用,让我能够我不需要去了解你具体是干什么的,还有服务的稳定有很多的程序合规等等各种问题,这些问题在传统的虚拟机或者物理服务器都是非常头痛的问题,在容器里头搭配 K8s 容易解决一个问题。这是 K8s 的编排,这些特性大家一看开发服务化的应用,这些都要去关注;其实这些内容在 K8s 都有,K8s 帮我们去解决这些问题。


它有非常好的架构,它成为一个编排引擎界的标准,它的标准在 18 个月前,2016 年底的时候,那时候在编排领域还有非常多的竞争者, 现在已经确定 K8s 就是容器编排的一个标准,它有公有云、私有云、混合云、模块化、可插拔等等的特性。谷歌成立了一个基金会,这个基金的第一个开源项目就是 K8s,这不是谷歌控制的,是一个基金会控制的,早期包括红帽就在参与,我也对比了一些国内公有云的容器服务,腾讯云的容器服务是非常好用的;现在 K8s 已经赢了这场战役,未来的方向是容器化。



K8s 开发的时候可以助力整个应用,给大家介绍一下腾讯云的容器,它的容器服务产品叫做 TKE,是腾讯云基于 K8s 不依赖与 IaaS 层的一站式云原生 Paas 服务平台,有包括集群调度、Helm 应用编排、Docker 镜像管理、Istio 服务治理等等的功能。这里有一个大家要面对的问题,是自建到 K8s 还是云自建到 K8s,我画了一个表,自己构建一个 K8s 集群要面对的问题,这些问题对于一个创业公司来说是不可能完成的任务,如果能够完成这个任务就可以去搞一个用容器云的创业公司,2015—2018 年非常火热的领域,有很多人在搞这些,也有很多基于开源的 K8s 自己搞容器云的创业。对于我们来说为什么选择 TKE?这是一个对比图,如果大家自己没有一个团队去运营这个 K8s,云上 K8s 是一个非常好的选择。除了 K8s 之外,还有另外一种,我们公司基于 K8s 技术平台的几点,在 TKE 上面构建,它有一套的系统,还有微服务的架构,包括 dotnet,我还是要吐槽一下腾讯云开发组的服务不太好用,我用了微软云的来搭配腾讯云。我希望后面腾讯云能够把这一块产品做好,我可以把它切回来。基于 K8s 很多的核心能力可以完成非常多的功能,灰度发布、滚动升级、弹性伸缩、故障自愈这些都不是问题,开发微服务可以用任何云,但是对一个创业公司来说一定是统一的进入站是最好的,所以我选择了.NET Core 开发微服务和高效能的微服务,下面会介绍一下.NET Core 的内容。



基于 K8s 搭建技术中台,一是业务,二是公共服务,三是 PaaS 运行平台,在还有网关,腾讯云也有网关,我用自己开发的网关,这是我参与的开源项目,和 K8s 非常的配合。


为什么选择 .NET Core


为什么选择.NET Core?我们可能只会占到这个里面的一部分,首先对创业来说,一定是选择一个平台一种语言是最好的,这个是语言平台给我们提供的,包括系统的整个规范;选择我们团队熟悉能掌控的技术来做,也要选择一个更现代一些的,包括设计活跃度要高,.NET Core 社区这几年也非常活跃,上面有非常多的.NET Core 的开源项目,这是我们的选择的理由。.NET Core 是一个跨平台的开发平台,有非常短的名字,www.dot.net,它成立了一个基金会,有非常多的公司参与,生态非常丰富。生态里面有非常多的项目,可以跑在各种平台,这个图是云原生基金会,有两个轴,一是 X 轴开源项目的开发速度,整个成长速度,Y 轴是提交的 PR 或者问题的,体现它的活跃度,K8s 都是非常活跃的,但是有一个开发平台在里面非常活跃。



这个图是微软的.NET Core 的开源之路,微软在 2001 年有一个 ECMA335 协议,就是可以实现.NET Core 跨平台的,微软在 20 年后才实现这个目标,有这个规范以后,微软在 2002 年发布了 NET1.0 for Windows,Mono 项目启动。2008 年 ASP.NET MVC 开源,2014 年微软启动.NET Core 项目的开发开源,在启动的项目之前成立这个基金会,2017 年发布.NET Core2.0,现在最新版本是 2.2 版本在今年的 9 月份也就是未来的三个月后会发布.NET Core3.0,性能会提高很多。2020 年微软会实现一个大目标,.NET Core5.0。



这是性能的对比,.NET Core 是 Java 的两倍多,可以做所有的产品,桌面、WEB、云端开发、手机、GAMING、IOT 和 AI,中国有一堆培训公司哪个热门就生产哪个,我认为.NET Core 一样可以开发。你可以享用你的任何工具,这就是对一个创业公司基于.NET Core 可以看的事,我们能做所有的事情。对于很多大公司来说降低成本也是用这个,可以带来非常大的益处。这是从推特上截的图,.NET Core3.0 还没有发布,3.0 到 2.0 的性能优化非常恐怖,性能的吞吐提升 42%,内存下降 90%。如果大家需要用 TKE 的一些问题也可以找我,下午分享的内容就是这些。


Q:您好,我想问一下开源以后微软是否会继续进入手机操作系统的市场?


A:这个图表明了你很容易把你的技能在移动端实现,比如说你做 IOS 安卓的开发,.NET Core 这个平台也可以做。你想进腾讯做游戏,IEG 的手游,也是可以转,这些都是客户端。


Q:您好,我有两个问题,一是如果是多云的环境下,如何统一管理基于.NET Core 以及 K8s 的平台?二是目前在测试.NET Core 的测试环境中遇到的问题,比如说通用宿主如果出现了问题,需要运维去人工干预的话,有没有什么好的工具或者方式来减少人工干预的次数?


A:云都会提供产品,我记得华为有一个,有很多创业公司也在搞这个,多云的管理也是一个多集群的管理,跨越的管理,我有一个朋友在创业就是搞容器,后面我可以介绍给你。第二个问题,在虚拟机上跑或者物理机上跑,会发生这种情况你要解决为什么会发生这种情况,是不是因为你自己服务的不稳定。


作者介绍:


张善友,腾讯云最具价值专家(TVP),.NET 技术专家。拥有超过十七年 IT 行业经验,2018 年创立深圳市友浩达科技有限公司,从事.NET 技术顾问工作,工作之余,他还热心于进行社区奉献,运营微信公众号“dotnet 跨平台”,同时积极参与.NET 社区开源项目,被尊称为张队长。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/r-4_XbSKn_LS9o_PZSTeig


2019 年 11 月 06 日 15:42425

评论

发布
暂无评论
发现更多内容

一致性hash

石印掌纹

架构师训练营-第5周总结

坂田吴奇隆

极客大学架构师训练营

我终于弄懂了Python的装饰器(三)

Young先生

Python 装饰器

第五章作业

小胖子

Week5作业

王志祥

极客大学架构师训练营

Go在容器运行时要注意的细节

博文视点Broadview

go 容器 云原生

我终于弄懂了Python的装饰器(一)

Young先生

Python 装饰器

rc-form源码解读

Lee Chen

前端进阶训练营

区块链或将成为整治形式官僚主义的“大杀器”

CECBC区块链专委会

智能合约 去中心 防篡改 服务高效性

架构师训练营第五周学习总结

0x12FD16B

你到底在忙啥呢?

池建强

创业 写作

计算机操作系统基础(十六)---进程同步之共享内存

书旅

php laravel 操作系统 进程 线程’

架构师训练营-第5周作业

坂田吴奇隆

极客大学架构师训练营

Week5总结

王志祥

极客大学架构师训练营

CORS 和 CSRF 修炼宝典

pingan8787

前端 Web CORS CSRF

Python中 *args 和 **kwargs的用法

Young先生

Python *args **kwargs 缺省参数

深入理解Java内存模型

独钓寒江雪

内存模型 Java内存模型

Python 中的元类到底是什么?这篇恐怕是最清楚的了

Young先生

Python python元类

架构师师傅在训练营第5周感想

tuuezzy

架构师

你不知道的 Blob

阿宝哥

Java 前端 Web Blob

第五周作业

好名字

我终于弄懂了Python的装饰器(四)

Young先生

Python 装饰器

我终于弄懂了Python的装饰器(二)

Young先生

Python 装饰器

出成绩了!Avaddon勒索病毒劣迹昭著,6月勒索病毒占比TOP 10榜上有名

360安全卫士

勒索病毒

配置类需要标注@Configuration却不知原因?那这次就不能给你涨薪喽

YourBatman

spring Spring Boot Spring Framework @Configuration Spring配置类

【总结】技术选型

小胖子

Java中异常处理的9个最佳实践

码农神说

异常

官宣 | 千呼万唤,Apache Flink 1.11.0 正式发布啦!

Apache Flink

flink

如何优雅地运用位运算实现产品需求?

梁桂钊

Java 架构

环信即时通讯云荣获《2020年度云通讯产品创新奖》

DT极客

Java 后端博客系统文章系统——No1

猿灯塔

张善友:基于Kubernetes 构建.NET Core 技术中台-InfoQ