首页 文章 精选 留言 我的

精选列表

搜索[游戏解决方案],共10000篇文章
优秀的个人博客,低调大师

阿里云 APM 解决方案地图

APM 概述 APM 全称是 Application Performance Management, 是指对应用程序的性能和可用性的监控管理。狭义上的APM单指应用程序的监控,如应用的各接口性能和错误监控,分布式调用链路跟踪,以及其他各类用于诊断(内存,线程等)的监控信息,等;广义上的APM, 除了应用层的监控意外,还包括手机App端监控,页面端监控,容器、服务器监控,以及其他平台组件如中间件容器,数据库等层面的监控。 APM是近5年来伴随着云技术、微服务架构发展起来的一个新兴监控领域。在国内外,无论是云厂商(如AWS, Azure,等)还是独立的公司(Dynatrace, Appdynamics,等),都有着非常优秀的APM产品。 阿里云作为国内最大,世界排名前三的云厂商,其在APM领域也有很多优秀的产品提供,整个产品家族也比较全面。

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

VR直播云服务解决方案

VR直播 通过VR(虚拟现实)技术,用户通过佩戴相关硬件设备,通过平台提供的APP进行直播观看。主播需采用360°全景的拍摄设备,捕捉多角度画面,进行多画面传输后,观看者可通过任意角度进行对直播体验的观察,使得观看者能更加身临其境。 行业背景 VR概念早在1989年被Jaron Lanier所提出,早期主要就是做头显设备,市场上很少有人关注。 2016年,VR+直播的应用场景开始流行。 1)消费级VR设备,包括全景相机、VR眼镜、头显大量涌现。 2)2016年,直播行业从爆发逐渐进入红海,各直播平台借助VR技术,开创VR直播新玩法,希望再次占领舆论风口 行业趋势 2016年VR直播开始流行时,行业普遍看好这种新玩法,认为能够通过沉浸式直播观看体验吸引用户,各直播平台争相引入VR直播。有些创业公司甚至主打VR直播,比如小花秀。 发展1年,VR直播并没

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

嵌入式流程解决方案

一.需求分析由于企业业务的独特性或者企业高层独特的管理思想,很多客户选择了自行开发业务系统的方式来实现独有的竞争力。这类信息系统通常经过了多年的开发,伴随着企业的发展一直在不断优化,与企业的业务非常匹配。然而,近几年流程管理思想和技术的不断兴起,这类系统由于规划时间早,对流程的支持非常弱,因此,很多客户期望通过集成第三方的流程管理产品,在业务系统尽量少调整的前提下,嵌入工作流,实现业务系统的工作流驱动。二.方案实现 以H3 BPM流程引擎为基础,企业自主开发的业务系统通过H3 BPM开放的Webservice接口、 API接口、功能控件等,将流程引擎集成到业务系统,实现业务系统的工作流驱动。 H3 BPM采用微软.net技术架构,如果客户业务系统同样采用.net,可在项目中直接引用H3 BPM的 程序集和控件集,把H3 BPM流 程引擎作为基础构建来使用,如下图: 这样,可以充分的运用H3 BPM进百个控件和所有的API函数,H3 BPM有近 600页的API库,可以完成几乎所有的流程操作,如下图: 旧系统如果不是.net系统,可以采用WebService的方式,H3 BPM给常用 接口封装了WebService接口,包括流程发起、任务提交、任务打回、任务转交、撤销流程等等。如下图: 三.方案价值 本文转自 lwl_BPM 51CTO博客,原文链接:http://blog.51cto.com/12438115/1913512,如需转载请自行联系原作者

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

端到端流程解决方案

