首页 文章 精选 留言 我的

精选列表

搜索[专家兼容测试],共10000篇文章
优秀的个人博客,低调大师

专家观点:Docker 架构优缺点大剖析

在Docker问世后,其打包应用程式、快速部署的能耐,受到开发者的广大欢迎。在2015年,Docker进一步推出私有储存库功能Docker Registry,以及原生网路功能Docker Networking,让企业更容易自行架构Docker丛集。这些都让Docker逐渐成为正式环境的新选择。 在Docker受到一片好评下,着有《Docker源码分析》,大受到中国Docker社群好评的孙宏亮认为,Docker至少有3大缺点,还无法满足各种环境的需求。深入研究Docker原始码的他,也是中国Docker PaaS服务商DaoCloud参与第一线开发的软体工程师。 别于多数Docker开发者从应用程式面切入谈论Docker的角度,孙宏亮在2015 Container Summit上,则是选择从Docker的程式码设计架构,来剖析优缺点。 孙宏亮也指出,Container技术虽然已经发展许久,但是透过Docker独特的映像档设计,才使Container技术在近年发扬光大。 独特映像档设计让Docker爆红 Container技术最早可以追溯至1979年时推出的Unix V7,其中的chroot系统呼叫指令,透过更改程序的根目录,达到系统程序隔离的效果。而发展已经超过30年的Container技术,为何迟至2013年才因为Docker横扫全球IT业界,孙宏亮解释,因为Docker映像档的设计,使得Docker得以打破过去「程式码即应用」的观念。 传统上认为,软体开发结束后,所产出的成果即是程式码,或是能够编译执行的二元执行档。 而为了让这些程式码可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,不过,即便如此,仍然常常发生部署失败的状况。孙宏亮表示,Docker透过映像档,将作业系统核心外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。 而微软已经宣布,将在下一代的Windows Server 2016中内建Docker Engine,使得Windows Sever可以原生支援Docker。但孙宏亮也解释,目前Windows对Docker的支援,多数还是在API层。除了Windows作业系统与Linux在Kernel层差异很大外,Windows也有发展有自家的Container技术。 Docker映像档的设计,使得Docker得以打破过去「程式码即应用」的观念。透过映像档,将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。(图片来源/孙宏亮) 系统服务Docker化的障碍 虽然Docker透过了映像档设计,解决传统维运团队在部署上的问题。但是,在将系统服务Docker化、应用程式Docker化时,使用者仍然会碰到实际面的问题。 孙宏亮表示,当应用程式必须调度系统的服务,例如利用cron服务,将工作设定为自动化执行,或是执行syslog服务收集系统日志时,此时开发者就会碰到使用Docker的障碍。 例如,虽然可以使用Docker将cron服务打包,但是Docker化的cron服务,与传统Linux中cron服务间有很大的区别。孙宏亮表示,一旦将cron服务容器化后,原始的环境变数设定都会失效。所以使用者必须分析软体、Container的运行方式,才能满足使用的需求。另外,Docker与Linux Kernel的沟通能力薄弱,行程间沟通(inter-process communication,IPC)会被进行隔离。像是NFS伺服器接受客户端提出的请求后,会将需求再次传递给Linux Kernel,「使用者将这些功能容器化前,都必须再三考虑。」他表示。 并非任何应用程式都适合Docker化 而在应用程式Docker化的方面,虽然Docker的快速部署特性很吸引人,但是未必所有的应用程式都适合Docker化,像是MySQL,孙宏亮认为如果将其Docker化则存在一些弊端。例如,当使用者的资料需要进行额外备份,需要创造MySQL的资料库Container,可以透过Docker run指令,创建一个MySQL的Database Container,或是使用docker run指令,修改MySQL的环境变数。而这些环境变数会透过Docker Daemon、Docker Engine,用json的档桉格式储存在Docker Container中。 存在于Docker Container中的环境变数,对于Docker Engine并没有意义,但是对于使用Docker的用户则存在隐忧,如果被无关的第三方看见,使用者的Container可能会产生资安上疑虑。所以,孙宏亮认为,传统开发者在使用MySQL的思维,并不能无缝转移到Docker的世界中运作。 孙宏亮表示,在Docker问世后,Docker官方也宣称Docker的设计是以应用程式为中心(application-centric),希望使用者将心力集中在开发应用程式,而Docker官方也不特别鼓励使用者,将Docker视为取代VM,作为新一代运算单元的想法。他认为,当Docker用于打包网页应用程式,或是比较单纯的系统服务,可以达到很好的Docker化效果。不过,如果要将Docker的使用范围扩大,开始涉及到作业系统的基础运行层次,或是分散式系统在推动微服务时,使用Docker会产生一些问题。 共用Linux Kernel,让Docker安全性先天不足 而从技术面的角度切入,孙宏亮表示,Docker就是分配硬体资源、实现资源隔离的Container技术。而谈到资源隔离,他表示,一般人会联想到Container技术中最基本的观念,像是命名区域namespace及cgroup等技术。而Docker Container技术的火红,以前无法透过VM执行的功能,现在也可以透过Container实现。许多使用者因此也开始议论,是否可以利用Container技术取代VM。 一般的实体伺服器,只要具备Linux Kernel就可以运行Container,或是透过Hypervisor层,使用Linux Kernel上运作的虚拟机,运行Container。孙宏亮认为,以这样的角度看待,Linux Kernel是运作Container,所需满足的最重要条件,而无论是实体伺服器或是VM,都能达到上述的条件。不过,Container在实体机上运作,可以达到媲美裸机的效能,而在VM中运作时,则会产生效能折损。 而谈到Container的资源隔离,孙宏亮表示,一般使用者最直觉想到的不外乎是CPU、记忆体以及IO等运算资源。而他认为,「资源」的范畴应该不只如此。虽然Container可以透过cgroup、namespace做到运算资源的隔离,但是,「如果没有Linux Kernel,使用者也不可能运作Container。」他表示,如果将Linux Kernel也纳入资源的范畴,因为Container与作业系统同时共用Kernel,所以其实并没有实现资源隔离。但是,VM与VM之间,并不会共用作业系统核心。因此,VM的资源隔离性一定会比Container来得更好。 虽然Docker Container也会受到资源的隔离、控制,以及权限控制,但是由于跟Linux共用作业系统核心,进而会产生安全上的漏洞。为了解决这样的问题,孙宏亮表示,可以透过Linux的capability机制,加强权限的控管,使Container内部的root跟外部的root权限产生差异外,同时也让Container在系统管理的能力,与宿主主机进行区隔,藉此解决Container的安全问题。 在去年推出的Docker 1.9.0当中,Docker也加入了username space机制,孙宏亮表示,在安全性方面,这是Docker所达成的一个里程碑。只要透过namespace,让Container运作的时候,使用者可以拥有更多权限,同时也不会影响到宿主主机。 本文作者:佚名 来源:51CTO

