• 关于

    分布式云原生定义

    的搜索结果

回答

回顾过去十年,数字化转型将科技创新与商业元素不断融合、重构,重新定义了新业态下的增长极。商业正在从大工业时代的固化范式进化成面向创新型商业组织与新商业物种崭新模式。着数字化转型在中国各行业广泛深入,不管是行业巨头,还是中小微企业都不得不面对数字化变革带来的未知机遇与挑战。 数字化转型的十年,也是云计算高速发展的十年,这期间新技术不断演进、优秀开源项目大量涌现,云原生领域进入“火箭式”发展阶段。通过树立技术标准与构建开发者生态,开源将云计算实施逐渐标准化,大幅降低了开发者对于云平台的学习成本与接入成本。这都让开发者更加聚焦于业务本身并借助云原生技术与产品实现更多业务创新,有效提升企业增长效率,爆发出前所未有的生产力与创造力。 可以说,当云计算重构整个IT产业的同时,也赋予了企业崭新的增长机遇。正如集装箱的出现加速了贸易全球化进程,以容器为代表的云原生技术作为云计算的服务新界面加速云计算普及的同时,也在推动着整个商业世界飞速演进。上云成为企业持续发展的必然选择,全面使用开源技术、云服务构建软件服务的时代已经到来。作为云时代释放技术红利的新方式,云原生技术在通过方法论、工具集和最佳实践重塑整个软件技术栈和生命周期,云原生架构对云计算服务方式与互联网架构进行整体性升级,深刻改变着整个商业世界的 IT 根基。 虽然云原生概念的产生由来已久,但对于云原生的定义、云原生架构的理解却众说纷纭。到底什么是云原生?容器就代表云原生吗?云原生时代互联网分布式架构如何发展?云原生与开源、云计算有什么关系?开发者和企业为什么一定要选择云原生架构?面对这些问题,每个人都有着不同回答。鉴于此,阿里云结合自身云原生开源、云原生技术、云原生产品、云原生架构以及企业客户上云实践经验,给出了自己的答案,并通过这本白皮书与社会分享自己的思考与总结,旨在帮助越来越多的企业顺利找到数字化转型最短路径。 未来十年,云计算将无处不在,像水电煤一样成为数字经济时代的基础设施,云原生让云计算变得标准、开放、简单高效、触手可及。如何更好地拥抱云计算、拥抱云原生架构、用技术加速创新,将成为企业数字化转型升级成功的关键。 云计算的下一站,就是云原生; IT 架构的下一站,就是云原生架构 ; 希望所有的开发者、架构师和技术决策者们,共同定义、共同迎接云原生时代。
Pony马 2021-01-14 15:15:22 0 浏览量 回答数 0

问题

【百问百答】《云原生架构白皮书》(上)

1为什么需要云原生架构? 2什么是云原生架构? 3云原生架构的发展背景是什么? 4云原生架构与传统架构有什么区别? 5云原生架构基于什么? 6云原生架构有哪些非功能特性&#x...
Pony马 2021-01-15 14:47:23 15 浏览量 回答数 0

回答

容器镜像服务 ACR 企业版是企业级云原生应用制品管理平台,提供容器镜像、Helm Chart 符合 OCI 规范制品的生命周期管理;支持大规模、多地域、多场景下应用制品的高效分发;与容器服务 ACK 无缝集成,帮助企业降低交付复杂度。本文将介绍 ACR 企业版的主要功能、使用场景以及不同版本规格区别。 产品功能 多样 OCI 制品托管:支持多架构容器镜像(如 Linux、Windows、ARM 等架构的容器镜像)、支持 Helm Chart v2/v3 符合 OCI 规范的制品管理。 多维度安全保障:云原生制品加密存储,支持镜像安全扫描及多维度漏洞报告,保障存储及内容安全;分别提供容器镜像和 Helm Chart 的网络访问控制管理,细粒度的操作审计,保障制品访问安全。 加速应用分发:支持全球多地域间同步,提高容器镜像分发效率;提供 P2P 分发加速方式,保障业务的极速部署和快速扩展。 提效云原生应用交付:提供云原生应用交付链功能,全链路可观测、可追踪、可自主配置;支持基于策略的自动阻断, 实现一次应用变更,全球化多场景自动交付,提升云原生应用交付效率及安全性。 使用场景 业务全球地域部署 在国内地域研发迭代,业务在全球多个地域部署,由于网络不稳定等因素,无法直接从国内地域拉取容器镜像。 ACR 企业版支持基于地域选购,并通过设置自定义规则实现镜像全球自动同步,满足业务拓展至全球时就近拉取容器镜像的需求,并可实现跨地域容灾。 业务大规模部署 业务大规模部署,在弹性场景或发布迭代场景下,无法快速获取容器镜像部署以应对峰值流量。ACR 企业版提供多实例规格,满足不同规模集群的并发拉取需求,支持多种大规模分发加速方式,保障容器业务的快速扩展和极速部署。 容器化 DevSecOps 提效 业务部署在容器服务 ACK 、容器服务 ASK、企业级分布式应用服务 EDAS、弹性容器实例 ECI 等平台,需要保障交付部署全链路的安全和效率。ACR 企业版提供云原生应用交付链功能,全链路可追踪、可观测、可自主配置。实现代码变更后,自动构建成云原生应用制品,自动触发安全扫描和安全加签。基于配置的安全策略,主动阻断存在安全风险的交付链流程。通过安全策略的制品自动触发全球化分发,最终实现多场景下的云原生应用的部署。基于云原生应用交付链,可以将安全内置到交付的全链路中,将 DevOps 全面升级成 DevSecOps,保证云原生应用制品更加安全、高效的交付上线。 搬站上云 在云原生搬站场景,云原生应用制品迁移是首要任务。ACR 企业版提供镜像极速导入功能,实现基于 OSS Bucket 极速导入企业版实例,提升迁移的效率和体验;也支持迁移工具,从 Google、Azure、AWS 等容器镜像服务平滑迁移至 ACR 企业版。 版本规格说明 ACR 企业版提供的版本规格说明如下。 功能归类 细分项 默认实例 企业版 基础版 标准版 高级版 制品管理 容器镜像 托管 支持 支持 支持 支持 命名空间限额 3 15 25 50 公开仓库限额 300 1000 3000 5000 私有仓库限额 构建 支持 支持 支持 支持 触发器 支持 支持 支持 支持 Helm Chart 托管 - 支持 支持 支持 命名空间限额 - 15 25 50 公开仓库限额 - 1000 3000 5000 私有仓库限额 安全增强 容器镜像 漏洞扫描 支持 支持 支持 支持 网络访问控制 - 支持 支持 支持 Helm Chart 网络访问控制 - 支持 支持 支持 操作审计 - 支持 支持 支持 应用分发 大规模分发 - - 支持 支持 全球同步 同步能力 - - 支持 支持 应用交付 云原生应用交付链 功能 - - - 支持 周边服务 ACK 集成 免密插件 支持 支持 支持 支持 迁云指导 镜像极速导入 - 支持 支持 支持
1934890530796658 2020-03-20 22:56:55 0 浏览量 回答数 0

回答

