云原生的英文名是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云原生的更多相关文章

  1. 直击KubeCon 2018 |云原生正在改变你的衣食住行

    云计算从不被看好到成长为势不可挡的技术潮流,仅仅用了十年的时间.如今“云原生”又被企业以及开发者奉为圭臬,并被认为是云计算的未来. 阿里云容器技术负责人易立认为云计算有三个阶段:云搬迁.云就绪和云原生 ...

  2. 进击的.NET 在云原生时代的蜕变

    你一定看过这篇文章 <进击的 Java ,云原生时代的蜕变>,  本篇文章的灵感来自于这篇文章.明天就将正式发布.NET Core 3.0, 所以写下这篇文章让大家全面认识.NET Cor ...

  3. .NET 在云原生时代的蜕变,让我在云时代脱颖而出

    .NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开源和跨平台这两个关键优先事项,我们就可以放心了.云原生对应用运行时的不同需求,说明一个.NET Core 在云原生时 ...

  4. 【转】.NET 在云原生时代的蜕变,让我在云时代脱颖而出

    原创:张善友 原文:https://www.cnblogs.com/shanyou/p/12198741.html .NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开 ...

  5. 进击的 Java ,云原生时代的蜕变

    作者| 易立 阿里云资深技术专家 导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的.然而,本文的作者却认为云原生时代,Java 依然可以胜任&qu ...

  6. 一份关于.NET Core云原生采用情况调查

    调查背景 Kubernetes 越来越多地在生产环境中使用,围绕 Kubernetes 的整个生态系统在不断演进,新的工具和解决方案也在持续发布.云原生计算的发展驱动着各个企业转向遵循云原生原则(启动 ...

  7. Kubernetes v1.16 发布 | 云原生生态周报 Vol. 20

    作者:心贵.进超.元毅.心水.衷源.洗兵 业界要闻 Kubernetes v1.16 发布 在这次发布中值得关注的一些特性和 Feature: CRD 正式进入 GA 阶段: Admission We ...

  8. Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24

    作者 | 木苏.进超.冬岛.元毅.心水.衷源 业界要闻 1.云原生编程语言 Pulumi 1.0 pulumi ,一款中立的开源云开发平台,Pulumi 支持多语言.混合云环境.完全可扩展.初期支持 ...

  9. Helm 3 发布 | 云原生生态周报 Vol. 27

    作者 | 墨封.元毅.冬岛.敖小剑.衷源 业界要闻 1.Helm 3 发布 美国时间 11 月 13 日,Helm 团队发布 Helm 3 第一个稳定版本.Helm 3 以 Helm 2 的核心特性为 ...

随机推荐

  1. ecshop刷新页面出现power by ecshop和链接的解决办法

    当小伙伴在使用echop模板进行修改的时候,如果你删掉底部自带版权后,再调试程序刷新界面的时候,时不时就会冒出一个power by ecshop,而且是带有链接的,很不舒服,所以需要去掉,下面是最简单 ...

  2. 常用的ppt技巧

    取色器 对齐 形状使用

  3. mysql where in 数组解决小tips

    由于sql语法要求,不可在in后面直接连数组,若数组形式下,则需要转换成逗号隔开的字符串 <?php$arr = array(1,2,3,4,5);$arr_string= join(',', ...

  4. 关于zimbra的复现以及突破

    Zimbra未登录RCE漏洞利用 首先我是根据这个PDF进行复现的,但是复现过程出现很多问题 首先使用这个XXE读取文件 <!DOCTYPE xxe [ <!ELEMENT name AN ...

  5. Go语言之数组与切片基础

    一.数组 数组是同一类型元素的集合,可以放多个值,但是类型一致,内存中连续存储 Go 语言中不允许混合不同类型的元素,而且数组的大小,在定义阶段就确定了,不能更改 1.数组的定义 // 定义一个大小为 ...

  6. 洛谷3783 SDOI2017 天才黑客(最短路+虚树+边转点+线段树优化建图)

    成功又一次自闭了 怕不是猪国杀之后最自闭的一次 一看到最短路径. 我们就能推测这应该是个最短路题 现在考虑怎么建图 根据题目的意思,我们可以发现,在本题中,边与边之间存在一些转换关系,但是点与点之间并 ...

  7. 2020.12.14--Codeforces Round #104 (Div.2)补题

    C - Lucky Conversion CodeForces - 146C Petya loves lucky numbers very much. Everybody knows that luc ...

  8. Less-(38~41) 堆叠注入

    首先申明,Less-(38~41)可以采取和Less-(1~4)相同的解法:(一一对应) 然而,他们的漏洞其实更大,我们可以做更多具有破坏性的事情. 代码审计: Less-(38~41): 41的$s ...

  9. BUAA-软件工程-个人总结与心得

    提问回顾以及个人总结 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习软件开发的过程,团队之间的写作 ...

  10. dice_game攻防世界进阶区

    dice_game XCTF 4th-QCTF-2018 前言,不得不说,虽然是个简单题但是还是要记录一下,来让自己记住这些东西. 考察的知识点是: 1.cdll_loadlibrary加载对应库使得 ...