首页 文章 精选 留言 我的

精选列表

搜索[检查工具],共10016篇文章
优秀的个人博客,低调大师

Giraph源码分析(四)—— Master 如何检查Worker启动成功

本文的目的 说明Giraph如何借助ZooKeeper来实现Master与Workers间的同步(不太确定)。 环境 在单机上(机器名:giraphx)启动了2个workers。 Giraph遵从单Master多Workers结构,BSPServiceMaster使用MasterThread线程来进行全局的同步。每个Worker启动成功后,会向Master汇报自身的健康状况,那么Master是如何检测Workers是否都成功启动了? Master在ZooKeeper上创两个目录,_workerHealthyDir和 _workerUnhealthyDir,分别用来记录Healthy Workers和UnHealthy Workers。 主要在BspServiceMaster类中的getAllWorkerInfos()方法来完成,其调用关系如下,注意下getAllWorkerInfos()到MasterThread.run()方法调用关系,比较难找。 创建的两个目录如下: /_hadoopBsp/job_201404102333_0002/_applicationAttemptsDir/0/_superstepDir/-1/_workerHealthyDir /_hadoopBsp/job_201404102333_0002/_applicationAttemptsDir/0/_superstepDir/-1/_workerUnhealthyDir 每个Worker在setup()中,调用registerHealth()方法来注册自身的状态。 若自身是Healthy的,则在_workerHealthyDir目录下添加子节点 /wokerInfo.getHostNameId(),否则在_workerUnhealthyDir目录下添加。wokerInfo.getHostNameId()为:Hostname+“_”+TaskId。 Task1和Task2 (Task 0是master) 创建的子节点如下: /_hadoopBsp/job_201404102333_0002/_applicationAttemptsDir/0/_superstepDir/-1/_workerHealthyDir/giraphx_1 /_hadoopBsp/job_201404102333_0002/_applicationAttemptsDir/0/_superstepDir/-1/_workerHealthyDir/giraphx_2 Master 在checkWorkers()方法中,在While死循环中(实际有超时限制),通过调用getAllWorkerInfos()方法来获取_workerHealthyDir目录下的子节点,然后比较子节点数目是否达到maxWorkers(启动job时定义的,-w参数)。 若小于maxWorkers,则继续调用getAllWorkerInfos()方法进行下一轮检测;若等于maxWorker,退出While循环,然后返回healthyWorkersInfoList:[Worker(hostname=giraphx, MRtaskID=1, port=30001), Worker(hostname=giraphx, MRtaskID=2, port=30002)] 。 问题:由于在分布式环境中,每个Worker和Maste都是并行运行,彼此不知道对方的运行情况。上述第3步骤中,若还有子节点还没有创建,就一直在while死循环中调用来检测getAllWorkerInfos()方法检测,效率比较低下,当然也比较笨! Giraph借用ZooKeeper来高效的进行检测。设计理念如下: master在获取子节点时,注册Watcher(为注册器,用于触发相应事件)。 若某个task创建了子节点后,就会触发Watcher事件。 若子节点数目小于maxWorkers,就调用 workerHealthRegistrationChanged的await()方法释放当前线程的锁,陷入等待状态。不会进行无用的检测。 说明:workerHealthRegistrationChanged为PredicateLock类型(implements BspEvent接口),PredicateLock里面使用可重入锁 ReentrantLock和Condition进行线程的控制。 当某个task创建了子节点后,触发Watcher事件。 调用BspService中的public final void Process(WatchedEvent event)事件,该方法根据事件的路径来激活相应的BspEvent事件。此处对应的是: 实验运行如下: s(926)) - process: Got a new event, path = /_hadoopBsp/job_201404102333_0002/_applicationAttemptsDir/0/_superstepDir/-1/_workerHealthyDir, type = NodeChildrenChanged, state = SyncConnected INFO bsp.BspService (BspService.java:process(960)) - process: workerHealthRegistrationChanged (worker health reported - healthy/unhealthy ) 这样就会激活master线程,开始下一轮检测。 子节点数目等于maxWorkers时,就停止。 总结:每创建一个子节点时,才会进行一次检测,效率较高!

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