一.需求分析 1企业规模的不断发展、管理水平的不断提升,通常伴随着企业各业务板块管理分工更细、更专业,IT系统同样越来越多、越来越专 业化。不可避免的,部门墙和信息孤岛出现了,企业的流程被部门或者IT系统割裂。2通常,企业端到端流程的实现从核心的业务流程开始,比如:制造行业的产品研发流程、订单管理流程,地产行业的采购招标流程、合同管理流程,地产经纪的房产交易流程等等,通过核心业务流程的端到端管理,提升核心业务的管理水平,提升核心竞争力。3打破组织与IT系统边界,把流程从职能组织的背后移到前面来,把流程从各个业务系 统内构架到各业务系统之上,以流程为客户创造价值为目标梳理并落地企业的业务流程,这种端到端的流程越来越被国内企业重视。二.方案实现以H3 BPM为基础平台,以H3集成引擎为企业数据 总线集成客户各业务系统,H3流程引擎与企业数据总线交互,编排各业务系统提供的服务、数据与流程,最终实现构架于各业务系统之上的端到端流程。 端到端有四个重要的方面 1.端到端流程服务于企业某一块业务领域的战略的,需要基 于对业务的梳理进而进行落地2.流程运行的核心支撑数据,包括组织架构、业务规则,同样可以来源于第三方系统3.在落地的过程中,需要通过集成引擎构建企业数据总线,与企业内外的相关系统进行交互4.端到端流程的监控与与优化可以帮助进一步调整企业的战略以及管理体系,从而实现业务流程的优化三.方案价值1.构建企业核心竞争力核心业务流程实现端到端的管理,实质就是重塑企业核心业务的能力,为企业定义的核心端到端业务流程实现了对核心业务的洞察、管理与优化,帮助企业构建了核心竞争力。2.构建更优的IT架构方案通过集成引擎帮助企业实现了数据总线、实质是企业IT实现SOA架构的过程,重塑了企业的IT架构,让各系统更高层面的服务于业务,从而实现了IT架构优化。3.帮助企业建立流程型组织端到端流程支持企业实现最广泛的业务聚焦,并可跨基于传统业务部门角色的职责实现优化,打破阶层的管理思想,帮助企业逐步构建流程型组织。 本文转自 lwl_BPM 51CTO博客,原文链接:http://blog.51cto.com/12438115/1913503,如需转载请自行联系原作者

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

互联网行业解决方案

行业应用特征 互联网行业的运维工作主要有如下典型特征: - 海量的用户访问 - 海量的数量存储 - 业务系统至上,成功访问为本 - 对Web服务和中间件的关注 - 对运行数据库或Web应用的主机集群的关注 - 互联网企业网络的特殊性 - 网管软件本身的安全性 方案功能 进程和Web应用服务的监控 - DNS轮询、squid反向代理服务以及进程 - 负载均衡设备 - 应用日志 针对海量的数据存储 方案对两个层面进行监控:物理层面的监控和数据库应用层面的监控。 网站页面的可用性监控 方案提供了针对网站业务流的监控组件Mocha RTM (Response Time Management),该组件从用户的角度,灵活录制网站或者Portal的任何业务流程,量化各业务环节响应时间,并按设定频度轮询指定的业务流程,实时查询业务流程响应时间,并灵活设定响应时间的阈值,实现告警。最后通过KPI图表分析业务环节录制网站业务流的整个过程。并可通过抓取网页中的关键字,来确保网页的可用。 Web服务器监控 方案提供了针对Apache、IIS、Tomcat的监控,对整个Web服务器的运行情况,做全面的可用性、性能的监控。 主机集群监控 针对互联网用户Linux集群、Window服务器众多的情况,方案提供了两种监控方式:Agent和Agentless。 分布式监控 互联网行业企业网络通常会把Web服务器放在企业DMZ区内,有些在各地有单独的机房和IDC,这就要求监控软件需要适应灵活的服务器部署。 网络安全 网络安全一直是互联网行业最关心的问题,Mocha BSM从四个方面来提高自身的安全性。 - 严格安全测试; - 各个组件之间的传输都是通过SSH加密的; - HTTPS的访问方式; - 登入安全措施—当用户密码输入错误三次后,系统会锁定此用户30分钟。 方案亮点 B/S架构,全中文界面 采用灵活的B/S架构,不需要安装任何的客户端,所有工作通过一个浏览器即可完成,不管身在何处,系统管理员就可以随时随地的访问系统。 软件安装简易快捷 因为采用无代理(Agentless)的监控方式,监控的过程变得简单迅速,只需要输入相应的信息,就可以迅速有效的监控相关的应用和系统。 可视化监控 Mocha 专利技术-可视化监控,实时的监控某主机或应用的运行情况,一目了然,大大降低了系统管理的门槛。 统一登录,易于管理和使用 整个网络环境中,所有的设备,所有的功能都统一展现在Mocha Portal中,统一登录,针对不同的用户,定制不同的页面和管理内容。 权限管理清晰,系统自身安全 Mocha BSM采用视图和资源两层权限控制体系,视图管理控制用户可以看到哪些页签,资源管理可以控制用户管理哪些资源。各个系统管理员看到的内容和权限都可以做灵活的定制。 系统架构灵活,易于修改和扩展 系统采用灵活的三层架构,展现层展现数据,收集层收集数据,分布式的采集服务器采集数据。适应各种网络的情况,易于扩展和维护。 更多相关信息,请点击 [url]http://www.mochabsm.com[/url] 本文转自赖永锋51CTO博客,原文链接:http://blog.51cto.com/mochasoft/86607 ,如需转载请自行联系原作者

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