容器镜像服务 ACR 企业版是企业级云原生应用制品管理平台,提供容器镜像、Helm Chart 符合 OCI 规范制品的生命周期管理;支持大规模、多地域、多场景下应用制品的高效分发;与容器服务 ACK 无缝集成,帮助企业降低交付复杂度。本文将介绍 ACR 企业版的主要功能、使用场景以及不同版本规格区别。 产品功能 多样 OCI 制品托管:支持多架构容器镜像(如 Linux、Windows、ARM 等架构的容器镜像)、支持 Helm Chart v2/v3 符合 OCI 规范的制品管理。 多维度安全保障:云原生制品加密存储,支持镜像安全扫描及多维度漏洞报告,保障存储及内容安全;分别提供容器镜像和 Helm Chart 的网络访问控制管理,细粒度的操作审计,保障制品访问安全。 加速应用分发:支持全球多地域间同步,提高容器镜像分发效率;提供 P2P 分发加速方式,保障业务的极速部署和快速扩展。 提效云原生应用交付:提供云原生应用交付链功能,全链路可观测、可追踪、可自主配置;支持基于策略的自动阻断, 实现一次应用变更,全球化多场景自动交付,提升云原生应用交付效率及安全性。 使用场景 业务全球地域部署 在国内地域研发迭代,业务在全球多个地域部署,由于网络不稳定等因素,无法直接从国内地域拉取容器镜像。 ACR 企业版支持基于地域选购,并通过设置自定义规则实现镜像全球自动同步,满足业务拓展至全球时就近拉取容器镜像的需求,并可实现跨地域容灾。 业务大规模部署 业务大规模部署,在弹性场景或发布迭代场景下,无法快速获取容器镜像部署以应对峰值流量。ACR 企业版提供多实例规格,满足不同规模集群的并发拉取需求,支持多种大规模分发加速方式,保障容器业务的快速扩展和极速部署。 容器化 DevSecOps 提效 业务部署在容器服务 ACK 、容器服务 ASK、企业级分布式应用服务 EDAS、弹性容器实例 ECI 等平台,需要保障交付部署全链路的安全和效率。ACR 企业版提供云原生应用交付链功能,全链路可追踪、可观测、可自主配置。实现代码变更后,自动构建成云原生应用制品,自动触发安全扫描和安全加签。基于配置的安全策略,主动阻断存在安全风险的交付链流程。通过安全策略的制品自动触发全球化分发,最终实现多场景下的云原生应用的部署。基于云原生应用交付链,可以将安全内置到交付的全链路中,将 DevOps 全面升级成 DevSecOps,保证云原生应用制品更加安全、高效的交付上线。 搬站上云 在云原生搬站场景,云原生应用制品迁移是首要任务。ACR 企业版提供镜像极速导入功能,实现基于 OSS Bucket 极速导入企业版实例,提升迁移的效率和体验;也支持迁移工具,从 Google、Azure、AWS 等容器镜像服务平滑迁移至 ACR 企业版。 版本规格说明 ACR 企业版提供的版本规格说明如下。 功能归类 细分项 默认实例 企业版 基础版 标准版 高级版 制品管理 容器镜像 托管 支持 支持 支持 支持 命名空间限额 3 15 25 50 公开仓库限额 300 1000 3000 5000 私有仓库限额 构建 支持 支持 支持 支持 触发器 支持 支持 支持 支持 Helm Chart 托管 - 支持 支持 支持 命名空间限额 - 15 25 50 公开仓库限额 - 1000 3000 5000 私有仓库限额 安全增强 容器镜像 漏洞扫描 支持 支持 支持 支持 网络访问控制 - 支持 支持 支持 Helm Chart 网络访问控制 - 支持 支持 支持 操作审计 - 支持 支持 支持 应用分发 大规模分发 - - 支持 支持 全球同步 同步能力 - - 支持 支持 应用交付 云原生应用交付链 功能 - - - 支持 周边服务 ACK 集成 免密插件 支持 支持 支持 支持 迁云指导 镜像极速导入 - 支持 支持 支持
1934890530796658 2020-03-20 21:45:16 0 浏览量 回答数 0

回答

Re虚拟技术哪家强?分享你喜欢的虚拟化技术及原因吧。 现在看起来最强的似乎是 coreos: https://coreos.com/ 原生支持docker, 整个架构完全基于分布式service container的概念组织。 要是ECS支持上传自定义系统镜像启动的话,我会在阿里云上先玩一玩coreos :) ------------------------- 回12楼qilu的帖子 这里说的支持是什么意思?是不是指各种linux系统镜像已预装docker? 其实我们已经在ubuntu 14.04 64-bit的系统上用docker跑线上服务跑了一个多月了。。。
rippletek 2019-12-02 00:46:59 0 浏览量 回答数 0

问题

阿里云中间件是什么

很多人搞不懂中间件是什么。中间件是一种处于操作系统(底层)和应用之间的软件或者组件,起到让应用在操作系统上可以正常运行的作用,向apache,iis,sqlserver等。 阿里云正在...
搞么罗 2019-12-01 21:51:58 1418 浏览量 回答数 0

回答

首先纠正一下啊,DDD 中并没有明确说有 VO,BO,DO 等,这些不管是领域驱动,还是 Spring 似乎形成的一个规则而已,并不是用来建模用的。mvc 分层架构用的非常多。DDD 真正有说明的是实体和值对象的定义。实体和值对象都是针对场景的,不同场景下互相转化。address 对象也不能完全定义为值对象,如果对于订单来说可能是值对象,因为订单不关注地址到底是哪个人,如果是配送部门需要区分不同的收获人地址的时候就是实体。ddd需要做大量的训练才能玩,只是按照概念去套,最后就四不像。而且 ddd 出来这么多年了,为什么到了微服务才真正火起来?单体分布式时代,就有很多人搞了,但 ddd 对团队要求较高,而且实践起来较复杂,尤其 spring 出来后用的贫血模型,大家发现这种模型对于中小项目非常适用,分层简单,扩展方便,所以就火了。但是现在微服务时代,很多公司其实也并没有用 ddd 的战术模型,也就是实体值对象这些,而是大量使用了战略模型,通过问题域和事件风暴的方式,找到了核心域和限界上下文,从而帮助我们拆分微服务。 来源:云原生后端社区 https://www.yuque.com/server_mind/answer
Atom 2020-04-25 15:45:55 0 浏览量 回答数 0

回答

阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例、E-HPC 和容器服务等计算节点的文件存储服务。 简介视频 观看以下视频可快速了解文件存储NAS。 定义 阿里云文件存储 NAS 是一个可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。它基于 POSIX 文件接口,天然适配原生操作系统,提供共享访问,同时保证数据一致性和锁互斥。 NAS 提供了简单的可扩展文件存储以供与 ECS 配合使用,多个ECS实例可以同时访问 NAS 文件系统,并且存储容量会随着您添加和删除文件而自动弹性增长和收缩,为在多个实例或服务器上运行的工作负载和应用程序提供通用数据源。 NAS 支持丰富的应用场景,详情请参见应用场景。 NAS 提供了容量型、性能型以及极速型存储类型,更多详情请参见存储类型。 产品优势 NAS 在成本、安全、简单、可靠性以及性能上都具有自身的优势。 成本 一个 NAS 文件系统可以同时挂载到多个计算节点上,由这些节点共享访问,从而节约大量拷贝与同步成本。 单个 NAS 文件系统的性能能够随存储容量线性扩展,使用户无需购买高端的文件存储设备,大幅降低硬件成本。 使用 NAS文件存储,您只需为文件系统使用的存储空间付费,不需要提前配置存储,并且不存在最低费用或设置费用。更多详情,请参见计量项和计费说明。 NAS 的高可靠性能够降低数据安全风险,从而大幅节约维护成本。 简单 一键创建文件系统,无需部署维护文件系统。 安全 基于 RAM 实现的资源访问控制,基于VPC实现的网络访问隔离,结合文件存储 NAS 的传输加密与存储加密特性,保障数据不被窃取或篡改。 高可靠性 文件存储NAS的数据在后端进行多副本存储,每份数据都有多份拷贝在故障域隔离的不同设备上存放, 提供 99.999999999% 的数据可靠性,能够有效降低数据安全风险。 高性能 基于分布式架构文件系统,随着容量的增长性能线性扩展,提供远高于传统存储的性能。 兼容性 NAS 文件存储提供良好的协议兼容性,支持 NFS 和 SMB 协议方案,兼容POSIX 文件系统访问语义,提供强大的数据一致性和文件锁定。 在 NAS 中,任何文件修改成功后,用户都能够立刻看到修改结果,便于用户实时修改存储内容。 相关功能 NAS 能够提供以下功能: 应用场景 功能描述 参考文档 创建文件系统 使用 NAS 前,必须要创建一个文件系统。 创建文件系统 管理文件系统 您可以查看文件系统的详细信息或删除文件系统。 管理文件系统 添加挂载点 要挂载文件系统,您需要为文件系统添加挂载点。 添加挂载点 管理挂载点 您可以禁用、激活或删除挂载点,或修改挂载点的权限组。 管理挂载点 挂载文件系统 在使用前,您需要将文件系统挂载至计算节点。 挂载文件系统 控制用户访问权限 您可以通过 RAM 赋予子用户 NAS 的操作权限,也可以通过权限组控制用户访问权限。 使用RAM实现用户访问控制 创建自定义权限策略 管理权限组 备份文件系统 NAS 备份服务已经开始公测,您可以对 NAS 文件系统进行备份。 数据备份 将数据迁移至 NAS 在使用 NAS 时,需要将数据从本地或对象存储迁移至 NAS。 数据迁移 使用 NAS API NAS 提供各种 API 接口,可以对文件系统进行各种操作。 API 概览
1934890530796658 2020-03-31 11:31:35 0 浏览量 回答数 0

回答

云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。 为什么选择云服务器ECS 选择云服务器ECS,您可以轻松构建具有以下优势的计算资源: 无需自建机房,无需采购以及配置硬件设施。 分钟级交付,快速部署,缩短应用上线周期。 快速接入部署在全球范围内的数据中心和BGP机房。 成本透明,按需使用,支持根据业务波动随时扩展和释放资源。 提供GPU和FPGA等异构计算服务器、弹性裸金属服务器以及通用的x86架构服务器。 支持通过内网访问其他阿里云服务,形成丰富的行业解决方案,降低公网流量成本。 提供虚拟防火墙、角色权限控制、内网隔离、防病毒攻击及流量监控等多重安全方案。 提供性能监控框架和主动运维体系。 提供行业通用标准API,提高易用性和适用性。 更多选择理由,请参见云服务器ECS的优势和应用场景。 产品架构 云服务器ECS主要包含以下功能组件: 实例:等同于一台虚拟服务器,内含CPU、内存、操作系统、网络配置、磁盘等基础的计算组件。实例的计算性能、内存性能和适用业务场景由实例规格决定,其具体性能指标包括实例vCPU核数、内存大小、网络性能等。 镜像:提供实例的操作系统、初始化应用数据及预装的软件。操作系统支持多种Linux发行版和多种Windows Server版本。 块存储:块设备类型产品,具备高性能和低时延的特性。提供基于分布式存储架构的云盘、共享块存储以及基于物理机本地存储的本地盘。 快照:某一时间点一块云盘或共享块存储的数据状态文件。常用于数据备份、数据恢复和制作自定义镜像等。 安全组:由同一地域内具有相同保护需求并相互信任的实例组成,是一种虚拟防火墙,用于设置实例的网络访问控制。 网络: 专有网络(Virtual Private Cloud):逻辑上彻底隔离的云上私有网络。您可以自行分配私网IP地址范围、配置路由表和网关等。 经典网络:所有经典网络类型实例都建立在一个共用的基础网络上。由阿里云统一规划和管理网络配置。 更多功能组件详情,请参见云服务器ECS产品详情页。 以下为云服务器ECS的产品组件架构图,图中涉及的功能组件的详细介绍请参见相应的帮助文档。whatIsECS 产品定价 云服务器ECS支持包年包月、按量付费、预留实例券、抢占式实例等多种账单计算模式。更多详情,请参见计费概述和云产品定价页。 管理工具 通过注册阿里云账号,您可以在任何地域下,通过阿里云提供的以下途径创建、使用或者释放云服务器ECS: ECS管理控制台:具有交互式操作的Web服务页面。关于管理控制台的操作,请参见常用操作导航。 ECS API:支持GET和POST请求的RPC风格API。关于API说明,请参见API参考。以下为调用云服务器ECS API的常用开发者工具: 命令行工具CLI:基于阿里云API建立的灵活且易于扩展的管理工具。您可基于命令行工具封装阿里云的原生API,扩展出您需要的功能。 OpenAPI Explorer:提供快速检索接口、在线调用API和动态生成SDK示例代码等服务。 阿里云SDK:提供Java、Python、PHP等多种编程语言的SDK。 资源编排(Resource Orchestration Service):通过创建一个描述您所需的所有阿里云资源的模板,然后资源编排将根据模板,自动创建和配置资源。 运维编排服务(Operation Orchestration Service):自动化管理和执行运维任务。您可以在执行模板中定义执行任务、执行顺序、执行输入和输出等,通过执行模板达到自动化完成运维任务的目的。 Terraform:能够通过配置文件在阿里云以及其他支持Terraform的云商平台调用计算资源,并对其进行版本控制的开源工具。 阿里云App:移动端类型的管理工具。 Alibaba Cloud Toolkit:阿里云针对IDE平台为开发者提供的一款插件,用于帮助您高效开发并部署适合在云端运行的应用。 部署建议 您可以从以下维度考虑如何启动并使用云服务器ECS: 地域和可用区 地域指阿里云的数据中心,地域和可用区决定了ECS实例所在的物理位置。一旦成功创建实例后,其元数据(仅专有网络VPC类型ECS实例支持获取元数据)将确定下来,并无法更换地域。您可以从用户地理位置、阿里云产品发布情况、应用可用性、以及是否需要内网通信等因素选择地域和可用区。例如,如果您同时需要通过阿里云内网使用云数据库RDS,RDS实例和ECS实例必须处于同一地域中。更多详情,请参见地域和可用区。 高可用性 为保证业务处理的正确性和服务不中断,建议您通过快照实现数据备份,通过跨可用区、部署集、负载均衡(Server Load Balancer)等实现应用容灾。 网络规划 阿里云推荐您使用专有网络VPC,可自行规划私网IP,全面支持新功能和新型实例规格。此外,专有网络VPC支持多业务系统隔离和多地域部署系统的使用场景。更多详情,请参见专有网络(Virtual Private Cloud)。 安全方案 您可以使用云服务器ECS的安全组,控制ECS实例的出入网访问策略以及端口监听状态。对于部署在云服务器ECS上的应用,阿里云为您提供了免费的DDoS基础防护和基础安全服务,此外您还可以使用阿里云云盾,例如: 通过DDoS高防IP保障源站的稳定可靠。更多详情,请参见DDoS高防IP文档。 通过云安全中心保障云服务器ECS的安全。更多详情,请参见云安全中心文档。 相关服务 使用云服务器ECS的同时,您还可以选择以下阿里云服务: 根据业务需求和策略的变化,使用弹性伸缩(Auto Scaling)自动调整云服务器ECS的数量。更多详情,请参见弹性伸缩。 使用专有宿主机(Dedicated Host)部署ECS实例,可让您独享物理服务器资源、降低上云和业务部署调整的成本、满足严格的合规和监管要求。更多详情,请参见专有宿主机DDH。 使用容器服务Kubernetes版在一组云服务器ECS上通过Docker容器管理应用生命周期。更多详情,请参见容器服务Kubernetes版。 通过负载均衡(Server Load Balancer)对多台云服务器ECS实现流量分发的负载均衡目的。更多详情,请参见负载均衡。 通过云监控(CloudMonitor)制定实例、系统盘和公网带宽等的监控方案。更多详情,请参见云监控。 在同一阿里云地域下,采用关系型云数据库(Relational Database Service)作为云服务器ECS的数据库应用是典型的业务访问架构,可极大降低网络延时和公网访问费用,并实现云数据库RDS的最佳性能。云数据库RDS支持多种数据库引擎,包括MySQL、SQL Server、PostgreSQL、PPAS和MariaDB。更多详情,请参见关系型云数据库。 在云市场获取由第三方服务商提供的基础软件、企业软件、网站建设、代运维、云安全、数据及API、解决方案等相关的各类软件和服务。您也可以成为云市场服务供应商,提供软件应用及服务。更多详情,请参见云市场文档。 更多方案,请参见阿里云解决方案。
1934890530796658 2020-03-24 14:03:02 0 浏览量 回答数 0

