首页 文章 精选 留言 我的

精选列表

搜索[编译原理],共10000篇文章
优秀的个人博客,低调大师

《云安全原理与实践》——导读

**前言**近几年,云计算(Cloud Computing)迅速发展,从美国的亚马逊到我国的阿里云,国内外的云计算服务提供商提供了类型繁多、性价比高的IT服务模式,新的服务类型还在不断推出,并在各行各业得到了广泛应用。云计算是信息技术发展过程中的一次巨大变革,众多国家政府以及大型 IT 企业都制定了云计算发展战略规划,以引领或适应技术变革的趋势。在云计算发展的同时,其安全问题也日益凸显。CSA(Cloud Security Alliance,云安全联盟)在2016年2月发布了《2016 年 12 大顶级云计算安全威胁》,指出了包括数据泄露、系统漏洞、拒绝服务、共享技术等在内的12项云安全威胁,云计算的安全问题逐渐成为制约其快速应用和发展的重要因素。为了让读者全面了解云计算中的安全问题,本书从云计算的基本概念入手,由浅入深地分析了云

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

Docker镜像原理和最佳实践

镜像 传统企业是以交付应用的方式进行发布的,交付应用相当于可执行性程序,其整个应用与环境是分开维护的。随着容器技术的兴起,提出了交付环境的概念。交付环境与交付应用相比,交付的不仅是可执行程序,还交付可执行程序依赖的配置文件、类库甚至是整个文件系统。在Docker语境里面,环境就是镜像。从上图左下角镜像示例图可以看出,镜像本身的组织结构是分层的。其优点是,虽然它包含了所有的依赖,但是发布部署的时候不会显著增加信息的传输量。 镜像的表示分为四部分:红色的部分是镜像中心域名,黄色的部分是镜像命名空间,我们可以根据命名空间进行权限控制等操作,绿色是镜像的名称,每个镜像有一个版本(即标签)。Docker官方的镜像不需要镜像中心的域名,有一些镜像可以省略命名空间。 镜像基本操作 镜像制作——Dockerfile 第一行是一个FROM指令,使用了一个叫a

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

Flink 原理与实现:Session Window

在上一篇文章:Window机制中,我们介绍了窗口的概念和底层实现,以及 Flink 一些内建的窗口,包括滑动窗口、翻滚窗口。本文将深入讲解一种较为特殊的窗口:会话窗口(session window)。建议您在阅读完上一篇文章的基础上再阅读本文。 当我们需要分析用户的一段交互的行为事件时,通常的想法是将用户的事件流按照“session”来分组。session 是指一段持续活跃的期间,由活跃间隙分隔开。通俗一点说,消息之间的间隔小于超时阈值(sessionGap)的,则被分配到同一个窗口,间隔大于阈值的,则被分配到不同的窗口。目前开源领域大部分的流计算引擎都有窗口的概念,但是没有对 session window 的支持,要实现 session window,需要用户自己去做完大部分事情。而当 Flink 1.1.0 版本正式发布时,Fl

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

Flink 原理与实现:Window 机制

Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完善的窗口机制,这是我认为的 Flink 最大的亮点之一(其他的亮点包括消息乱序处理,和 checkpoint 机制)。本文我们将介绍流式处理中的窗口概念,介绍 Flink 内建的一些窗口和 Window API,最后讨论下窗口在底层是如何实现的。 什么是 Window 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,

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

Flink 原理与实现:内存管理

如今,大数据领域的开源框架(Hadoop,Spark,Storm)都使用的 JVM,当然也包括 Flink。基于 JVM 的数据分析引擎都需要面对将大量数据存到内存中,这就不得不面对 JVM 存在的几个问题: Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。 Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大内存空间的JVM来说,GC 会达到秒级甚至分钟级。 OOM 问题影响稳定性。OutOfMemoryError是分布式计算框架经常会遇到的问题,当JVM中所有对象大小超过分配给JVM的内存大小时,就会发生OutOfMemoryError错误,导致JVM崩溃,分布式框架的健壮

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

Hadoop on Yarn 各组件详细原理

