日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET和Docker ,比翼双飞

發(fā)布時間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET和Docker ,比翼双飞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DockerCon 2019本周將在舊金山舉行 ,DockerCon 是從業(yè)者、貢獻者、維護者、開發(fā)者和容器生態(tài)系統(tǒng)學(xué)習(xí)、網(wǎng)絡(luò)和創(chuàng)新的一站式活動。 .NET 團隊博客發(fā)布了《一起使用.NET和Docker - DockerCon 2019更新》:https://devblogs.microsoft.com/dotnet/using-net-and-docker-together-dockercon-2019-update/,分享.NET團隊如何在過去一年中改進使用.NET和Docker的經(jīng)驗。.NET團隊去年改進.NET Core Docker體驗的大部分工作都集中在.NET Core 3.0上。.NET Core 3.0 是第一個發(fā)布實質(zhì)性運行時更改以使CoreCLR更有效的支持Docker資源限制,并提供更多配置供您調(diào)整的版本。

.NET 團隊致力于使.NET Core成為真正的容器運行時。在過去的版本中,我們認為.NET Core是容器友好的。.NET 團隊現(xiàn)在正在加強運行時,使其在低內(nèi)存環(huán)境中具有容器感知功能并高效運行。 我們做出的最基本的改變是減少CoreCLR默認使用的內(nèi)存,在過去的幾個版本中,.NET 團隊付出了很多努力來改進.NET Core在TechEmpower基準測試中的表現(xiàn)。使用.NET Core 3.0,.NET 團隊找到了顯著提高性能并減少大量使用內(nèi)存的方法。.NET 團隊現(xiàn)在在容量限制為大約150 MB的容器中運行TechEmpower純文本基準測試,同時每秒處理數(shù)百萬個請求,這使我們能夠每天驗證內(nèi)存受限的情況。

說到Docker,我對.NET Core搭配 Docker的使用非常滿意,.NET Core 3.0的到來會更加美好,再借助于kubernetes的協(xié)調(diào),我們的生活會越來越美好。

但是長久以來,Docker 和 Java 就像一對“歡喜冤家”。一方面,容器技術(shù)的“不可變基礎(chǔ)設(shè)施”特性為開發(fā)者帶來了無比寶貴的依賴與環(huán)境一致性保證;但另一方面, Linux 容器通過 Cgroups 對應(yīng)用進行資源限制的方式跟所有依賴于 JVM 進行資源分配的編程語言都產(chǎn)生了本質(zhì)的沖突。我在客戶咨詢的過程中經(jīng)常見到客戶的基于java8的應(yīng)用程序(國內(nèi)大量的Java應(yīng)用都是java8)在docker中運行時出現(xiàn)“隨機”故障?或者也許是一些奇怪的死機?兩者都可能是Java 8(仍廣泛使用的)中糟糕的docker支持引起的。Docker使用控制組(cgroups)來限制資源。在容器中運行應(yīng)用程序時限制內(nèi)存和CPU絕對是個好主意――它可以阻止應(yīng)用程序占用整個可用內(nèi)存及/或CPU,這會導(dǎo)致在同一個系統(tǒng)上運行的其他容器毫無反應(yīng)。限制資源可提高應(yīng)用程序的可靠性和穩(wěn)定性。它還允許為硬件容量作好規(guī)劃。在Kubernetes或DC/OS之類的編排系統(tǒng)上運行容器時尤為重要。

JVM可以“看到”系統(tǒng)上的整個內(nèi)存和可用的所有CPU核心,并確保與資源一致。它默認情況下將最大堆大小(heap size)設(shè)置為系統(tǒng)內(nèi)存的1/4,并將某些線程池大小(比如針對GC)設(shè)置為物理核心數(shù)量,我們在擁有64GB內(nèi)存的系統(tǒng)上運行,默認的最大堆大小是物理內(nèi)存的1/4即16GB。如果我們使用docker cgroups限制內(nèi)存,會發(fā)生什么,JVM進程被殺死了。由于它是一個子進程――容器本身幸存下來,但通常當java是容器(PID 1)內(nèi)的唯一進程時,容器會崩潰。

CPU怎么樣? 系統(tǒng)上的確有12個CPU。因此,即使可用處理器的數(shù)量限制為1,JVM也會嘗試使用12 , Java8和Docker的相殺,但是如果你升級到新的Java版本(10及以上版本)已經(jīng)內(nèi)置了docker支持功能。但有時升級不是辦法,比如說如果應(yīng)用程序與新JVM不兼容就不行,而且Oracle在2019年4月更改了Java 8更新的許可證,自Java SE 8 Update 211以來商業(yè)使用不再免費。 不過也有好消息,而就在上周,最近發(fā)布的OpenJDK 鏡像?openjdk:8u212-jdk?終于能夠讓 Java 8 運行時在容器里面為應(yīng)用分配出合理的 CPU 數(shù)目和堆棧大小了,具體可以參考?https://blog.softwaremill.com/docker-support-in-new-java-8-finally-fd595df0ca54?spm=a2c4e.11153940.blogcont700628.17.10fb43bf5u3n1d。

從Oracle JDK 8 切換到OpenJDK 8 是想繼續(xù)使用Java的好選擇,不過我還是勸告大家可以考慮下.NET Core 了,新的項目可以采用.NET Core 2.2進行開發(fā),半年后就可以轉(zhuǎn)到.NET Core 3.0 .NET Core是以MIT協(xié)議開源, Java是GPL協(xié)議開源。 Java 8 SDK升級Oracle要收費這件事對于很多小公司是有著重大的影響的。眾多沒有能力開發(fā)維護OpenJDK的公司完全可以轉(zhuǎn)向更具有競爭力的.NET Core,.NET Core從屬于.NET基金會,由微軟進行官方支持。使用最寬松的MIT和Apache 2開源協(xié)議,文檔協(xié)議遵循CC-BY。這將允許任何人任何組織和企業(yè)任意處置,包括使用,復(fù)制,修改,合并,發(fā)表,分發(fā),再授權(quán),或者銷售。唯一的限制是,軟件中必須包含上述版 權(quán)和許可提示,后者協(xié)議將會除了為用戶提供版權(quán)許可之外,還有專利許可,并且授權(quán)是免費,無排他性的(任何個人和企業(yè)都能獲得授權(quán))并且永久不可撤銷,用戶使用.NET Core完全不用擔心收費問題,你可以很自由的部署在任何地方,。

現(xiàn)在是云計算時代,.NET Core已經(jīng)磨練5年時間,準備好了迎接云計算時代的云原生應(yīng)用開發(fā),云系統(tǒng)中,用更少的硬件為更高密度的用戶提供服務(wù)是非常重要的。應(yīng)用程序的占位面積越小,密度越高。容器只包含應(yīng)用程序及其依賴項。文件大小要小很多倍,啟動時間以秒為單位,只有應(yīng)用程序加載到內(nèi)存中,容器保證在任何主機上工作。鑒于容器的明顯優(yōu)勢,.NET Core的設(shè)計決定之一就是使其成為模塊化。這意味著你的.NET Core應(yīng)用程序可以被"發(fā)布",使得它和它的所有依賴關(guān)系在一個地方,這很容易放入容器

原文地址:https://www.cnblogs.com/shanyou/p/10800521.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?

總結(jié)

以上是生活随笔為你收集整理的.NET和Docker ,比翼双飞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。