【Release Notes】Kubernetes解决方案更新

2017年8月 支持Kubernetes 1.7.2, 相应变更请参见 CHANGELOG。 去部署Kubernetes CloudProvider切换使用ECS实例ID标识集群节点,支持用户自由更改控制台实例名称。 CloudProvider支持创建VPC内网类型的SLB,同时保留classic网络类型的内网SLB供用户选择。 支持阿里云磁盘。 支持out-of-tree CloudProvider,用户可以运行一个原生的Kubernetes集群,通过添加controller的方式为集群添加阿里云资源支持。 flannel更新到0.8.0版本 nginx-ingress-controller更新到0.9.0-beta.12 heapster更新到1.4.2 2017年7月 支持Kubernetes1.6.7,相应变更请参见 CHANGLOG 支持在K

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

Mesos高可用解决方案剖析

Mesos高可用架构概述 首先,我们来参考Mesos官方给出的设计架构,如图1所示。 Mesos采用的也是现在分布式集群中比较流行的Master/Slave主从集群管理架构,Mesos master节点是整个集群的中枢,它责管理和分配整个Mesos集群的计算资源,调度上层Framework提交的任务,管理和分发所有任务的状态。这种主从架构设计简单,能够满足大多数正常情况下的集群运作需求,目前仍然存在于很多分布式的系统中,比如Hadoop、MySQL集群等。但是这种简单的设计存在一个致命缺陷,就是Mesos master必须做为一个服务程序持续存在于集群中,它虽然孤立,但是地位举足轻重,不容有失。 在单个Mesos master节点的集群中,如果Mesos master节点故障,或者服务不可用,虽然在每一个Slave节点上的任务可以继续运行,但是集群中新的资源将无法再分配给上层Framework,上层Framework将无法再利用已经收到的offer提交新任务,并且无法收到正在运行任务的状态更新。为了解决这个问题,提高Mesos集群的高可用性,减少Mesos master节点故障所带来的影响,Mesos集群采用了传统的主备冗余模式(Active-Standby)来支持一个Mesos集群中部署多个Mesos master节点,借助于ZooKeeper进行Leader的选举。选举出的Leader负责将集群的资源以契约(offer)的形式发送给上层的每一个Framework,并处理集群管理员与上层Framework的请求,另外几个Mesos master节点将作为Follower一直处于备用状态,并监控当前的状态,当Mesos master节点宕机,或服务中断之后,新Leader将会很快从Follower中选出来接管所有的服务,减少了Mesos集群服务的宕机时间,大大提高了集群的可用性。 Mesos高可用集群部署 在Mesos高可用设计中,引入了ZooKeeper集群来辅助Leader的选举,这在当前的分布式集群中比较流行,比如Docker Swarm高可用集群同时支持利用consul、etcd、ZooKeeper进行Leader的选举,Kubernetes也采用了etcd等实现了自身的高可用。这种设计可以理解为大集群+小集群,小集群也就是ZooKeeper/etcd/consul集群,它们为大集群服务,比如提供Leader的选举,为大集群提供配置数据的存储和服务发现等功能。在一个复杂的系统中,这个小集群可以为系统的多个服务组件同时提供服务。因此在部署高可用Mesos集群时,必须首先部署好一个ZooKeeper集群。 本文主要介绍Mesos的高可用,不会详细介绍ZooKeeper的相关知识你可以参考官方文档https://ZooKeeper.apache.org/来部署。为了使读者可以快速搭建它们自己的Mesos高可用集群,我们将使用Docker的方式在zhost1.wyq.com(9.111.255.10),zhost2.wyq.com(9.111.254.41)和zhost3.wyq.com(9.111.255.50)机器上快速的搭建起一个具有三个节点的演示ZooKeeper集群,它们的服务端口都是默认的2181。 登录zhost1.wyq.com机器,执行如下命令启动第一个server: # docker run -d \ -e MYID=1 \ -e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \ --name=zookeeper \ --net=host \ --restart=always \ mesoscloud/zookeeper 登录zhost2.wyq.com机器,执行如下命令启动第二个server: # docker run -d \ -e MYID=2 \ -e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \ --name=zookeeper \ --net=host \ --restart=always \ mesoscloud/zookeeper 登录zhost3.wyq.com机器,执行如下命令启动第三个server: # docker run -d \ -e MYID=3 \ -e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \ --name=zookeeper \ --net=host \ --restart=always \ mesoscloud/zookeeper ZooKeeper集群搭建好之后,执行以下命令,通过指定一个不存在的znode的路径/mesos来启动所有的Mesos master,Mesos slave和Framework。 登陆每一个Mesos master机器,执行以下命令,在Docker中启动所有的Mesos master: # docker run -d \ --name mesos-master \ --net host mesosphere/mesos-master \ --quorum=2 \ --work_dir=/var/log/mesos \ --zk= zk://zhost1.wyq.com:2181,zhost2.wyq.com:2181,zhost3.wyq.com:2181/mesos 登陆每一个Mesos Agent机器,执行以下命令,在Docker中启动所有的Mesos agent: # docker run -d \ --privileged \ -v /var/run/docker.sock:/var/run/docker.sock \ --name mesos-agent \ --net host gradywang/mesos-agent \ --work_dir=/var/log/mesos \ --containerizers=mesos,docker \ --master= zk://zhost1.wyq.com:2181,zhost2.wyq.com:2181,zhost3.wyq.com:2181/mesos 注意:Mesosphere官方所提供的Mesos Agent镜像mesosphere/mesos-agent不支持Docker的容器化,所以作者在官方镜像的基础至上创建了一个新的镜像gradywang/mesos-agent来同时支持Mesos和Docker的虚拟化技术。 使用相同的znode路径来启动framework,例如我们利用Docker的方式来启动Docker Swarm,让它运行在Mesos之上: $ docker run -d \ --net=host gradywang/swarm-mesos \ --debug manage \ -c mesos-experimental \ --cluster-opt mesos.address=9.111.255.10 \ --cluster-opt mesos.tasktimeout=10m \ --cluster-opt mesos.user=root \ --cluster-opt mesos.offertimeout=1m \ --cluster-opt mesos.port=3375 \ --host=0.0.0.0:4375 zk://zhost1.wyq.com:2181,zhost2.wyq.com:2181,zhost3.wyq.com:2181/mesos 注:mesos.address和mesos.port是Mesos scheduler的监听的服务地址和端口,也就是你启动Swarm的机器的IP地址和一个可用的端口。个人感觉这个变量的命名不是很好,不能见名知意。 用上边的启动配置方式,所有的Mesos master节点会通过ZooKeeper进行Leader的选举,所有的Mesos slave节点和Framework都会和ZooKeeper进行通信,获取当前的Mesos master Leader,并且会一直检测Master节点的变化。当Leader故障时,ZooKeeper会第一时间选出新Leader,然后所有的Slave节点和Framework都会获取到新Leader进行重新注册。 ZooKeeper Leader的选举机制 根据ZooKeeper官方推荐的Leader选举机制:首先指定一个Znode,如上例中的/mesos(强烈建议指定一个不存在的Znode路径),然后使用SEQUENCE和EPHEMERAL标志为每一个要竞选的client创建一个Znode,例如/mesos/guid_n来代表这个client。 当为某个Znode节点设置SEQUENCE标志时,ZooKeeper会在其名称后追加一个自增序号,这个序列号要比最近一次在同一个目录下加入的znode的序列号大。具体做法首先需要在ZooKeeper中创建一个父Znode,比如上节中指定的/mesos,然后指定SEQUENCE|EPHEMERAL标志为每一个Mesos master节点创建一个子的Znode,比如/mesos/znode-index,并在名称之后追加自增的序列号。 当为某个Znode节点设置EPHEMERAL标志时,当这个节点所属的客户端和ZooKeeper之间的seesion断开之后,这个节点将会被ZooKeeper自动删除。 ZooKeeper的选举机制就是在父Znode(比如/mesos)下的子Znode中选出序列号最小的作为Leader。同时,ZooKeeper提供了监视(watch)的机制,其他的非master节点会不断监视当前的Leader所对应的Znode,如果它被删除,则触发新一轮的选举。大概有两种做法: 所有的非Leader client监视当前Leader对应的Znode(也就是序列号最小的Znode),当它被ZooKeeper删除的时候,所有监视它的客户端会立即收到通知,然后调用API查询所有在父目录(/mesos)下的子节点,如果它对应的序列号是最小的,则这个client会成为新的Leader对外提供服务,然后其他客户端继续监视这个新Leader对应的Znode。这种方式会触发“羊群效应”,特别是在选举集群比较大的时候,在新一轮选举开始时,所有的客户端都会调用ZooKeeper的API查询所有的子Znode来决定谁是下一个Leader,这个时候情况就更为明显。 为了避免“羊群效应”,ZooKeeper建议每一个非Leader的client监视集群中对应的比自己节点序小一号的节点(也就是所有序号比自己小的节点中的序号最大的节点)。只有当某个client所设置的watch被触发时,它才进行Leader选举操作:查询所有的子节点,看自己是不是序号最小的,如果是,那么它将成为新的Leader。如果不是,继续监视。此 Leader选举操作的速度是很快的。因为每一次选举几乎只涉及单个client的操作。 Mesos高可用实现细节 Mesos主要通过contender和detector两个模块来实现高可用,架构如图2所示。 Contender模块用来进行Leader选举,它负责把每个Master节点加入到选举的Group中(作为/mesos目录下的一个子节点),组中每个节点都会有一个序列号,根据上文对ZooKeeper选举机制的介绍,组中序列号最小的节点将被选举为Leader。 以上文例子为例(假设作者部署了三个节点的Mesos master),可以查看ZooKeeper的存储来加以验证。 登录到ZooKeeper集群中的某一个节点,执行如下命令链接到集群中的某个节点,查看这个Group: # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a6fab50e2689 mesoscloud/zookeeper "/entrypoint.sh zkSer" 50 minutes ago Up 49 minutes zookeeper # docker exec -it a6fab50e2689 /bin/bash # cd /opt/zookeeper/bin/ # ./zkCli.sh -server 9.111.255.10:2181 [zk: 9.111.255.10:2181(CONNECTED) 0] ls /mesos [json.info_0000000003, json.info_0000000004, json.info_0000000002, log_replicas] 我们可以看到在/mesos目录下有三个带有后缀序号的子节点,序号值最小的节点将作为master节点,查看序号最小的节点json.info_0000000002的内容如下: [zk: 9.111.255.10:2181(CONNECTED) 1] get /mesos/json.info_0000000002 {"address":{"hostname":"gradyhost1.eng.platformlab.ibm.com","ip":"9.111.255.10","port":5050},"hostname":"gradyhost1.eng.platformlab.ibm.com","id":"93519a55-4089-436c-bc07-f7154ec87c79","ip":184512265,"pid":"master@9.111.255.10:5050","port":5050,"version":"0.28.0"} cZxid = 0x100000018 ctime = Sun May 22 08:42:10 UTC 2016 mZxid = 0x100000018 mtime = Sun May 22 08:42:10 UTC 2016 pZxid = 0x100000018 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x254d789b5c20003 dataLength = 264 numChildren = 0 根据查询结果,当前的Mesos master节点是 gradyhost1.eng.platformlab.ibm.com。 Detector模块用来感知当前的master是谁,它主要利用ZooKeeper中的watcher的机制来监控选举的Group(/mesos目录下的子节点)的变化。ZooKeeper提供了getChildren()应用程序接口,此接口可以用来监控一个目录下子节点的变化,如果一个新子节点加入或者原来的节点被删除,那么这个函数调用会立即返回当前目录下的所有节点,然后Detector模块可以挑选序号最小的作为master节点。 每一个Mesos master会同时使用Contender和Detector模块,用Contender进行master竞选。在master节点上使用Detector模块的原因是在Mesos的高可用集群中,你可以使用任意一个master节点的地址和端口来访问Mesos的WebUI,当访问一个Replica节点时,Mesos会把这个浏览器的链接请求自动转发到通过Detector模块探测到的master节点上。 其他的Mesos组件,例如Mesos Agent,Framework scheduler driver会使用Detector模块来获取当前的Mesos master,然后向它注册,当master发送变化时,Detecor模块会第一时间通知,它们会重新注册(re-register)。 由于IBM在Mesos社区的推动,在MESOS-4610项目中,Mesos Contender和Detector已经可以支持以插件的方式进行加载。现在Mesos社区官方仅支持用Zookeeper集群进行Leader选举,在支持了插件的方式加载后,用户可以实现自己的插件,用另外的方式比如选择用etcd(MESOS-1806)、consule(MESOS-3797)等集群进行Leader选举。 注意:现在Mesos仅用ZooKeeper进行Leader的选举,并没有用它进行数据的共享。在Mesos中有一个Replicated Log模块,负责进行多个master之间的数据共享、同步等。可以参考Mesos的官方文档获取详细的设计http://mesos.apache.org/documentation/latest/replicated-log-internals/。同时为了使Mesos的高可用不依赖与一个第三方的集群,现在社区正在考虑用Replicated log替代第三方集群进行Leader选举,具体进度可以参考MESOS-3574项目。 Mesos master recovery 在Mesos设计中,master除了要在Replicated log中持久化一些集群配置信息(例如Weights、Quota等),0集群maintenance的状态和已经注册的Agent的信息外,基本上被设计为无状态的。master发生failover,新的master选举出来之后: 它会首先从Replicated log中恢复之前的状态,目前Mesos master会从Replicated log中recover以下信息。 Mesos集群的配置信息,例如weights,quota等。这些配置信息是Mesos集群的管理员通过HTTP endpoints来配置的。 集群的Maintenance信息。 之前注册的所有的Agent信息(SlaveInfo)。同时master会为Agents 的重新注册(re-register)设置一个超时时间(这个参数通过master的slave_reregister_timeout flag进行配置,默认值为10分钟),如果某些Agents在这个时间内没有向新master重新注册,将会从Replicated log中删除,这些Agents将不能以原来的身份(相同的SlaveId)重新注册到新的Mesos master,其之前运行的任务将全部丢失。如果这个Agent想再次注册,必须以新的身份。同时为了对生产环境提供安全保证,避免在failover之后,大量的Agents从Replicated log中删除进而导致丢失重要的运行任务,Mesos master提供了另外一个重要的flag配置recovery_slave_removal_limit,用来设置一个百分比的限制,默认值为100%,避免过多的Agents在failover之后被删除,如果将要删除的Agents超过了这个百分比,那么这个Mesos master将会自杀(一般的,在一个生产环境中,Mesos的进程将会被Systemd或者其他进程管理程序进行监管,如果Mesos服务进程退出,那么这个监管程序会自动再次启动Mesos服务)。而不是把那些Agents从Replicated log中删除,这会触发下一次的failover,多次failover不成功,就需要人为干预。 另外,新的Mesos master选举出来之后,所有之前注册的Mesos agents会通过detector模块获取新的master信息,进而重新注册,同时上报它们的checkpointed资源,运行的executors和tasks信息,以及所有tasks完成的Framework信息,帮助新master恢复之前的运行时内存状态。同样的原理,之前注册的Framework也会通过detector模块获取到新的Master信息,向新master重新注册,成功之后,会获取之前运行任务的状态更新以及新的offers。 注意:如果在failover之后,之前注册并且运行了任务的Frameworks没有重新注册,那么它之前运行的任务将会变成孤儿任务,特别对于哪些永久运行的任务,将会一直运行下去,Mesos目前没有提供一种自动化的机制来处理这些孤儿任务,比如在等待一段时间之后,如果Framework没有重新注册,则把这些孤儿任务杀掉。现在社区向通过类似Mesos Agents的逻辑,来持久化Framework info,同时设置一个超时的配置,来清除这些孤儿任务。具体可以参见MESOS-1719。 Mesos Agent健康检查 Mesos master现在通过两种机制来监控已经注册的Mesos Agents健康状况和可用性: Mesos master会持久化和每个Agent之间的TCP的链接,如果某个Agent服务宕机,那么master会第一时间感知到,然后: 1-1. 把这个Agent设为休眠状态,Agent上的资源将不会再offer给上层Framework。 1-2. 触发rescind offer,把这个Agent已经offer给上层Framework的offer撤销。 1-3. 触发rescind inverse offer,把inverse offer撤销。 同时,Mesos master会不断的向每一个Mesos Agent发送ping消息,如果在设定时间内(由flag.slave_ping_timeout配置,默认值为15s)没有收到对应Agent的回复,并且达到了一定的次数(由flag. max_slave_ping_timeouts 配置,默认值为5),那么Mesos master会: 2-1. 把这个Agent从master中删除,这时资源将不会再offer给上层的Framework。 2-2. 遍历这个Agent上运行的所有的任务,向对应的Framework发送TASK_LOST状态更新,同时把这些任务从master删除。 2-3. 遍历Agent上的所有executor,把这些executor删除。 2-4. 触发rescind offer,把这个Agent上已经offer给上层Framework的offer撤销。 2-5. 触发rescind inverse offer,把inverse offer撤销。 2-6. 把这个Agent从master的Replicated log中删除。 Mesos Framework健康检查 同样的原理,Mesos master仍然会持久化和每一个Mesos Framework scheculer之间的TCP的连接,如果某一个Mesos Framework服务宕机,那么master会第一时间感知,然后: 把这个Framework设置为休眠状态,这时Mesos master将不会在把资源offer给这个Framework 。 触发rescind offer,把这个Framework上已经收到的offer撤销。 触发rescind inverse offer,把这个Framework上已经收到的inverse offer撤销。 获取这个Framework注册的时候设置自己的failover时间(通过Framework info中的failover_timeout参数设置),创建一个定时器。如果在这个超时时间之内,Framework没有重新注册,则Mesos master会把Framework删除: 4-1. 向所有注册的Slave发送删除此Framework的消息。 4-2. 清除Framework上还没有执行的task请求。 4-3. 遍历Framework提交的并且正在运行的任务,发送TASK_KILLED消息,并且把task从Mesos master和对应的Agent上删除。 4-4. 触发rescind offer,把这个Framework上已经收到的offer撤销。 4-5. 触发rescind inverse offer,把Framework上已经收到的inverse offer撤销。 4-6. 清除Framework对应的role。 4-7. 把Framework从Mesos master中删除。 未来展望 从我个人的角度看,Mesos高可用这个功能应该做如下增强。 现在的设计中,Mesos的高可用必须依赖一个外部的ZooKeeper集群,增加了部署和维护的复杂度,并且目前这个集群只是用来做Leader选举,并没有帮助Mesos master节点之间存储和共享配置信息,例如Weights、Quota等。社区现在已经发起了一个新项目MESOS-3574,将研究和实现用Replicated log来替代ZooKeeper,帮助Mesos master选举和发现Leader。个人认为价值比较大,它实现之后,可以大大简化Mesos高可用架构的复杂度。 现在ZooKeeper作为搭建Mesos高可用集群的唯一选择,可能在比较大的集成系统中不合时宜,在IBM工程师的推动下,社区已经将和Mesos高可用的两个模块Contender和Detector插件化,用户可以实现自己的插件来进行Mesos master的选举和发现,已经实现了对etcd的支持。感兴趣的同学可以参考MESOS-1806项目。 另外,Mesos现在这个高可用的设计采用了最简单的Active-standby模式,也就是说只有当前的Mesos master在工作,其他的candidate将不会做任何事情,这会导致资源的浪费。另外在特别大的Mesos集群中,master candidates并不能提供负载均衡。未来是不是可以考虑将Mesos高可用修改为Active-Active模式,比如让master candidates可以帮助处理一些查询的请求,同时可以帮助转发一些写请求到当前的master上,来提高整个集群的性能和资源利用率。 作者:王勇桥 来源:《程序员》 原文链接

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

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

用户登录
用户注册