检查多云数据管理环境中的所有因素

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 随着人们创建和存储数字对象的能力的增强,这些数据的可用性却随着时间的推移而下降。人们希望通过长期数字保存(LTDP)来保持持久价值的数字信息的可访问和可用性,以应对过时的软件和硬件,以及精确呈现内容的这些挑战。 此外,世界各国政府强制实施“云计算优先”政策,以及各行业厂商和用户从云计算解决方案中获得的收益,使得云计算中的长期数字保存(LTDP)技术成为数字图书馆和档案馆可行的考虑因素和具有吸引力的替代选择。通过利用云计算的可扩展性、冗余性、成本效益,以及对数字保存不断变化的需求的适应性,长期数字保存(LTDP)可以从云计算技术中大大受益。 在过去几年中,多种云计算产品的使用已经从“影子IT”实践中有机地发展而来,客户发现他们需要解决其已有问题的解决方案。在这个关键时刻,越来越多的客户对云计算服务的使用有着更好的体验和理解,促使他们探索和实施多云策略。也就是说,重要的是他们需要寻找值得信赖的技术合作伙伴以及专业知识、技术诀窍和解决方案,以确保上述原则得到解决。 多云是超越混合云的云计算IT架构的又一次飞跃。它指的是同时使用多个公共云提供商的公共云和本地私有云的资源,以实现某些业务目标和指标的IT设计,这些目标和指标很难通过企业的内部部署和/或混合云设计实现。这些优势包括:自由选择跨公共云提供商挑选***云服务,数据移动性无需担心供应商锁定,通过跨多个云架构分布的数据集增强数据可用性和持久性,并能够针对不同供应商的每个应用程序使用最合适的云定价方案,从而优化成本。简而言之,这些因素让云计算客户掌握了充分的杠杆作用和控制力,助长了多云增长的势头。 尽管当今企业的大多数数据仍然来自并存储在本地存储解决方案中,但许多行业都出现了用于多云数据管理的用例。例如,在媒体和娱乐公司中,利用对象存储在内部部署私有云中创建内容非常普遍,但是用于内容分发(CDN)的公共云服务或计算代码转换的使用正在增长。在金融服务行业中,对内部存储的需求仍然提供***的安全性、控制和性能,但公共云为场外合规性和长期存档目的(如AWS Glacier和Microsoft的Azure Blob存储归档层)提供了引人注目的解决方案。此外,用于分析的云计算服务(如Amazon QuickSight或Azure机器学习)还提供了其他用于公共云的增值服务。 上面概述的多云优势取决于企业必须遵守的原则。以下是一个简便的清单,可以用于确定企业的云存储选择对于支持其长期数字保存策略的适用程度: 通过标准化的对象和文件界面对所有云平台中的数据访问、控制和安全进行规范化处理,事实上的对象选择是Amazon S3 API,文件选择是NFS和SMB。 确保数据始终保持其开放的云原生格式,并且在任何地方都不具有透明度,因此可以在任何地方访问,并可根据需要自由移动。 透明的数据代理能力,允许数据根据预定义的业务策略自动放置和移动。 跨云体系结构的动态索引和搜索功能,以便可以在任何给定时间发现并采取行动的数据。 最重要的是,遵循管理组织内许多云平台的***实践。 如果组织缺乏成熟性、纪律性或遵守上述原则的能力,那么采用多云将毫无益处。而一旦被锁定到任何供应商或技术中,就很难改变。 如果没有正确实施或没有合理的保障措施,采用多云可能会加剧云客户面临的问题和挑战,如增加数据管理的复杂性和开销,降低数据访问和使用方式的灵活性、控制和跟踪数据放置的位置,以及在多个云上存放不必要的副本而增加成本。 企业在部署多云存储时需要注意一些挑战。由于跨公共云和网关产品的专有存储格式的锁定,真正的混合云存储尚未通过当今的网关和云备份解决方案实现。尽管当前的解决方案可以实现从内部部署到云端的数据移动和分层,但是他们并没有通过允许云服务访问存储在其中的数据来真正利用云计算的力量。相反,这些产品是“单向”的解决方案,迫使应用程序使用网关访问数据,而无论其是在本地部署数据中心还是在云端。由于无法在此数据上使用本地云服务,因此这会损失公共云的关键价值。因此,业界需要一个能从根本上改变混合云存储和数据管理的解决方案,为客户提供本地存储和公共云的全部功能和灵活性。 多云正在成为云计算应用的常态,将成为市场主流。展望未来,企业将需要一种从根本上改变云存储和数据管理的解决方案,为客户提供内部存储和公共云的全部功能和灵活性,以便他们不仅可以从数据中获得***的价值,也获得***的***体验。这种新型多云数据控制器解决方案的兴起将为跨不同云平台的代理和管理信息提供帮助。

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

