首页 文章 精选 留言 我的

精选列表

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

嵌入式流程解决方案

一.需求分析由于企业业务的独特性或者企业高层独特的管理思想,很多客户选择了自行开发业务系统的方式来实现独有的竞争力。这类信息系统通常经过了多年的开发,伴随着企业的发展一直在不断优化,与企业的业务非常匹配。然而,近几年流程管理思想和技术的不断兴起,这类系统由于规划时间早,对流程的支持非常弱,因此,很多客户期望通过集成第三方的流程管理产品,在业务系统尽量少调整的前提下,嵌入工作流,实现业务系统的工作流驱动。二.方案实现 以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上,来提高整个集群的性能和资源利用率。 作者:王勇桥 来源:《程序员》 原文链接

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

开源数据库备份神器 Databasus|Docker容器化搭建实操

# 一、Databasus介绍 ## 1.1 Databasus目简介 > Databasus 是一款免费、开源、可自托管的现代化数据库备份管理工具。它通过一个精致且功能强大的 Web 界面,将分散的数据库备份工作统一起来,支持 PostgreSQL、MySQL、MariaDB 和 MongoDB,旨在终结混乱的手工脚本时代,让备份真正变得“可管、可控、可协作”。 ## 1.2 Databasus主要特点 1. **多数据库统一管理**:支持 PostgreSQL 12-18、MySQL 5.7-9、MariaDB 10-12 及 MongoDB 4.2+ 至 8 等主流版本,实现单一平台集中管控。 1. **灵活的调度与智能压缩**:支持按小时、天、周、月或自定义 Cron 表达式进行精确调度,并采用智能压缩技术,可节省 4-8 倍存储空间。 1. **真实恢复验证**:通过实际启动数据库容器执行恢复操作,并生成包含每张表行数的详细报告,确保备份文件不仅存在,而且真实可用。 1. **多样化的保留策略**:提供按时间、按数量以及 GFS(祖父-父亲-儿子)分层保留三种策略,满足从简单清理到长期合规归档的各类需求。 1. **丰富的存储后端与安全加密**:支持本地、S3、Google Drive、SFTP 等数十种存储目的地,所有备份在离开前均经过 AES-256-GCM 加密,杜绝厂商锁定。 1. **实时多渠道通知**:支持邮件、Telegram、Slack、Discord 及 Webhook 等多种渠道,在备份成功或失败时第一时间通知团队。 1. **企业级团队协作**:提供工作空间隔离、基于角色的访问控制(RBAC)和完整审计日志,满足多项目、多团队的协作与合规要求。 1. **多样的连接与备份类型**:支持远程直连和轻量级 Agent 两种连接方式,并提供逻辑、物理和增量(支持 PITR 时间点恢复)三种备份类型。 # 二、本次实践规划 ## 2.1 本地环境规划 > 本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。 |hostname|IP地址 |操作系统版本 |Docker版本 |部署项目|备注| | --- | --- | --- | --- | --- | --- | |jeven|192.168.3.88 |Ubuntu 24.04.2 LTS|28.5.0 |Databasus|——| ## 2.2 本次实践介绍 > 1.本次实践部署环境为个人测试环境,生产环境请谨慎; > 2.在Docker环境下部署Databasus数据库备份工具。 # 三、本地环境检查 ## 3.1 检查Docker服务状态 > 检查Docker服务是否正常运行,确保Docker正常运行。 ``` root@jeven:~# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled) Active: active (running) since Wed 2026-05-13 20:00:35 CST; 1 week 1 day ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 755791 (dockerd) Tasks: 154 Memory: 1.3G (peak: 2.5G) CPU: 17min 28.568s CGroup: /system.slice/docker.service ``` ## 3.2 检查Docker版本 > 检查Docker版本 ``` root@jeven:~# docker -v Docker version 28.5.0, build 887030f ``` ## 3.3 检查docker compose 版本 > 检查Docker compose版本,确保2.0以上版本。 ``` root@jeven:~# docker compose version Docker Compose version v2.39.4 ``` # 四、拉取Databasus镜像 > 下载Databasus镜像,执行以下命令: ``` root@jeven:~# docker pull databasus/databasus:v3.42.0 v3.42.0: Pulling from databasus/databasus 068fedd6b0f1: Pull complete b82951ac38bb: Pull complete 355847d77b88: Pull complete 24b019d43c64: Pull complete b9c684d21a23: Pull complete 4f4fb700ef54: Pull complete 079ebae73ecf: Pull complete 77222f6e2994: Pull complete 960f9198fd81: Pull complete b38d9bf88a30: Pull complete 6dd879aea289: Pull complete 65e2dec335af: Pull complete 33a6da0e4493: Pull complete fbd387e747d5: Pull complete 90fa4f99a3ad: Pull complete cb000e46e837: Pull complete Digest: sha256:f748c20cecb3cf3162d80ebfddd4f192b5e4ee640d600c9daf726310ac49e51c Status: Downloaded newer image for databasus/databasus:v3.42.0 docker.io/databasus/databasus:v3.42.0 ``` ![](https://developer.qcloudimg.com/http-save/4995888/70c78f6c60e931eeb0ce7bf3a7c241a8.png) # 五、部署Databasus服务 ## 5.1 创建部署目录 > 创建部署目录 ``` mkdir -p /data/databasus/data && cd /data/databasus ``` > 在测试环境中,为了方便操作,我们直接为挂载目录设置了完全权限。但在生产环境中,请务必根据实际安全需求,配置更精细、严格的权限控制方案。 ``` chmod -R 777 /data/databasus ``` ## 5.2 docker-cli方式部署(可选) > 如果想要使用docker-cli方式部署,可参考以下命令部署。(可选) ``` docker run -d \ --name databasus \ --restart=unless-stopped \ -p 6500:4005 \ -v $(pwd)/data:/databasus-data \ databasus/databasus:v3.42.0 ``` ## 5.3 创建Databasus容器 > 本次实践我们采用 Docker Compose 方式进行部署,这也是我推荐的方式。首先我们需要创建并编辑 `docker-compose.yaml` 文件,请注意宿主机映射端口可根据您的实际情况自行设置,务必避免端口冲突。 ``` vim docker-compose.yaml ``` ``` version: "3" services: databasus: image: databasus/databasus:v3.42.0 container_name: databasus restart: always ports: - "6500:4005" volumes: - /data/databasus/data:/databasus-data ``` > 执行以下命令,创建Databasus容器。 ``` docker compose up -d ``` ![](https://developer.qcloudimg.com/http-save/4995888/1544a374656518a52446264bbc921e79.png) ## 5.4 查看Databasus容器状态 > 检查Databasus容器运行状态,确保Databasus容器正常启动。 ``` root@jeven:/data/databasus# docker compose ps WARN[0000] /data/databasus/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS databasus databasus/databasus:v3.42.0 "/app/start.sh" databasus 51 seconds ago Up 51 seconds 0.0.0.0:6500->4005/tcp, [::]:6500->4005/tcp ``` ![](https://developer.qcloudimg.com/http-save/4995888/4eb93a983906d1ac5c188448f261670e.png) ## 5.5 检查Databasus容器日志 > 检查容器运行日志,确保Databasus服务正常运行。 ``` docker compose logs ``` ![](https://developer.qcloudimg.com/http-save/4995888/e989048e836b0f522cb8a7678e7f1a4e.png) ![](https://developer.qcloudimg.com/http-save/4995888/eb03ff6a6af2bf1812a48575b3407840.png) # 六、访问Databasus服务 ## 6.1 访问Databasus初始页 > 浏览器地址: `http://:6500`,访问Databasus初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。 ![](https://developer.qcloudimg.com/http-save/4995888/4b3398378814ed46bfd059bf4589d33a.png) ## 6.2 登录Databasus > 默认账号为admin,密码我们自行设置即可。 ![](https://developer.qcloudimg.com/http-save/4995888/00b8d7dd59c745a423fff3c4d624d407.png) ![](https://developer.qcloudimg.com/http-save/4995888/8027488f66fdf06a19b91f7c944d8f7a.png) # 七、数据库备份 ## 7.1 创建工作空间 > 点击【Create workspace】创建工作空间,名称自行填写。 ![](https://developer.qcloudimg.com/http-save/4995888/f38674a5cb139f94fefb3ab748bc852a.png) ## 7.2 添加备份数据库 > 我们点击“Add database”,填写数据库名称和数据库类型。这里备份的数据库为测试的mariadb数据库,如下所示: ![](https://developer.qcloudimg.com/http-save/4995888/1933b6e0f40ca6b8fc48d030699892d7.png) > 填写备份数据库的相关信息,测试连接成功后,点击下一步继续。 ![](https://developer.qcloudimg.com/http-save/4995888/4969561b1f9bb4eedc7e73a53627f729.png) > 创建只读用户,为了备份安全了创建只读用户。 ![](https://developer.qcloudimg.com/http-save/4995888/7a9fe8fe6bf9d4f698ce73c0758219c1.png) > 设置备份计划:根据需要填写,注意存储选择可选择本地存储或其余方式。 ![](https://developer.qcloudimg.com/http-save/4995888/4b334104a00816c8079a668fbbab9c12.png) > 完成备份数据库的添加,如果需要配置通知器,可自行创建与配置。 ![](https://developer.qcloudimg.com/http-save/4995888/dddd9da701ef0d5ea3b1fdf1d99aee95.png) ![](https://developer.qcloudimg.com/http-save/4995888/8a6a91faac96295a255c0024b6534332.png) # 八、总结 > 本次实践在本地 Docker 环境中成功部署了 Databasus 数据库备份工具,从拉取镜像、创建容器到配置端口映射,整个过程流畅高效。通过其直观的 Web 界面,我们快速完成了工作空间创建与数据库添加,充分验证了该工具在统一管理多类型数据库备份任务上的便捷性。Databasus 集成了灵活的调度策略、多样化的存储后端以及强大的团队协作功能,为中小团队提供了一套开箱即用、安全可靠的数据保护方案。这套部署流程可快速复用于开发测试及生产环境,有效降低数据库备份管理的运维成本。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Spring

Spring

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册