优秀的个人博客,低调大师

韩国专家深度剖析DT时代的精髓

马云曾说过,现在是由IT向DT发展的时代。 数据时代的五大关键词有O2O, IoT, Big Data, AI, Cloud。我们首先从O2O开始说起。 1) O2O(Online To Offline):是指将线下的所有物品和服务与互联网相结合,让互联网成为线下交易的平台。也可以说成,是把移动设备变成了线下商务的遥控器(如滴滴快的、饿了么等)。O2O这一词,虽然源于中国,但最近在美国被广泛地使用。 Uber称Airbnb为共享经济(Sharing Economy),但这一词没有完全表达出Airbnb的本质。反而,用与O2O含义相近的一个词,On Demand Service比较贴切。也算是表达出了“(在手机上)一点击就好!”的意思吧。 如果说现在O2O的重心逐渐放到B2C,那么O2O在向B2B企业扩张的过程中,就必须要了解一个概念——物联网(Internet of Things)。 2) 物联网(Internet of Things, IoT):是指物物相连的互联网,即把所有的物品都扩展到网络上。把人和物都实时连接在移动环境中,加速全球互联网化(如Smart City、Smart Home、Smart Grid)。 由爱迪生创立,具有百年历史的美国通用电气公司宣称,将通过物联网实现发电站、城市基础设施、飞机等一切“物”的智能化。无论是城市还是农村,想要实现智能化,都离不开物联网。目前,美国通用电气公司,共出售了近千亿美元的房地产和金融资产,完全致力于通过物联网(IoT)“向机器注入思想”的长远规划。 O2O和IoT的核心都是数据。因为在人与人、物与物之间交流的数据中,隐藏着消费模式和价值。大数据,就是在O2O向IoT扩张的过程中,把海量数据进行有效分析,提取,再形成有意义的知识、洞察力的技术! 3) 大数据(Big Data):是指毫无头绪、不定型的未加工过的数据(Raw Data)。在过去,数据还是一片未开发的领域。现在随着人工智能的发展,有效加工数据的技术也得到发展,可以在海量数据中提取出有意义的信息、知识和洞察力。通过有效地分析数据,不仅能预测人类的行为方式,甚至还能推动人类的行为方式。 最有效地分析和加工数据的方法,就是在机器上添加人类的合理性。这种做法,被叫做机器学习。现在机器不仅仅是单纯地运算信息,而是逐渐成为能够判断的主体,在海量数据中进行合理的推理、自行判断,再到推导出解决方案。人工智能技术开启机器时代。 4) 人工智能(Artificial Intelligence):如果说产业革命使机器生长出肌肉,那么信息革命的全盛时期,数据时代则为机器注入了思想,即“Mechanical Mind”。 数据(Data)、信息(Information)、知识(Knowledge)、洞察力(Insight)。通过DIKW数据过滤过程,实现即使无须人们操作,机器也可自行完成,自行判断、自行预测、甚至还反过来能引导人类的判断。 医生为了研究一个专业领域,需要花费几十年的时间,而人工智能则能同时精通众多领域。在遇到问题时,人工智能可以综合各领域的知识,推导出解决方案。这样看来,机器真是越来越像人类了。 机器还能突破人类大脑的极限。在工业革命时代,让人类惊讶的是机器的物理性能;而在人工智能创造的新时代,我们将感叹于机器的知性能力。那么,我们人类现在应该做些什么呢?除了人类应该制造机器人以外,别无其他。 5) 云计算(Cloud Computing):是一种在网络虚拟空间的共享信息服务。人们可以利用储存空间,拓展计算机的存储和运算功能。现在,比起将资料信息等存在电脑或手机上,越来越多的人们更愿意把资料存放在云存储空间里,需要的时候随时下载,非常方便。(如:Google Photos,Google Docs,亚马逊AWS等)。 O2O、物联网将人或物联系起来,然后把与这些人或物相关的大数据,存在云存储空间里,并进行必要的运算。因此,想要提供全天候的服务,时刻保持在线的状态的话,就没必要使用沉重的硬盘和复杂的硬件设备了。 这样,所有的人和物都能实时地连接在网络上,而所有相关数据也都被吸收到云空间里了。虽然我们看不见云空间,但它绝对是真实存在的虚拟空间。 <尾声:五大关键词创造的未来> O2O, IoT, Big Data, AI, Cloud, 在这五个关键词,在互相联系互相影响的过程中,逐渐形成了新的数据时代。在这样的数据时代里,人们之间的联络更加密切,生活节奏也会加快,还能更有效的进行资源分配。 但是,这样的变化,会让所有的人都感觉更幸福吗?带着这样的疑问,科技进步也更加迅速。人类在不断促进科技进步的同时,科技的进步也在改变着人类。不知道这样的改变,能不能称得上是一种进步? 文章 Joo yong Jung/翻译 李天宇 本文转自d1net(转载)

优秀的个人博客,低调大师

Wine 10.9 开发版发布,Windows 应用兼容

Wine 10.9 开发版已发布,共计修复了 34 个 BUG,涵盖打印、游戏、应用崩溃等多个领域,显著提升用户体验。 主要变化如下: 绑定的 vkd3d 升级到 1.16 版本 初步支持在 WIDL 中生成 Windows 运行时元数据 支持使用 Clang 进行基于编译器的异常处理。 EGL 库支持所有图形驱动程序。 修复多项错误 下载地址:https://gitlab.winehq.org/wine/wine/-/releases/wine-10.9

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册