运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台。ApplicationMaster和相应的container一起组成了一个Yarn的应用系统。 ResourceManager提供应用程序的调度,每个应用程序由一个ApplicationMaster管理,以Container的形式请求每个任务的计算资源。Container由ResourceMangaer调度,由每个节点的NodeManager上进行本地的管理。 ResourceManager 组件 弄了一个大大的ResourceManager,醒目吧哈哈- -,扯淡到此为止,ResourceManager是Master,仲裁集群所有的可用资源,从而帮助管理运行在Yarn平台上的分布式应用程序。与其他组建的协作包括:接收ApplicationMaster的资源请求,每个节点的NodeManager从ResourceManager中获取指令,管理单个节点上的可用资源。(ApplicationMaster的职责就是向ResourceManager申请资源并且和NodeManager一起工作、启动、监控和停止Container。 一、客户端和ResourceManager交互 这里细说Client端的话,ResourceManager主要是通过Client Service、Admininistration Service、Application ACL Manager ResourceManager Web Application及Web Service组件与客户端交互。 1、Client Service 这个服务实现了基本的客户端到ResourceManager的接口ApplicationClientProtocol.该组件处理所有来自客户端到ResourceManager的远程过程调用(RPC)通信。包括:应用程序提交、应用程序终止、获取应用程序,队列,集群统计,用户ACL及更多信息。在安全模式下,Client Service确保所来自用户的请求都已经认证过(比如通过Kerberos),对于不能直接通过Kerberos认证的客户端,ClientRMService也提供了API,包括ResourceManager代理令牌,代理令牌是Kerberos认证客户端的一种特殊对象,能够第一次安全的与ResourceManager通信并传递给它自己额非认证的进程。 2、Administration Service 既然Client Service是负责处理一般用户应用程序的提交或终止,为了确保管理员的请求不会被一般用户的请求饿死,提供了搞优先级的操作命令,这里就多分离出了一个接口供管理员使用。通过ResourceManagerAdministrationProtocol来实现的通信协议。包含的主要操作有:刷新队列,重新分配队列或改变队列的属性、刷新ResourceManager处理的节点列表,例如:增加新安装的节点或退役现有节点等。 3、Application ACL Manager 类似客户端和管理员等的请求这样面向用户的API,ResourceManager可以通过设置配置属性yarn.acl.enable为true来启动应用程序的ACL。查看访问的ACL决定谁可以通过RPC接口查看一些货所有应用程序的相关细节,WEB UI服务及WEB服务,修改的ACL决定着哪些用户可以"修改"应用程序(杀死程序等) 当相同的ACL信息传递给ApplicationMaster,这样ApplicationMaster可以使用该信息让用户访问ApplicationMaster内部运行的一些服务,作为ContainerLaunchContext的一部分,当拉起一个容器时NodeManager也接收相同的ACL信息,然后使用它们控制针对应用程序/container的请求,主要包括它们的状态、应用日志等。 4、ResourceManager Web Application 和 Web Service 这个就是ResourceManager的一个web应用程序来输出集群的状态信息、指标、节点活跃列表等,指向ApplicationMaster Web接口的超链接及一个调度的专用接口。(就是我们在集群配置中加入的web.address) 二、应用程序与ResourceManager的通信 一旦应用程序通过ResourceManager中的面向客户端的服务,它就会穿过ResourceManager的内部,负责拉起ApplicationMaster的状态机。主要包括以下几个通信方面: 1、ApplicationMaster Service 该组件相应所有来自ApplicationMaster的请求,实现了ApplicationMasterProtocol协议,这是ApplicationMaster与ResourceManager通信的唯一协议。主要包括以下任务:注册新的ApplicationMaster、来自任意正在结束的ApplicationMaster的终止/取消注册请求、认证来自不同ApplicaitonMaster的所有请求,确保合法的ApplicationMaster发送的请求传递给ResourceManager中的应用程序对象、获取来自所有运行ApplicationMaster的Container的分配和释放请求、异步的转发给Yarn调度器. ApplicaitonMaster Service确保了任意时间点、任意ApplicaitionMaster只有一个线程可以发送请求给ResourceManager,因为在ResourceManager上所有来自ApplicaitonMaster的RPC请求都串行化了。 2、ApplicationMaster 存活监控 这个监控器跟踪每个ApplicationMaster以及它的最后的心跳时间。可在配置文件中配置时间,在配置时间内没有产生心跳的ApplicationMaster会被标记为死亡,ResourceManager会重新调度这个应用程序,在一个新的container上运行一个新的ApplicaitonMaster实例,默认情况下,最多允许两次这样的尝试。 三、节点和ResourceManager 通信 下列是ResourceManager的组件和运行在集群节点上的NodeManager进行通信。 1、ResourceManager Tracker Service NodeManager发送心跳给ResourceManager,ResourceManager的该组件负责相应来自所有节点的RPC。实现了ResourceTracker接口与所有NodeManager的通信。主要负责:注册新节点、接收前面注册节点的心跳、确保合法的节点可以和ResourceManager通信。Reource Tracker Service转发一个合法的心跳给YARN调度器,YARN调度器随后根据节点的空闲资源及不同应用程序的资源请求做调度决定。 2、NodeManagers 存活监控 为跟踪活跃的节点和确定已死的节点,该组件跟踪每一个节点的标识符(ID)和它最后的心跳时间。 3、Nodes-List Manager 是在ResourceManager内存中的一个集合,包括有效节点和被排除的节点。它也跟踪由管理员明确退役的节点。 ApplicationMaster 组件 ApplicationMaster负责管理已提交的应用程序的集合。在应用程序提交后,首先检查其合法性,然后,确定没有其他已提交的应用程序已经使用相同的ID.该组件还负责记录和管理已结束的应用程序,过段时间才会从ResourceManager的内存中清除。 一、ApplicationMaster Launcher 在Yarn中,每一个其他类型的Container的拉起都是由ApplicationMaster发起的,ApplicationMaster本身的Container是由ResourceManager申请,并在NodeManager上准备和拉起的。该组件维护一个线程池来设置环境,且和NodeManager通信来拉起新提交应用程序的ApplicationMaster,或者因为某些原因失败的先前应用程序实例所失败的ApplicationMaster。它也在以应用程序正常结束或者要强行终止时,负责告诉NodeManager来清理ApplicaitonMaster。(杀掉相应进程) 二、YarnScheduler Yarn调度器负责给正在运行的应用程序分配资源,这些应用程序受到容量、队列等各方面的限制。 三、ContainerAllocationExpirer 该组件负责确保所有分配的Container最终被ApplicationMaster使用,并在相应的NodeManager上拉起。 NodeManager 组件 NodeManager接受来自ApplicationMaster的启动或停止Container的请求,管理Container是NodeManager的核心功能。在真正拉起一个Container之前,NodeManager会将所有需要的库文件下载到本地,包括数据文件,可执行文件、tarball、JAR文件,shell脚本等待。这样下载好的库文件可以通过本地应用级别缓存被同一应用的多个Container共享。 NodeManager内部也可以划分为一些列嵌套组件,卧槽好多啊。。。 一、NodeStatusUpdater 在NodeManager刚启动时,NodeStatusUpdater组件会向ResourceManager注册,发送本节点的可用资源,以及NodeManager的Web server和RPC Server的监听端口。ResourceManager在注册过程中,向NodeManager发出安全相关的key,NodeManager将用这个KEY作为ApplicationMaster的Container请求做认证。 二、ContainerManager 是NodeManager的核心管理组件。其中也包含许多子组件:RPC Server、资源本地化服务、PUBLIC资源的本地化等等。 具体组件就不一一列举了。。。。太多了。。。。。。。 整个作业大体总体运行流程: 1、应用程序提交给ResourceManager。 2、ApplicationMaster启动,并向ResourceManager注册。 3、ApplicationMaster向ResourceManager请求Container执行实际的工作。 4、ApplicationMaster将从ResourceManager分配的Container信息(包括各种资源配置啊等信息)传递给NodeManager启动。 5、随之,计算过程在Container中进行,这些Container将与ApplicationMaster保持通信,发送心跳等告知任务过程。 6、当应用程序完成后,Container被停止,ApplicationMaster从ResourceManager中注销。

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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部分的功能。

用户登录
用户注册