Mozilla 测试 Firefox/100.0 用户代理,检查网站兼容性

随着今天 Mozilla 更新了 Firefox 浏览器,Firefox 的版本号已经到达了 91。虽然目前的版本号仍然是两位数,但按照官方的升级路线图,明年 3 月 Mozilla 将发布 Firefox Nightly 100,为此 Mozilla 发起了一项实验,他们将 Firefox 浏览器的用户代理提前更改为三位数的 "Firefox/100.0" 版本,以此来测试未来将 Firefox 版本号更新至 100 时,是否会有网站因为用户代理的问题而出现网站加载异常的情况。 用户代理是网络浏览器使用的一个字符串,其中包括关于该软件的信息,例如名称、版本和使用的技术概要。当一个浏览器发布新版本的时候,开发者也会增加用户代理字符串中的版本号。 以 Mozilla Firefox 91 版本为例,它的用户代理将会如下显示: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 Firefox 的用户代理可以被拆分为以下几个部分: Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrailFirefox/firefoxversion Mozilla/5.0表明该浏览器与 Mozilla 相兼容的通用字符串。此字段几乎存在于现今所有浏览器的用户代理之中; platform描述了浏览器所运行的本地操作系统平台(例如:Windows、Mac、Linux 或 Android),以及其是否为移动设备; rv:geckoversion显示了 Gecko 的版本号。在最近几个版本的浏览器中, geckoversion与firefoxversion一致; Gecko/geckotrail标明浏览器基于 Gecko,在桌面端 geckotrail的值恒为"20100101"; Firefox/firefoxversion标明浏览器是 Firefox,并提供了版本号; 当访问一个网站时,浏览器的用户代理字符串将会被发送到网站,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。 在进行测试时,Mozilla 将把 Firefox 的用户代理改为以下字符串。如果持续的测试显示许多网站都会因为用户代理而产生问题,Firefox 可能会将用户代理暂时冻结在 Firefox 99.X 这样两位数的数字。 Mozilla/5.0 (Windows NT 10.0; rv:100.0) Gecko/20100101 Firefox/100.0 如果开发者想要在自己的网站上测试新的三位数用户代理,可以按照以下步骤操作手动更改用户代理字符串: 打开 Firefox,在地址栏中输入 「about:config」 然后按回车; 搜索「general.useragent.override」; 随后选择 「String」,然后单击加号 「+」,如下图所示: 单击 「+」 图标后,在输入框中输入文本:「Mozilla/5.0 (Windows NT 10.0; rv:100.0) Gecko/20100101 Firefox/100.0」,如下图所示: 然后保存设置,并重新启动浏览器; 完成上述设置后,访问网站时浏览器会将新的用户代理字符串发送给网站。如果遇到任何问题,开发者可以点击链接向 Mozilla 提交错误报告。 要将用户代理改回浏览器的默认设置,只需找到上面创建的设置将其删除即可。

资源下载

更多资源
Mario

Mario

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

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应用均可从中受益。

Rocky Linux

Rocky Linux

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

用户登录
用户注册