回答

多集成 • 身份认证与访问控制 KMS借助于身份认证机制(AccessKey)来鉴别请求的合法性,KMS还通过与访问控制(RAM)集成,允许您配置多样化的自定义策略,满足不同的授权场景。任何请求仅由合法用户发起且满足RAM对权限的动态检测(基于属性的访问控制,简称ABAC),才能被KMS接受。详情请参见使用RAM实现访问控制。 • 审计密钥的使用 KMS通过与操作审计(ActionTrail)集成,可以查看近期KMS的使用状况,也可以将KMS使用情况存储到OSS等其他云服务中,满足更长周期的审计需求。详情请参见使用ActionTrail记录操作事件。 • 控制云产品集成加密 KMS和阿里云ECS、RDS、OSS等多个产品无缝集成。通过一方集成,您可以很容易的使用KMS主密钥加密和控制您存储在这些服务中的数据,帮助您保持对云上计算和存储环境的控制,而您只需要付出密钥的管理成本,无需实现复杂的加密能力。同时集成加密解决了其他云产品中原生数据的加密保护问题。详情请参见服务端集成加密概述和服务端集成加密的云产品。 易使用 • 轻松实现加密 KMS提供简单的密码运算API,简化和抽象了密码学概念,让您可以轻松的使用API完成数据的加解密。对于需要密钥层次结构的应用,KMS提供了方便的信封加密能力,快速实现密钥层次结构:生成一个数据密钥,并将主密钥(CMK)用作密钥加密密钥(Key Encryption Key,简称KEK)来保护数据密钥。详情请参见什么是信封加密? • 集中的密钥托管 密钥管理服务为您提供对密钥的集中化托管与控制。 o 您可以随时创建新的用户主密钥,并通过访问控制(RAM)轻松管理谁可以访问该密钥 o 您可以通过操作审计(ActionTrail)审核密钥的使用情况。 o 您可以从线下密钥管理基础设施(KMI)或在阿里云加密服务中创建的HSM里将密钥导入到KMS。无论在KMS内创建的密钥还是外部导入的密钥,密钥中的机密信息或者敏感数据都会被阿里云上的其他云产品用于加密保护。 • 支持自带密钥(BYOK) KMS支持自带密钥(Bring Your Own Key,简称BYOK)。您可以将密钥租借给KMS用作云上数据的加密保护,从而更好的管理密钥。可租借的密钥包括以下两种: o 线下密钥管理基础设施(Key Management Infrastructure,简称KMI)里的密钥 o 在阿里云加密服务中自主管理的HSM中的密钥 说明 通过安全合规的密钥交换算法,导入到KMS的托管密码机中的密钥不会被任何机制所导出,密钥明文不会被操作者或任何第三者查看。详情请参见导入密钥材料和保持对密钥的控制。 • 自定义密钥轮转策略 KMS允许您根据所需的安全策略来自动轮转对称加密密钥。您只需要为主密钥(CMK)配置一个自定义的轮转周期,KMS会自动为您生成新的加密密钥版本。一个主密钥可以有多个密钥版本,其中每个版本可以被用来解密对应的密文数据,而最新的密钥版本(称为主版本)是活跃加密密钥,用于加密当前传入的数据。详情请参见自动轮转密钥。 高可靠、高可用、可伸缩 作为全托管的分布式服务,KMS在每个地域构建了多可用区冗余的密码计算能力,保证阿里云上各个产品和您的自定义应用向KMS发起的请求可以得到低延迟处理。您可以根据需要,在不同地域的KMS创建足够的密钥,而不必担心底层设施的扩容或缩容。 安全与合规能力 KMS经过严格的安全设计和审核,保证您的密钥在阿里云得到最严格的保护。 • KMS仅提供基于TLS的安全访问通道,并且仅使用安全的传输加密算法套件,符合PCI DSS等安全规范。 • KMS提供了监管机构许可和认证的密码设施。根据地域分布,分别提供了经国家密码管理局检测和认证的硬件密码设备,取得了FIPS 140-2第三级认证和运行在FIPS许可的第三级模式下的密码设备。详情请参见合规。 • KMS使用硬件安全模块来托管密钥,从而达到更高的安全标准,详情请参见托管密码机简介。 低成本 使用KMS,您可以按需使用和付费。 • 您无需支付采购硬件密码设备的初始成本以及对硬件系统进行运维、修补、老旧替换的持续开销。 • KMS为您节省了搭建具有可用性和可靠性密码设备集群,以及自建密钥管理设施的研发成本和维护开销。 • KMS与其他产品的集成为您节省了研发数据加密系统的开销,仅需通过管理密钥而获得可控的云上数据加密的能力。 密钥管理服务(Key Management Service,简称KMS) 阿里云提供的密钥管理服务可以提供密钥的安全托管及密码运算等服务。KMS内置密钥轮转等安全实践,支持其它云产品通过一方集成的方式对其管理的用户数据进行加密保护。借助KMS,您可以专注于数据加解密、电子签名验签等业务功能,无需花费大量成本来保障密钥的保密性、完整性和可用性。 用户主密钥(Customer Master Key,简称CMK) 用户主密钥主要用于加密保护数据密钥并产生信封,也可直接用于加密少量的数据。您可以调用KMS的API CreateKey创建一个用户主密钥。 信封加密(Envelope Encryption) 当您需要加密业务数据时,您可以调用KMS的API GenerateDataKey或GenerateDataKeyWithoutPlaintext生成一个对称密钥,同时使用指定的用户主密钥加密该对称密钥(被密封的信封保护)。在传输或存储等非安全的通信过程中,直接传递被信封保护的对称密钥。当您需要使用该对称密钥时,打开信封取出密钥即可。详情请参见什么是信封加密? 数据密钥(Data Key,简称DK) 数据密钥为加密数据使用的明文数据密钥。 说明 您可以调用KMS的API GenerateDataKey生成一个数据密钥,同时使用指定用户主密钥加密该数据密钥,返回数据密钥的明文(DK) 和密文(EDK)。 信封数据密钥(Enveloped Data Key/Encrypted Data Key,简称EDK) 信封数据密钥为通过信封加密技术保密后的密文数据密钥。 说明 如果暂时不需要数据密钥的明文,您可以调用KMS的API GenerateDataKeyWithoutPlaintext仅返回数据密钥密文。 硬件安全模块(Hardware Security Module,简称HSM) 硬件安全模块也称为密码机,是一种执行密码运算、安全生成和存储密钥的硬件设备。KMS提供的托管密码机可以满足监管机构的检测认证要求,为用户在KMS托管的密钥提供更高的安全等级保证。详情请参见托管密码机简介。 加密上下文(Encryption Context) 加密上下文是KMS对可认证加密(Authenticated Encryption with Associated Data,简称AEAD)的封装。KMS将传入的加密上下文作为对称加密算法的额外认证数据(Additional Authenticated Data,简称AAD)进行密码运算,从而为加密数据额外提供完整性(Integrity)和可认证性(Authenticity)的支持。详情请请见EncryptionContext说明。
LiuWH 2020-03-26 10:00:05 0 浏览量 回答数 0

