首页 文章 精选 留言 我的

精选列表

搜索[性能改进],共10000篇文章
优秀的个人博客,低调大师

袋鼠云平台代码规范化编译部署的提效性改进实践

一、前言 作为全链路数字化技术与服务提供商,袋鼠云提供了从数据湖、大数据基础平台、离线开发、实时开发、数据服务、数据治理、指标管理、客户数据洞察、数据孪生可视化等全产品体系的服务。 围绕着“行业应用”及“通用应用”,袋鼠云聚焦数智提供全维数字解决方案,帮助企业实现降本增效、快捷转型,迄今为止袋鼠云已服务超过5000家的客户。 面对如此庞大的客户,平台需要不断更新迭代,以适应最新的产品特性,给客户呈现更完备的功能,以达到客户使用平台的极佳体验效果。 为了高效部署和监控袋鼠云平台中的各个产品,袋鼠云自研了新产品大数据基础平台EasyMR,提供快速构建和运维大数据集群的能力,帮助提升大数据平台运维与交互能力。平台层的代码在面向客户升级部署时,需要定义标准化打包规范,以快速和标准化的输出平台层面代码的标准包,借助于大数据基础平台EasyMR,可进行一站式产品包服务的部署、升级、卸载、配置等操作,解放人工运维的成本。 在ToB的客户环境下,我们需要考虑从产品功能迭代到运维出包再到部署的提效优化。面对大型客户的场景,局域网化的部署必然涉及到平台增量包的传输大小限制,特别是在不断增量部署的情况下,客户需要不断审核产品包,而又因为产品包过大而耗费大量时间,大大影响了平台部署产品的效率 基于产品包内存过大影响平台部署效率的问题,袋鼠云技术团队不断探索实践,从平台对编译策略的优化,结合袋鼠云内部产品包的出包优化,来探讨如何在增量策略下,更优的解决产品包的内存大小问题,以解决增量升级的效率性。 二、代码编译优化策略 1、编译 袋鼠云平台层代码使用java开发语言,基于maven的module进行各个平台产品的模块划分,平台层关注的是代码层面功能性,产品的编译包通常基于简单的如: 编译方式,通过内部的maven-shard-plugin插件编译 executable shard jar。 maven-shade-plugin内含有大量的资源转换器(Resource Transformers),可以通过追加的策略来避免因不版本相同属性资源的覆盖错误。 官方参考文档: https://maven.apache.org/plugins-archives/maven-shade-plugin-3.3.0/examples/resource-transformers.html#AppendingTransformer 2、产品包 运维基于平台编译的可执行的jar包例如: {project.name}-{project-version}-jar-with-dependency.jar 需要整合shell启停脚本和配置资源以及sql等输出标准的适配EasyMR部署的标准tar包,大致的整个平台编译的策略如下图: 通过上面的编译到产品包的具体步骤,我们会发现,平台层通过maven-shade-plugin编译为一个executable shard jar的策略下,我们可以思考下面几个问题: 漏洞修复 增量发布包的tar包大小 平台与EasyMR的直接联通 ● 漏洞修复问题 针对这个问题,目前的编译策略无法解决,只能在面对客户漏洞修复的场景下,将整体shade jar做整体产品部署包输出,进行全量升级来解决。 ● 增量发布包的tar包大小问题 针对这个问题:通过编译可执行jar包的策略,即依赖jar和平台自身jar编译为一个整体的jar包的策略是无法解决最小代价的增量升级一个单一jar的问题,该问题势必会导致在toB客户升级场景下的增量jar升级的传包大小的问题。实际上在增量升级的策略下,对于不变的jar包无需做升级替换,对可变的jar包才需要做增量升级替换。 ● 平台与EasyMR的直接联通的问题 目前平台基于EasyMR部署的策略下,还需要通过运维层去出标准的产品包,这个内部无形增加了开发到部署的能力,未来平台会基于EasyMR的标准打包规范,直接能够联通EMR做标准产品tar的产品包编译。 本文主要针对目前平台的第一个问题,即通过拆分平台产品层面的的自身jar和第三方依赖jar的策略来解决。 三、优化策略设计原则 1、规范目录 基于拆分各个平台自身的jar和第三方依赖的jar的原则,我们可以约定平台层输出的编译包的制定统一路径,以便运维统一路径下的产品包的输出。 规范化的编译指定目录,将对于的平台服务层面的配置文件、脚本、依赖等相关的核心内容进行目录拆解,这个也是平台层面去统一抽离编译目录的核心部分。 2、平台编译 基于规范化的编译目录的制定,我们通过assembly maven: (https://maven.apache.org/plugins-archives/maven-assembly-plugin-LATEST/examples/single/including-and-excluding-artifacts.html) 做指定依赖包的隔离,最终通过java -cp CLASSPATH 类加载器加载路径策略将对应的不同隔离jar加载到类加载器中。例如: 3、增量策略 全量包策略下,目录下的lib和dtstack都需要加载到对应的classpath下。 下面分析在增量出包的前提下,一种基于项目为纬度产品出包策略: 即:基于客户A出增量包场景下,对于下次的增量升级策略下,我们可以通过MD5增量比对上次系统出包的lib/dtstack依赖的md5值,增量打包变更/新增的jar包。 基于增量打包的策略能更细粒度的对于升级包的大小和增量升级的维护,需要注意的是,系统运维出包需要维护当前内部jar包的md5值,以作为下次增量产品包输出的依据。 四、总结 基于规范编译目录到平台编译策略的小优化小改造,再到从增量的角度去探讨增量包的出包策略,我们可以均衡的抽离出平台自研的jar包和平台依赖的jar包。 基于此我们能够为未来更细粒度的升级和部署运维袋鼠云平台产品打下基础,同时也是在toB场景下,对于运维部署效率的小提升。无论从引擎层面,平台层面或者是运维层面,袋鼠云持续的产品迭代以及功能特定的增强都是为了面向客户达到更好的运维,部署,以及平台使用的最好的体验。 袋鼠云开源框架钉钉技术交流群(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack/Taier

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

