.NET 生态系统的蜕变之 .NET 6云原生
云原生的英文名是cloud native,native 就是土著的意思,也就是土著对当地的环境是非常适应的,在云的环境和传统的数据中心是非常不同的,云原生就是要用的云的技术来构建应用, 利用云的技术来降低种端服务的风险和提高可用性,.NET Core和kubernetes 同年诞生发展, 2018年kubernetes 已经奠定了在容器编排领域的王者地位,2019年之后越来越多的企业选择基于云原生的技术或管理方法,把业务生于云或迁移到云平台,从而享受云的高效和持续的服务能力。
随着2021年kubernetes 的进一步普及, 微服务构建也转向了以Sidecar 模式,这种Sidecar 模式正在以更加迅猛的势头将中间件领域的能力下沉至 Kubernetes 这个新一代的应用基础设施当中,除了已经如火如荼的 Istio 对流量治理领域的颠覆,微软在CNCF 社区开源了 Open Service Mesh ,在Service Mesh这个领域处于战国时期,各种框架百花齐放。而与此同时, OAM 在微软的姊妹项目 Dapr 则直接拉齐了 Kubernetes 与中间件在“服务发现与绑定”侧的距离。所有这一切背后的用户动机是非常清晰的:云原生时代的中间件,既要语言无关,也要平台无关。
在所有问题上,对于任何给定的项目而言,正确的方法都可能介于两个极端之间(要么微服务架构,要么单体架构),微服务的构建在企业软件设计中正在取得平衡,不会再走向极端,而是接受了微服务的真正内涵,既与语言无关,又与平台无关,选择适合自己团队背景的技术构建云原生应用,对于dotnet 技术背景的团队在构建云原生应用,.NET 6为你提供了很好的技术底座。
体积更小:对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度,.NET 6的镜像体积都很小,alpine的镜像更小,带上应用程序通常80M。
启动速度更快:对于传统单体应用,启动速度与运行效率相比不是一个关键的指标。原因是,这些应用重启和发布频率相对较低。然而对于需要快速迭代、水平扩展的微服务应用而言,更快的的启动速度就意味着更高的交付效率,和更加快速的回滚。尤其当你需要发布一个有数百个副本的应用时,缓慢的启动速度就是时间杀手。对于Serverless 应用而言,端到端的冷启动速度则更为关键,即使底层容器技术可以实现百毫秒资源就绪,如果应用无法在 500ms 内完成启动,用户就会感知到访问延迟。
占用资源更少:运行时更低的资源占用,意味着更高的部署密度和更低的计算成本。.NET 6的 CLR启动速度非常快,降低启动时资源消耗,可以减少资源争抢,更好保障其他应用 SLA。
支持水平扩展:.NET 6默认更好的支持Docker资源限制,官方团队也在努力让.NET 6成为真正的容器运行时,使其在低内存环境中具有容器感知功能并高效运行。随着内存成本的下降和虚拟化的流行,大内存配比已经成为趋势。所以我们一般是采用水平扩展的方式,同时部署多个应用副本,在一个计算节点中可能运行一个应用的多个副本来提升资源利用率。
上面说了.NET 6 在云原生方面所完成的蜕变,很多人可能会以Java生态丰富来说明Java的种种优势,.NET 6相对于Java 17在云原生时代有太多的优势,.NET团队早在2014年完成转型,在云原生时代完成了蜕变,和Java相比已经是不同的世界,.NET更多的向Go、Rust等轻量级平台靠齐。随着 Dapr 在2021年2月份发布了1.0版本,它为我们提供了一组构建块和支持工具,可帮助我们以易于部署和可重复的方式实现关键的微服务设计模式,有了Dapr的支持,再来谈Java 生态丰富就有点可笑。
Dapr 当前有7大模块,每个模块都是为云原生应用开发的特定问题准备的,其中核心模块是Actor。
Actor 是一种并发编程的模型,Actor 表示的是一个最基本的计算单元,封装了可以执行的行为和私有状态。actor 之间相互隔离,它们并不互相共享内存,也就是说,一个 actor 能维持一个私有的状态,并且这个状态不可能被另一个actor所改变。在 actor 模型里每个 actor 都有地址(信箱),所以它们才能够相互发送消息。每个 actor 只能顺序地处理消息。单个actor不考虑并发。
Dapr 中 actor 是虚拟的,它们并不一定要常驻内存。 它们不需要显式创建或销毁。 dapr actor runtime 在第一次接收到该 actor ID 的请求时自动激活 actor。 如果该 actor 在一段时间内未被使用,那么 runtime 将回收内存对象。 如果以后需要重新启动,它还将还原 actor 的一切原有数据。
Actor placement service 为系统提供了 actor 分发和管理,placement 会跟踪 actor 类型和所有实例的分区,并将这些分区信息同步到每个 dapr 实例中,并跟踪他们的创建和销毁。
Dapr的Virtual Actor 源自dotnet的老牌开源项目Orleans:https://github.com/dotnet/orleans。 Orleans 更像是Spring Cloud构建微服务的体系,局限在.NET社区里,如果你喜欢使用Orleans 构建微服务,最近正好出版了一本Orleans的中文书《Orleans:构建高性能分布式Actor服务》 ,Dapr Actor 把 Orleans 带到所有的社区,如果你是用java,可以使用spring boot + dapr actor 写业务,这里可以给你一个案例,就是深圳的 行云创新他们就是用的这个组合,具体可以参考b站视频《直播回顾:Dapr——云原生开发新思路》。
.NET 生态系统的蜕变之 .NET 6云原生的更多相关文章
- 直击KubeCon 2018 |云原生正在改变你的衣食住行
云计算从不被看好到成长为势不可挡的技术潮流,仅仅用了十年的时间.如今“云原生”又被企业以及开发者奉为圭臬,并被认为是云计算的未来. 阿里云容器技术负责人易立认为云计算有三个阶段:云搬迁.云就绪和云原生 ...
- 进击的.NET 在云原生时代的蜕变
你一定看过这篇文章 <进击的 Java ,云原生时代的蜕变>, 本篇文章的灵感来自于这篇文章.明天就将正式发布.NET Core 3.0, 所以写下这篇文章让大家全面认识.NET Cor ...
- .NET 在云原生时代的蜕变,让我在云时代脱颖而出
.NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开源和跨平台这两个关键优先事项,我们就可以放心了.云原生对应用运行时的不同需求,说明一个.NET Core 在云原生时 ...
- 【转】.NET 在云原生时代的蜕变,让我在云时代脱颖而出
原创:张善友 原文:https://www.cnblogs.com/shanyou/p/12198741.html .NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开 ...
- 进击的 Java ,云原生时代的蜕变
作者| 易立 阿里云资深技术专家 导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的.然而,本文的作者却认为云原生时代,Java 依然可以胜任&qu ...
- 一份关于.NET Core云原生采用情况调查
调查背景 Kubernetes 越来越多地在生产环境中使用,围绕 Kubernetes 的整个生态系统在不断演进,新的工具和解决方案也在持续发布.云原生计算的发展驱动着各个企业转向遵循云原生原则(启动 ...
- Kubernetes v1.16 发布 | 云原生生态周报 Vol. 20
作者:心贵.进超.元毅.心水.衷源.洗兵 业界要闻 Kubernetes v1.16 发布 在这次发布中值得关注的一些特性和 Feature: CRD 正式进入 GA 阶段: Admission We ...
- Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24
作者 | 木苏.进超.冬岛.元毅.心水.衷源 业界要闻 1.云原生编程语言 Pulumi 1.0 pulumi ,一款中立的开源云开发平台,Pulumi 支持多语言.混合云环境.完全可扩展.初期支持 ...
- Helm 3 发布 | 云原生生态周报 Vol. 27
作者 | 墨封.元毅.冬岛.敖小剑.衷源 业界要闻 1.Helm 3 发布 美国时间 11 月 13 日,Helm 团队发布 Helm 3 第一个稳定版本.Helm 3 以 Helm 2 的核心特性为 ...
随机推荐
- webpack4 使用babel处理ES6语法的一些简单配置
一,安装包 npm install --save-dev babel-loader @babel/corenpm install @babel/preset-env --save-devnpm ins ...
- dede后台栏目管理文章统计数量和实际文章数不一致解决办法
操作dede_arctiny表,将和栏目对应的typeid所有文章去掉即可.
- P6657-[模板]LGV 引理
正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出$n\times n$的棋盘,$m$个起点第$i$个为$(1,a_i)$,对应$m$个终点第 ...
- P1251-餐巾计划问题【费用流】
正题 题目链接:https://www.luogu.com.cn/problem/P1251 题目大意 \(N\)天,第\(i\)天需要\(a_i\)个餐巾. 每个餐巾价格为\(p\),使用完后有两种 ...
- IdentityServer4[2]:启动一个新的IdentityServer项目
启动一个新的IdentityServer项目 从头开始,从基础开始,然后变得更加复杂,循序渐进的学习 工具:VS2017 15.9.8 .Net Core2.2 基本过程 创建一个新的ASP.NET ...
- 【.NET 与树莓派】气压传感器——BMP180
BMP180 是一款数字气压计传感器,实际可读出温度和气压值.此模块使用 IIC(i2c)协议.模块体积很小,比老周的大拇指指甲还小:也很便宜,一般是长这样的.螺丝孔只开一个,也有开两个孔的. 这货基 ...
- CSS写一个圣诞树Chrome浏览器小插件
一时兴起,突然想写一个Chrome浏览器插件,不知道写啥,就写了一个圣诞树小插件.项目源码>> Chrome浏览器插件 Chrome浏览器插件最主要的是:index.html.manife ...
- 浅谈一手MYSQL设计规范
前言: 最近牵头搞一个机场管理集团的项目,发现团队中的成员对于库表设计,有非常多的盲区.所以决定写一篇文章,总结一下最近工作的几年中,常用的一些数据库设计规范和思路. 目的 MySQL数据库与 Ora ...
- 一时兴起,用python抓了一下美女图片。实现简单。附上实现代码,可以交流。
"""1.定义目标网址 网址2.数据定位 照片3.数据匹配 标签4.数据下载 下载"""import requestsfrom lxml i ...
- Vuls 漏洞扫描工具部署及效果展示
Vuls 漏洞扫描工具部署及效果展示 介绍 Vuls根据NVD,OVAL等数据对主流Linux系统进行扫描,并具有完善的报告. 支持系统 Distribution Release Alpine 3.3 ...