回答

前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类应用,告别刀耕火种, 直接上云会扫清硬件采购、 技术等各种障碍,以阿里云为例: image 这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量视频存储,采集上传的视频被转码以适配各种终端,CDN 加速终端设备播放视频的速度。此外还有一些内容安全审查需求, 比如鉴黄、鉴恐等。 而在视频点播解决方案中, 视频转码是最消耗计算力的一个子系统,虽然您可以使用云上专门的转码服务,但在很多情况下,您会选择自己搭建转码服务。比如: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? 您有并发处理大量视频的需求。 您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF。后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF、获取视频或者音频的时长,自己搭建成本更低。 各种格式的音频转换或者各种采样率自定义、音频降噪等功能 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将它们再迁移到 OSS 上。 如果您的视频处理系统有上述需求,或者您期望实现一个 弹性、高可用、低成本、免运维、灵活支持任意处理逻辑 的视频处理系统,那么本文则是您期待的最佳实践方案。 Serverless 自定义音视频处理 在介绍具体方案之前, 先介绍两款产品: 函数计算 :阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。 函数工作流:函数工作流(Function Flow,以下简称 FnF)是一个用来协调多个分布式任务执行的全托管云服务。您可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 函数计算可靠的执行任意逻辑, 逻辑可以是利用 FFmpeg 对视频任何处理操作, 也可以更新视频 meta 数据到数据库等。函数工作流对相应的函数进行编排, 比如第一步的函数是转码, 第二步的函数是转码成功后,将相应 meta 数据库写入数据库等。 至此,您应该初步理解了函数计算的自定义处理能力 + 函数工作流编排能力几乎满足您任何自定义处理的需求,接下来,本文以一个具体的示例展示基于函数计算和函数工作流打造的一个弹性高可用的 Serverless 视频处理系统,并与传统方案进行性能、成本和工程效率的对比。 Simple 视频处理系统 假设您是对视频进行单纯的处理, 架构方案图如下: image 如上图所示, 用户上传一个视频到 OSS, OSS 触发器自动触发函数执行, 函数调用 FFmpeg 进行视频转码, 并且将转码后的视频保存回 OSS。 OSS 事件触发器, 阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当 OSS 系统捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理 PutObject 事件,当您调用 OSS PutObject API 上传视频到 OSS 后,相关联的函数会自动触发来处理该视频。 Simple 视频处理系统示例工程地址 强大的监控系统: 您可以直接基于示例工程部署您的 Simple 音视频处理系统服务, 但是当您想要处理超大视频(比如 test_huge.mov ) 或者对小视频进行多种组合操作的时候, 您会发现函数会执行失败,原因是函数计算的执行环境有最大执行时间为 10 分钟的限制,如果最大的 10 分钟不能满足您的需求, 您可以选择: 对视频进行分片 -> 转码 -> 合成处理, 详情参考:fc-fnf-video-processing, 下文会详细介绍; 联系函数计算团队(钉钉群号: 11721331) 或者提工单: 适当放宽执行时长限制; 申请使用更高的函数内存 12G(8vCPU) 为了突破函数计算执行环境的限制(或者说加快大视频的转码速度), 进行各种复杂的组合操作, 此时引入函数工作流 FnF 去编排函数实现一个功能强大的视频处理工作流系统是一个很好的方案。 视频处理工作流系统 image 如上图所示, 假设用户上传一个 mov 格式的视频到 OSS,OSS 触发器自动触发函数执行, 函数调用 FnF,会同时进行 1 种或者多种格式的转码(由您触发的函数环境变量DST_FORMATS 参数控制)。 所以您可以实现如下需求: 一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等。 当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件, 同时每次文件转码成多种格式也是并行。 结合 NAS + 视频切片, 可以解决超大视频(大于 3G )的转码, 对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大视频的转码速度。 所谓的视频切片,是将视频流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息 视频处理工作流系统示例工程地址 示例效果: gif 函数计算 + 函数工作流 Serverless 方案 VS 传统方案 卓越的工程效率 自建服务 函数计算 + 函数工作流 Serverless 基础设施 需要用户采购和管理 无 开发效率 除了必要的业务逻辑开发,需要自己建立相同线上运行环境, 包括相关软件的安装、服务配置、安全更新等一系列问题 只需要专注业务逻辑的开发, 配合 FUN 工具一键资源编排和部署 并行&分布式视频处理 需要很强的开发能力和完善的监控系统来保证稳定性 通过 FnF 资源编排即可实现多个视频的并行处理以及单个大视频的分布式处理,稳定性和监控交由云平台 学习上手成本 除了编程语言开发能力和熟悉 FFmpeg 以外,可能使用 K8S 或弹性伸缩( ESS ),需要了解更多的产品、名词和参数的意义 会编写对应的语言的函数代码和熟悉 FFmpeg 使用即可 项目上线周期 在具体业务逻辑外耗费大量的时间和人力成本,保守估计大约 30 人天,包括硬件采购、软件和环境配置、系统开发、测试、监控报警、灰度发布系统等 预计 3 人天, 开发调试(2人天)+ 压测观察(1 人天) 弹性伸缩免运维,性能优异 自建服务 函数计算 + 函数工作流 Serverless 弹性高可用 需要自建负载均衡 (SLB),弹性伸缩,扩容缩容速度较 FC 慢 FC系统固有毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,免运维,视频处理工作流系统 (FnF + FC) 压测;性能优异, 详情见下面的转码性能表 监控报警查询 ECS 或者容器级别的 metrics 提供更细粒度的 FnF 流程执行以及函数执行情况, 同时可以查询每次函数执行的 latency 和日志等, 更加完善的报警监控机制 函数计算 + 函数工作流 Serverless 方案转码性能表 实验视频为是 89s 的 mov 文件 4K 视频: 4K.mov,云服务进行 mov -> mp4 普通转码需要消耗的时间为 188s, 将这个参考时间记为 T 视频切片时间 FC转码耗时 性能加速百分比 45s 160s 117.5% 25s 100s 188% 15s 70s 268.6% 10s 45s 417.8% 5s 35s 537.1% 性能加速百分比 = T / FC转码耗时 从上表可以看出,设置的视频切片时间越短, 视频转码时间越短, 函数计算可以自动瞬时调度出更多的计算资源来一起完成这个视频的转码, 转码性能优异。 更低的成本 具有明显波峰波谷的视频处理场景(比如只有部分时间段有视频处理请求,其他时间很少甚至没有视频处理请求),选择按需付费,只需为实际使用的计算资源付费。 没有明显波峰波谷的视频处理场景,可以使用预付费(包年包月),成本仍然具有竞争力。 函数计算成本优化最佳实践文档。 假设有一个基于 ECS 搭建的视频转码服务,由于是 CPU 密集型计算, 因此在这里将平均 CPU 利用率作为核心参考指标对评估成本,以一个月为周期,10 台 C5 ECS 的总计算力为例, 总的计算量约为 30% 场景下, 两个解决方案 CPU 资源利用率使用情况示意图大致如下: image 由上图预估出如下计费模型: 函数计算预付费 3CU 一个月: 246.27 元, 计算能力等价于 ECS 计算型 C5 ECS 计算型 C5 (2vCPU,4GB)+云盘: 包月219 元 函数计算按量付费占整个计算量的占比 <= 10%,费用约为 3×864×10% = 259.2 元,(3G 规格的函数满负载跑满一个月费用为:0.00011108×3×30×24×3600 = 863.8,详情查看计费) ITEM 平均CPU利用率 计算费用 总计 函数计算组合付费 >=80% 998(246.27×3+259.2) <= 998 按峰值预留ECS <=30% 2190(10*219) >=2190 在这个模型预估里面,可以看出 FC 方案具有很强的成本竞争力,在实际场景中, 基于 ECS 自建的视频转码服务 CPU 利用甚至很难达到 20%, 理由如下: 可能只有部分时间段有视频转码请求 为了用户体验,视频转码速度有一定的要求,可能一个视频转码就需要 10 台 ECS 并行处理来转码, 因此只能预备很多 ECS 因此,在实际场景中, FC 在视频处理上的成本竞争力远强于上述模型。 即使和云厂商视频转码服务单价 PK, 该方案仍有很强的成本竞争力 我们这边选用点播视频中最常用的两个格式(mp4、flv)之间进行相互转换,经实验验证, 函数内存设置为3G,基于该方案从 mp4 转码为 flv 的费用概览表: 实验视频为是 89s 的 mp4 和 flv 格式的文件视频, 测试视频地址: 480P.mp4 720P.mp4 1080P.mp4 4K.mp4 480P.flv 720P.flv 1080P.flv 4K.flv 测试命令: ffmpeg -i test.flv test.mp4 和 ffmpeg -i test.flv test.mp4 mp4 转 flv: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 889 kb/s 24 11.2s 0.003732288 0.032 88.3% 高清 1280720 1963 kb/s 24 20.5s 0.00683142 0.065 89.5% 超清 19201080 3689 kb/s 24 40s 0.0133296 0.126 89.4% 4K 38402160 11185 kb/s 24 142s 0.04732008 0.556 91.5% flv 转 mp4: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 712 kb/s 24 34.5s 0.01149678 0.032 64.1% 高清 1280720 1806 kb/s 24 100.3s 0.033424 0.065 48.6% 超清 19201080 3911 kb/s 24 226.4s 0.0754455 0.126 40.1% 4K 38402160 15109 kb/s 24 912s 0.30391488 0.556 45.3% 成本下降百分比 = (某云视频处理费用 - FC 转码费用)/ 云视频处理费用 某云视频处理,计费使用普通转码,转码时长不足一分钟,按照一分钟计算,这里计费采用的是 2 min,即使采用 1.5 min 计算, 成本下降百分比基本在10%以内浮动 从上表可以看出, 基于函数计算 + 函数工作流的方案在计算资源成本上对于计算复杂度较高的 flv 转 mp4 还是计算复杂度较低的 mp4 转 flv, 都具有很强的成本竞争力。 根据实际经验, 往往成本下降比上表列出来的更加明显, 理由如下: 测试视频的码率较高, 实际上很多场景绝大部分都是标清或者流畅视频的转码场景, 码率也比测试视频低,这个时候计算量变小, FC 执行时间短, 费用会降低, 但是通用的云转码服务计费是不变的. 很多视频分辨率在通用的云转码服务是计费是有很大损失的, 比如转码的视频是 856480 或者 1368768, 都会进入云转码服务的下一档计费单价, 比如856480 进入 1280720 高清转码计费档,1368768 进入 19201080 超清转码计费档, 单价基本是跨越式上升, 但是实际真正的计算量增加可能还不到30%, 而函数计算则是真正能做到按计算量付费. 操作部署 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 详情见各自示例工程的 README Simple 视频处理系统示例工程地址 视频处理工作流系统示例工程地址 总结 基于函数计算 FC 和函数工作流 FnF 的弹性高可用视频处理系统天然继承了这两个产品的优点: 无需采购和管理服务器等基础设施,只需专注视频处理业务逻辑的开发,大幅缩短项目交付时间和人力成本 提供日志查询、性能监控、报警等功能快速排查故障 以事件驱动的方式触发响应用户请求 免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异 成本极具竞争力 相比于通用的转码处理服务: 超强自定义,对用户透明, 基于 FFmpeg 或者其他音视频处理工具命令快速开发相应的音视频处理逻辑 原有基于 FFmpeg 自建的音视频处理服务可以一键迁移 弹性更强, 可以保证有充足的计算资源为转码服务,比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完 各种格式的音频转换或者各种采样率自定义、音频降噪等功能, 比如专业音频处理工具 aacgain 和 mp3gain 可以和 serverless 工作流完成更加复杂、自定义的任务编排,比如视频转码完成后,记录转码详情到数据库,同时自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力 更多的方式的事件驱动, 比如可以选择 OSS 自动触发(丰富的触发规则), 也可以根据业务选择 MNS 消息(支持 tag 过滤)触发 在大部分场景下具有很强的成本竞争力相比于其他自建服务: 毫秒级弹性伸缩,弹性能力超强,支持大规模资源调用,可弹性支持几万核.小时的计算力,比如 1 万节课半个小时完成转码 只需要专注业务逻辑代码即可,原生自带事件驱动模式,简化开发编程模型,同时可以达到消息(即音视频任务)处理的优先级,可大大提高开发运维效率 函数计算采用 3AZ 部署, 安全性高,计算资源也是多 AZ 获取, 能保证每个用户需要的算力峰值 开箱即用的监控系统, 如上面 gif 动图所示,可以多维度监控函数的执行情况,根据监控快速定位问题,同时给用户提供分析能力, 比如视频的格式分布, size 分布等 在大部分场景下具有很强的成本竞争力, 因为在函数计算是真正的按量付费(计费粒度在百毫秒), 可以理解为 CPU 的利用率为 100% 最后一一回答一下之前列出的问题: Q1: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? A: 如工程示例所示,在虚拟机/容器平台上基于 FFmpeg 的服务可以轻松切换到函数计算, FFmpeg 相关命令可以直接移值到函数计算,改造成本较低, 同时天然继承了函数计算弹性高可用性特性。 Q2:您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF 等。 自己搭建成本更低。 A: 函数计算天生就是解决这些自定义问题, 你的代码你做主, 代码中快速执行几个 FFmpeg 的命令即可完成需求。典型示例: fc-oss-ffmpeg Q3: 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案),after-process 中可以做一些自定义的操作, 您还可以基于此流程再做一些额外处理等, 比如: 再增加后续流程 最开始增加 pre-process Q4: 您有并发同时处理大量视频的需求。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), 当有多个文件同时上传到 OSS, 函数计算会自动伸缩, 并行处理多个文件。详情可以参考 视频处理工作流系统 (FnF + FC) 压测 Q5:您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。A: 详情可以参考视频处理工作流系统 (FnF + FC) 压测, 可以通过控制分片的大小, 可以使得每个大视频都有足够多的计算资源参与转码计算, 大大提高转码速度。 Q6: 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF,后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), FnF 只负责编排调用函数, 因此只需要更新相应的处理函数即可,同时函数有 version 和 alias 功能, 更好地控制灰度上线, 函数计算版本管理 Q7: 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将他们再迁移到 OSS 上。 A: 函数计算可以挂载 NAS, 直接对 NAS 中的文件进行处理
1934890530796658 2020-03-27 18:21:36 0 浏览量 回答数 0