Chrome 改进 Enhanced Safe Browsing 功能,强化扩展程序和文件下载安全性

Google 在 Chrome 浏览器中为 Enhanced Safe Browsing(增强型安全浏览)增加了新的保护功能,如今在安装不受信任的扩展程序时将向用户发出警告,并允许用户要求对下载文件进行更深入的扫描。 Safe Browsing 功能自 2007 年起就内置于 Chrome 浏览器中,当访问恶意网站(例如,试图窃取用户凭证、下载有害文件)时,它会根据存储在 Chrome 浏览器中的不安全网站列表来检查 URL,对这类危险事件发出警告。 Enhanced Safe Browsing 则是 Safe Browsing 的加强版,通过向 Chrome 用户提供的 Enhanced Safe Browsing 功能,Chrome 具有了更快、更主动的保护措施和对密码泄露的警告,大大增加了对危险网站、下载和扩展的保护。 Google 表示,"自推出以来,我们一直在幕后不断改善 Chrome 浏览器的安全功能,以增强实时 URL 检查,并应用机器学习模型来警告以往不知道的攻击。因此,启用了 Enhanced Safe Browsing 的用户成功被钓鱼的次数比其他用户少了 35%。" 如今,一项新的 Enhanced Safe Browsing 功能正陆续向所有用户推出,以提醒他们是否正在安装一个由不值得信任的开发商制作的扩展。 Google 补充道:"当用户从 Chrome Web Store 安装一个新的扩展程序时,Enhanced Safe Browsing 现在将提供额外的保护。如果你要安装的扩展程序不在所信任的扩展程序列表中,浏览器将弹出对话框通知用户。" 开发者们也不必过于担心,根据 Google 的说法,任何遵循 Chrome Web Store 开发者计划政策而开发的扩展程序,都将被视为受到 Enhanced Safe Browsing 的信任。 目前,已有将近 75% 的 Chrome Web Store 扩展程序被标记为受信任,后续随着越来越多的开发者加入这一计划,这个数字还会增长。 加强对风险文件的保护 当一个下载的文件被标记为不安全时,以往用户只有无视警告继续查看或者删除该文件两种选择,用户现在可以选择要求进行更深入的扫描,进一步确认文件的安全性。 针对这个功能,Chrome 浏览器会把需要扫描的文件上传到 Google Safe Browsing,该系统将使用其静态和动态分析分类器实时扫描该文件。上传的文件在扫描后就会从系统中删除。

资源下载

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

用户登录
用户注册