问题

荆门开诊断证明-scc

(微)电〗【186-6605-3854〗号【精品问答】Java技术1000问(1) 问问小秘 2019-11-15 11:24:15 9099 为了方便Java开发者快速找到相关技术问题和答案,开发...
游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

回答

Spring Cloud 学习笔记(一)——入门、特征、配置 0 放在前面 0.1 参考文档 http://cloud.spring.io/spring-cloud-static/Brixton.SR7/ https://springcloud.cc/ http://projects.spring.io/spring-cloud/ 0.2 maven配置 org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE org.springframework.cloud spring-cloud-dependencies Dalston.RELEASE pom import org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-eureka 0.3 简介 Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调引出样板模式(boiler plate patterns),并且使用Spring Cloud开发人员可以快速地实现这些模式来启动服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。 Version: Brixton.SR7 1 特征 Spring Cloud专注于为经典用例和扩展机制提供良好的开箱即用 分布式/版本配置 服务注册与发现 路由选择 服务调用 负载均衡 熔断机制 全局锁 领导人选举和集群状态 分布式消息 2 原生云应用程序 原生云是应用程序开发的一种风格,鼓励在持续交付和价值驱动领域的最佳实践。 Spring Cloud的很多特性是基于Spring Boot的。更多的是由两个库实现:Spring Cloud Context and Spring Cloud Commons。 2.1 Spring Cloud Context: 应用上下文服务 Spring Boot关于使用Spring构建应用有硬性规定:通用的配置文件在固定的位置,通用管理终端,监控任务。建立在这个基础上,Spring Cloud增加了一些额外的特性。 2.1.1 引导应用程序上下文 Spring Cloud会创建一个“bootstrap”的上下文,这是主应用程序的父上下文。对应的配置文件拥有最高优先级,并且,默认不能被本地配置文件覆盖。对应的文件名bootstrap.yml或bootstrap.properties。 可通过设置spring.cloud.bootstrap.enabled=false来禁止bootstrap进程。 2.1.2 应用上下文层级结构 当用SpringApplication或SpringApplicationBuilder创建应用程序上下文时,bootstrap上下文将作为父上下文被添加进去,子上下文将继承父上下文的属性。 子上下文的配置信息可覆盖父上下文的配置信息。 2.1.3 修改Bootstrap配置文件位置 spring.cloud.bootstrap.name(默认是bootstrap),或者spring.cloud.bootstrap.location(默认是空) 2.1.4 覆盖远程配置文件的值 spring.cloud.config.allowOverride=true spring.cloud.config.overrideNone=true spring.cloud.config.overrideSystemProperties=false 2.1.5 定制Bootstrap配置 在/META-INF/spring.factories的key为org.springframework.cloud.bootstrap.BootstrapConfiguration,定义了Bootstrap启动的组件。 在主应用程序启动之前,一开始Bootstrap上下文创建在spring.factories文件中的组件,然后是@Beans类型的bean。 2.1.6 定制Bootstrap属性来源 关键点:spring.factories、PropertySourceLocator 2.1.7 环境改变 应用程序可通过EnvironmentChangedEvent监听应用程序并做出响应。 2.1.8 Refresh Scope Spring的bean被@RefreshScope将做特殊处理,可用于刷新bean的配置信息。 注意 需要添加依赖“org.springframework.boot.spring-boot-starter-actuator” 目前我只在@Controller测试成功 需要自己发送POST请求/refresh 修改配置文件即可 2.1.9 加密和解密 Spring Cloud可对配置文件的值进行加密。 如果有"Illegal key size"异常,那么需要安装JCE。 2.1.10 服务点 除了Spring Boot提供的服务点,Spring Cloud也提供了一些服务点用于管理,注意都是POST请求 /env:更新Environment、重新绑定@ConfigurationProperties跟日志级别 /refresh重新加载配置文件,刷新标记@RefreshScope的bean /restart重启应用,默认不可用 生命周期方法:/pause、/resume 2.2 Spring Cloud Commons:通用抽象 服务发现、负载均衡、熔断机制这种模式为Spring Cloud客户端提供了一个通用的抽象层。 2.2.1 RestTemplate作为负载均衡客户端 通过@Bean跟@LoadBalanced指定RestTemplate。注意URI需要使用虚拟域名(如服务名,不能用域名)。 如下: @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; public String doOtherStuff() { String results = restTemplate.getForObject(" http://stores/stores", String.class); return results; } } 2.2.2 多个RestTemplate对象 注意@Primary注解的使用。 @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate loadBalanced() { return new RestTemplate(); } @Primary @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; @Autowired @LoadBalanced private RestTemplate loadBalanced; public String doOtherStuff() { return loadBalanced.getForObject(" http://stores/stores", String.class); } public String doStuff() { return restTemplate.getForObject(" http://example.com", String.class); } } 2.2.3 忽略网络接口 忽略确定名字的服务发现注册,支持正则表达式配置。 3 Spring Cloud Config Spring Cloud Config提供服务端和客户端在分布式系统中扩展配置。支持不同环境的配置(开发、测试、生产)。使用Git做默认配置后端,可支持配置环境打版本标签。 3.1 快速开始 可通过IDE运行或maven运行。 默认加载property资源的策略是克隆一个git仓库(at spring.cloud.config.server.git.uri')。 HTTP服务资源的构成: /{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties application是SpringApplication的spring.config.name,(一般来说'application'是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为"master")。 3.1.1 客户端示例 创建以Spring Boot应用即可,添加依赖“org.springframework.cloud:spring-cloud-starter-config”。 配置application.properties,注意URL为配置服务端的地址 spring.cloud.config.uri: http://myconfigserver.com 3.2 Spring Cloud Config 服务端 针对系统外的配置项(如name-value对或相同功能的YAML内容),该服务器提供了基于资源的HTTP接口。使用@EnableConfigServer注解,该服务器可以很容易的被嵌入到Spring Boot 系统中。使用该注解之后该应用系统就是一个配置服务器。 @SpringBootApplication @EnableConfigServer public class ConfigApplicion { public static void main(String[] args) throws Exception { SpringApplication.run(ConfigApplicion.class, args); } } 3.2.1 资源库环境 {application} 对应客户端的"spring.application.name"属性 {profile} 对应客户端的 "spring.profiles.active"属性(逗号分隔的列表) {label} 对应服务端属性,这个属性能标示一组配置文件的版本 如果配置库是基于文件的,服务器将从application.yml和foo.yml中创建一个Environment对象。高优先级的配置优先转成Environment对象中的PropertySource。 3.2.1.1 Git后端 默认的EnvironmentRepository是用Git后端进行实现的,Git后端对于管理升级和物理环境是很方便的,对审计配置变更也很方便。也可以file:前缀从本地配置库中读取数据。 这个配置库的实现通过映射HTTP资源的{label}参数作为git label(提交id,分支名称或tag)。如果git分支或tag的名称包含一个斜杠 ("/"),此时HTTP URL中的label需要使用特殊字符串"(_)"来替代(为了避免与其他URL路径相互混淆)。如果使用了命令行客户端如 curl,请谨慎处理URL中的括号(例如:在shell下请使用引号''来转义它们)。 Git URI占位符 Spring Cloud Config Server支持git库URL中包含针对{application}和 {profile}的占位符(如果你需要,{label}也可包含占位符, 不过要牢记的是任何情况下label只指git的label)。所以,你可以很容易的支持“一个应用系统一个配置库”策略或“一个profile一个配置库”策略。 模式匹配和多资源库 spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo repos: simple: https://github.com/simple/config-repo special: pattern: special*/dev*,special/dev* uri: https://github.com/special/config-repo local: pattern: local* uri: file:/home/configsvc/config-repo 如果 {application}/{profile}不能匹配任何表达式,那么将使用“spring.cloud.config.server.git.uri”对应的值。在上例子中,对于 "simple" 配置库, 匹配模式是simple/* (也就说,无论profile是什么,它只匹配application名称为“simple”的应用系统)。“local”库匹配所有application名称以“local”开头任何应用系统,不管profiles是什么(来实现覆盖因没有配置对profile的匹配规则,“/”后缀会被自动的增加到任何的匹配表达式中)。 Git搜索路径中的占位符 spring.cloud.config.server.git.searchPaths 3.2.1.2 版本控制后端文件系统使用 伴随着版本控制系统作为后端(git、svn),文件都会被check out或clone 到本地文件系统中。默认这些文件会被放置到以config-repo-为前缀的系统临时目录中。在Linux上,譬如应该是/tmp/config-repo- 目录。有些操作系统routinely clean out放到临时目录中,这会导致不可预知的问题出现。为了避免这个问题,通过设置spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir参数值为非系统临时目录。 3.2.1.3 文件系统后端 使用本地加载配置文件。 需要配置:spring.cloud.config.server.native.searchLocations跟spring.profiles.active=native。 路径配置格式:classpath:/, classpath:/config,file:./, file:./config。 3.2.1.4 共享配置给所有应用 基于文件的资源库 在基于文件的资源库中(i.e. git, svn and native),这样的文件名application 命名的资源在所有的客户端都是共享的(如 application.properties, application.yml, application-*.properties,etc.)。 属性覆盖 “spring.cloud.config.server.overrides”添加一个Map类型的name-value对来实现覆盖。 例如 spring: cloud: config: server: overrides: foo: bar 会使所有的配置客户端应用程序读取foo=bar到他们自己配置参数中。 3.2.2 健康指示器 通过这个指示器能够检查已经配置的EnvironmentRepository是否正常运行。 通过设置spring.cloud.config.server.health.enabled=false参数来禁用健康指示器。 3.2.3 安全 你可以自由选择任何你觉得合理的方式来保护你的Config Server(从物理网络安全到OAuth2 令牌),同时使用Spring Security和Spring Boot 能使你做更多其他有用的事情。 为了使用默认的Spring Boot HTTP Basic 安全,只需要把Spring Security 增加到classpath中(如org.springframework.boot.spring-boot-starter-security)。默认的用户名是“user”,对应的会生成一个随机密码,这种情况在实际使用中并没有意义,一般建议配置一个密码(通过 security.user.password属性进行配置)并对这个密码进行加密。 3.2.4 加密与解密 如果远程属性包含加密内容(以{cipher}开头),这些值将在通过HTTP传递到客户端之前被解密。 使用略 3.2.5 密钥管理 配置服务可以使用对称(共享)密钥或者非对称密钥(RSA密钥对)。 使用略 3.2.6 创建一个测试密钥库 3.2.7 使用多密钥和循环密钥 3.2.8 加密属性服务 3.3 可替换格式服务 配置文件可加后缀".yml"、".yaml"、".properties" 3.4 文本解释服务 /{name}/{profile}/{label}/{path} 3.5 嵌入配置服务器 一般配置服务运行在单独的应用里面,只要使用注解@EnableConfigServer即可嵌入到其他应用。 3.6 推送通知和总线 添加依赖spring-cloud-config-monitor,激活Spring Cloud 总线,/monitor端点即可用。 当webhook激活,针对应用程序可能已经变化了的,配置服务端将发送一个RefreshRemoteApplicationEvent。 3.7 客户端配置 3.7.1 配置第一次引导 通过spring.cloud.config.uri属性配置Config Server地址 3.7.2 发现第一次引导 如果用的是Netflix,则用eureka.client.serviceUrl.defaultZone进行配置。 3.7.3 配置客户端快速失败 在一些例子里面,可能希望在没有连接配置服务端时直接启动失败。可通过spring.cloud.config.failFast=true进行配置。 3.7.4 配置客户端重试 添加依赖spring-retry、spring-boot-starter-aop,设置spring.cloud.config.failFast=true。默认的是6次重试,初始补偿间隔是1000ms,后续补偿为1.1指数乘数,可通过spring.cloud.config.retry.*配置进行修改。 3.7.5 定位远程配置资源 路径:/{name}/{profile}/{label} "name" = ${spring.application.name} "profile" = ${spring.profiles.active} (actually Environment.getActiveProfiles()) "label" = "master" label对于回滚到之前的版本很有用。 3.7.6 安全 通过spring.cloud.config.password、spring.cloud.config.username进行配置。 答案来源于网络
养狐狸的猫 2019-12-02 02:18:34 0 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

为了方便Java开发者快速找到相关技术问题和答案,开发者社区策划了Java技术1000问内容,包含最基础的如何学Java、实践中遇到的技术问题、RocketMQ面试、Java容器部署实践等维度内容。 我们会以每...
问问小秘 2019-12-01 21:57:43 39926 浏览量 回答数 17

问题

Docker 1.12 重磅推出,容器领域划时代

Docker 1.12 在今年 6 月下旬的 DockerCon 2016 上就崭露头角,然而,却在 7 月底的今天才发布,真可谓"千呼万唤始出来"。如果了解 Docker 的 Ro...
妙正灰 2019-12-01 21:08:42 3504 浏览量 回答数 1

问题

盘点年度 Python 类库 Top 10

盘点年度 Python 类库 Top 10 1. HTTPX 如果你是一名经常与 api 交互的 Python 死忠粉,可能会很熟悉 requests 类库。然而,异步范式在高性能现代应用程序中越来越常见&#...
珍宝珠 2020-01-09 13:39:35 77 浏览量 回答数 1
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询