当前位置: 首页 > news >正文

企业网站认证服务器购买一台多少钱

企业网站认证,服务器购买一台多少钱,汕尾好网站建设推广,站内内容投放计划【后端开发】系统设计101——Devops#xff0c;Git与CICD#xff0c;云服务与云原生#xff0c;Linux#xff0c;安全性#xff0c;案例研究#xff08;30张图详解#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么#xff1f;什么是k8s#xff08;Ku…【后端开发】系统设计101——DevopsGit与CICD云服务与云原生Linux安全性案例研究30张图详解 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么什么是k8sKubernetesDocker与Kubernetes。我们应该使用哪个Docker是如何工作的开发者生产力工具 2、Git与CICDGit命令的工作原理Git是如何工作的Git合并与Git变基简单介绍CI/CD流程Netflix技术栈CI/CD流程 3、云服务与云原生各种云服务的好用备忘单2023版什么是云原生 4、Linux解释Linux文件系统你应该知道的18个最常用的Linux命令 5、安全性HTTPS是如何工作的非对称传秘钥对称传数据用简单的术语解释 Oauth2.0第三方wx/qq登录认证机制的四种主要形式SSHOauthSSLCertSession、cookie、JWT、token、SSO和OAuth 2.0 - 它们是什么如何安全地在数据库中存储密码以及如何验证密码用通俗易懂的语言解释JSON Web TokenJWTGoogle Authenticator或其他类型的两步验证器是如何工作的 6、常见架构9张Netflix的技术栈Twitter 2022年的架构Airbnb过去15年中微服务架构的演变Monorepo vs. Microrepo你会如何设计Stack Overflow网站为什么Amazon Prime Video的监控从无服务器转向单体应用如何节省90%的成本Disney Hotstar如何在锦标赛期间捕捉50亿个表情符号Discord如何存储数万亿条消息YouTube、TikTok Live或Twitch上的视频直播是如何工作的 用图像和简单语言解释复杂系统。 参考资料 1, 2 3 文章目录 1、Devops DevOps与SRE与平台工程的区别是什么 什么是k8sKubernetes Docker与Kubernetes。我们应该使用哪个 Docker是如何工作的 开发者生产力工具 2、Git与CICD Git命令的工作原理 Git是如何工作的 Git合并与Git变基 简单介绍CI/CD流程 Netflix技术栈CI/CD流程 3、云服务与云原生 各种云服务的好用备忘单2023版 什么是云原生 4、Linux 解释Linux文件系统 你应该知道的18个最常用的Linux命令 5、安全性 HTTPS是如何工作的非对称传秘钥对称传数据 用简单的术语解释 Oauth2.0第三方wx/qq登录 认证机制的四种主要形式SSHOauthSSLCert Session、cookie、JWT、token、SSO和OAuth 2.0 - 它们是什么 如何安全地在数据库中存储密码以及如何验证密码 用通俗易懂的语言解释JSON Web TokenJWT Google Authenticator或其他类型的两步验证器是如何工作的 6、常见架构9张 Netflix的技术栈 Twitter 2022年的架构 Airbnb过去15年中微服务架构的演变 Monorepo vs. Microrepo 你会如何设计Stack Overflow网站 为什么Amazon Prime Video的监控从无服务器转向单体应用如何节省90%的成本 Disney Hotstar如何在锦标赛期间捕捉50亿个表情符号 Discord如何存储数万亿条消息 YouTube、TikTok Live或Twitch上的视频直播是如何工作的 1、Devops DevOps与SRE与平台工程的区别是什么 DevOps、SRE和平台工程的概念是在不同的时间出现的并由各个个人和组织进行了发展。 DevOps作为一个概念于2009年由Patrick Debois和Andrew Shafer在敏捷大会上提出。他们试图通过促进协作文化和共同负责整个软件开发生命周期来弥合软件开发和运营之间的差距。SRE或站点可靠性工程是由Google在2000年代初引入的旨在解决管理大规模复杂系统的运营挑战。Google开发了SRE实践和工具例如Borg集群管理系统和Monarch监控系统以提高其服务的可靠性和效率。平台工程是一个更为新近的概念建立在SRE工程的基础之上。平台工程的确切起源不太清楚但它通常被理解为DevOps和SRE实践的扩展重点是提供一个全面支持整个业务视角的产品开发平台。 值得注意的是尽管这些概念在不同的时间出现但它们都与改进软件开发和运营中的协作、自动化和效率的广泛趋势相关。 什么是k8sKubernetes K8s是一个容器编排系统用于容器的部署和管理。它的设计受到了Google内部系统Borg的影响。 一个k8s集群 由一组运行容器化应用程序的工作节点称为节点组成。每个集群至少有一个工作节点。 工作节点托管Pod 这些Pod是应用程序工作负载的组成部分。 控制平面管理集群中的工作节点和Pod。 在生产环境中控制平面通常跨多台计算机运行集群通常运行多个节点提供容错和高可用性。 控制平面组件 API服务器 API服务器与k8s集群中的所有组件进行通信。所有pod的操作都通过与API服务器通信执行。 调度器 调度器观察Pod的工作负载并将负载分配给新创建的Pod。 控制器管理器 控制器管理器运行控制器包括Node ControllerJob ControllerEndpointSlice Controller和ServiceAccount Controller等。 Etcd etcd是一个键值存储用作Kubernetes的后备存储器用于存储所有集群数据。 节点 Pod Pod是一组容器是k8s管理的最小单位。Pod具有应用于Pod中每个容器的单个IP地址。 Kubelet 在集群中的每个节点上运行的代理。它确保容器在Pod中运行。 Kube Proxy Kube-proxy是一个网络代理运行在集群中的每个节点上。它将从服务进入节点的流量路由到正确的容器。它将请求转发到正确的容器以便执行工作。 Docker与Kubernetes。我们应该使用哪个 什么是Docker Docker是一个开源平台允许您在隔离的容器中打包、分发和运行应用程序。它专注于容器化提供轻量级环境封装应用程序及其依赖项。 什么是Kubernetes Kubernetes通常称为K8s是一个开源容器编排平台。它提供了一个框架用于自动化部署、扩展和管理容器化应用程序跨节点的集群。 它们之间有什么不同 DockerDocker在单个操作系统主机上的单个容器级别操作。 您必须手动管理每个主机为多个相关容器设置网络、安全策略和存储可能会很复杂。KubernetesKubernetes在集群级别上运行。它管理多个容器化应用程序跨多个主机提供自动化的任务如负载平衡、扩展和确保应用程序的期望状态。 简而言之Docker专注于容器化和在单个主机上运行容器而Kubernetes专门管理和编排容器在跨多个主机的集群中运行。 Docker是如何工作的 Docker的架构以及当我们运行 “docker build”、“docker pull” 和 “docker run” 时它是如何工作的。 Docker架构有三个组件 Docker客户端 Docker客户端与Docker守护进程通信。Docker宿主机 Docker守护进程监听Docker API请求并管理Docker对象如镜像、容器、网络和卷。Docker注册表 Docker注册表存储Docker镜像。Docker Hub是一个公共注册表任何人都可以使用。 让我们以“docker run”命令为例。 Docker从注册表中拉取镜像。Docker创建一个新的容器。Docker为容器分配一个读写文件系统。Docker创建一个网络接口将容器连接到默认网络。Docker启动容器。 开发者生产力工具 自动将代码转换为架构图 用Python代码绘制云系统架构。图表也可以在Jupyter笔记本中直接呈现。不需要设计工具。支持以下提供商AWS、Azure、GCP、Kubernetes、阿里云、Oracle Cloud等。 可视化JSON文件 嵌套的JSON文件很难阅读。JsonCrack从JSON文件生成图形图表使其易于阅读。此外生成的图表可以下载为图像。 2、Git与CICD Git命令的工作原理 首先必须确定我们的代码存储在哪里。 通常认为只有两个位置 - 一个是在像Github这样的远程服务器上另一个是在我们的本地计算机上。然而这并不完全准确。 Git在我们的计算机上维护了三个本地存储。这意味着我们的代码可以在四个位置找到 工作目录我们编辑文件的地方此时会跟暂存区的文件做diffgit add以后丢到暂存区。暂存区一个临时位置文件被保存在这里以供下一次提交使用。commit以后丢到本地仓库。本地仓库包含已提交的代码。远程仓库存储代码的远程服务器。 大多数Git命令主要在这四个位置之间移动文件。 Git是如何工作的 Git是一种分布式版本控制系统。 每个开发者都维护着主仓库的本地副本并对其进行编辑和提交。 由于操作不涉及远程仓库因此提交非常快速。 如果远程仓库崩溃可以从本地仓库恢复文件。 Git合并与Git变基 当我们将一个Git分支的更改合并到另一个分支时可以使用“git merge”或“git rebase”。 下面的图表展示了这两个命令的工作方式。 Git合并 这将在主分支中创建一个新的提交G’。G’将主分支和功能分支的历史记录联系起来。Git合并是非破坏性的。主分支和功能分支都不会被更改。 Git变基 Git变基将功能分支的历史记录移动到主分支的头部。它为功能分支中的每个提交创建新的提交E’、F’和G’。使用变基的好处是它具有线性的提交历史记录。如果不遵循“Git变基的黄金法则”它可能会带来风险。 Git变基的黄金法则 永远不要在公共分支上使用它 简单介绍CI/CD流程 第一部分 - 带有 CI/CD 的 SDLC 软件开发生命周期SDLC包括几个关键阶段开发测试部署和维护。 CI / CD自动化并集成了这些阶段以实现更快速和可靠的发布。当代码被推送到git存储库时它会触发自动构建和测试过程。运行端到端e2e测试用例以验证代码。如果测试通过则代码可以自动部署到staging / production。如果发现问题则将代码发送回开发以修复错误。此自动化为开发人员提供了快速反馈并减少了生产中错误的风险。 第二部分 - CI和CD之间的区别 持续集成CI - Continuous Integration自动化构建测试和合并过程。每当提交代码以尽早检测集成问题时它都会运行测试。这鼓励频繁的代码提交和快速反馈。持续交付CD- Continuous Delivery自动化发布流程如基础架构更改和部署。它确保软件可以通过自动化工作流程可靠地随时发布。 CD还可以自动化生产部署之前需要的手动测试和批准步骤。 第三部分 - CI/CD 管道 典型的 CI/CD 管道具有几个连接的阶段 开发人员提交代码更改以进行源控制CI服务器检测更改并触发构建编译代码并进行测试单元测试集成测试测试结果报告给开发人员成功后工件将部署到staging环境在发布之前可能会在staging上进行进一步测试CD系统将批准的更改部署到生产中 Netflix技术栈CI/CD流程 计划Netflix工程团队使用JIRA进行计划使用Confluence进行文档编写。 编码Java是后端服务的主要编程语言而其他语言则用于不同的用例。 构建Gradle主要用于构建而Gradle插件则用于支持各种用例。 打包将包和依赖项打包成Amazon Machine ImageAMI进行发布。 测试测试强调生产文化对构建混沌工具的关注。 部署Netflix使用其自行构建的Spinnaker进行金丝雀发布部署。 监控监控指标集中在Atlas中使用Kayenta检测异常。 事件报告事件按优先级分派使用PagerDuty进行事件处理。 3、云服务与云原生 各种云服务的好用备忘单2023版 什么是云原生 下面是一张图表展示了自1980年代以来体系结构和流程的演变。 组织可以使用云原生技术在公共、私有和混合云上构建和运行可扩展的应用程序。 这意味着应用程序被设计为利用云特性因此它们对负载具有弹性并且易于扩展。 云原生包括四个方面 开发流程这已经从瀑布流发展到敏捷开发到DevOps。应用程序架构架构已经从单片式发展到微服务。每个服务都被设计为小巧适应云容器中有限的资源。部署和打包应用程序曾经部署在物理服务器上。然后在2000年左右那些不敏感于延迟的应用程序通常部署在虚拟服务器上。使用云原生应用程序它们被打包成Docker镜像并部署在容器中。应用程序基础设施应用程序大规模部署在云基础设施上而不是自托管服务器上。 4、Linux 解释Linux文件系统 Linux文件系统曾经类似于一个无组织的城镇个人可以在任何地方建造自己的房屋。然而1994年引入了文件系统层次结构标准FHS以规范Linux文件系统。 通过实施像FHS这样的标准软件可以确保在各种Linux发行版中具有一致的布局。然而并不是所有的Linux发行版都严格遵循这个标准。它们经常包含自己独特的元素或迎合特定的需求。 要熟练掌握这个标准你可以从探索开始。利用“cd”命令进行导航和“ls”命令列出目录内容。想象文件系统就像一棵树从根目录/开始。随着时间的推移它将变得自然而然使你成为一名熟练的Linux管理员。 你应该知道的18个最常用的Linux命令 Linux命令是与操作系统交互的指令。它们有助于管理文件、目录、系统进程和系统的许多其他方面。为了有效地导航和维护基于Linux的系统你需要熟悉这些命令。 以下图表显示了常用的Linux命令 ls - 列出文件和目录cd - 更改当前目录mkdir - 创建新目录rm - 删除文件或目录cp - 复制文件或目录mv - 移动或重命名文件或目录chmod - 更改文件或目录权限grep - 在文件中搜索模式find - 搜索文件和目录tar - 操作tarball归档文件vi - 使用文本编辑器编辑文件cat - 显示文件内容top - 显示进程和资源使用情况ps - 显示进程信息kill - 通过发送信号终止进程du - 估算文件空间使用量ifconfig - 配置网络接口ping - 在主机之间测试网络连接 5、安全性 HTTPS是如何工作的非对称传秘钥对称传数据 超文本传输安全协议HTTPS是超文本传输协议HTTP的扩展。HTTPS使用传输层安全协议TLS传输加密数据。如果数据在在线上被劫持劫持者只能获得二进制代码。 数据是如何加密和解密的 步骤1 - 客户端浏览器和服务器建立TCP连接。步骤2 - 客户端向服务器发送“客户端hello”消息。该消息包含一组必要的加密算法密码套件和它支持的最新TLS版本。 服务器响应一个“服务器hello”以使浏览器知道它是否支持这些算法和TLS版本。 然后服务器向客户端发送SSL证书。该证书包含公钥、主机名、过期日期等。客户端验证证书。步骤3 - 在验证SSL证书后客户端生成一个会话密钥并使用公钥对其进行加密。服务器接收加密的会话密钥并使用私钥对其进行解密。步骤4 - 现在客户端和服务器都持有相同的会话密钥对称加密加密数据在一个安全的双向通道中传输。 为什么HTTPS在数据传输期间要切换到对称加密 有两个主要原因 安全性非对称加密只能单向进行。这意味着如果服务器试图将加密数据发送回客户端任何人都可以使用公钥解密数据。同时任何人都可以用服务器的公钥伪造返回数据服务器资源非对称加密增加了相当多的数学开销。它不适用于长时间会话中的数据传输。 用简单的术语解释 Oauth2.0第三方wx/qq登录 OAuth 2.0 是一个强大且安全的框架可以让不同的应用程序代表用户在不共享敏感凭证的情况下安全地互相交互。 OAuth 涉及的实体有用户、服务器和身份提供者IDP。 OAuth Token 可以做什么 当您使用 OAuth 时您会获得一个代表您身份和权限的 OAuth Token。该 Token 可以做一些重要的事情单点登录SSO使用 OAuth Token您可以只使用一个登录即可登录多个服务或应用程序让您的生活更加轻松和安全。系统间授权OAuth Token 允许您在各个系统之间共享您的授权或访问权限因此您不必在各处单独登录。访问用户资料具有 OAuth Token 的应用程序可以访问您允许的某些用户资料的部分内容但不会查看全部。请记住OAuth 2.0 的目的是在不同的应用程序和服务之间使您的在线体验无缝、无忧并保护您和您的数据的安全。 1 认证机制的四种主要形式SSHOauthSSLCert SSH 密钥 用于安全地访问远程系统和服务器的加密密钥OAuth Tokens : 提供对第三方应用程序上用户数据的有限访问权限的令牌SSL 证书 数字证书确保服务器和客户端之间的通信安全和加密Credentials凭证 用户身份验证信息用于验证并授予对各种系统和服务的访问权限 Session、cookie、JWT、token、SSO和OAuth 2.0 - 它们是什么 这些术语都与用户身份管理相关。 当您登录网站时您声明了自己的身份识别。您的身份将得到验证认证并被授予必要的权限授权。 过去提出了许多解决方案这个列表还在不断增长。 从简单到复杂这是我对用户身份管理的理解 WWW-Authenticate是最基本的方法。浏览器会要求您输入用户名和密码。由于无法控制登录生命周期它现在很少使用。Session-Cookie可以更细致地控制登录生命周期。服务器维护会话存储浏览器保留会话ID。Cookie通常只适用于浏览器不适用于移动应用程序。为了解决兼容性问题可以使用Token。客户端将Token发送到服务器服务器验证Token。缺点是Token需要加密和解密可能会耗费时间。JWT是表示Token的标准方式。这些信息可以得到验证和信任因为它们是数字签名的。由于JWT包含签名因此不需要在服务器端保存会话信息。通过使用SSO单点登录您只需登录一次即可登录多个网站。它使用CAS中央认证服务来维护跨站点信息。通过使用OAuth 2.0您可以授权一个网站访问另一个网站上的您的信息。 如何安全地在数据库中存储密码以及如何验证密码 不应该做的事情 存储明文密码不是一个好主意因为任何有内部访问权限的人都可以看到它们。直接存储密码哈希不足够安全因为它容易受到预计算攻击如彩虹表攻击。为了减轻预计算攻击我们对密码进行加盐处理。 什么是盐 根据OWASP指南“盐是在哈希过程中作为唯一随机生成的字符串添加到每个密码中的一部分”。 如何存储密码和盐 哈希结果对于每个密码都是唯一的。可以使用以下格式将密码存储在数据库中hash(password salt)。 如何验证密码 要验证密码可以进行以下过程客户端输入密码。系统从数据库中获取相应的盐。系统将盐附加到密码上并进行哈希处理。我们称哈希值为H1。系统比较H1和H2其中H2是存储在数据库中的哈希值。如果它们相同则密码有效。 用通俗易懂的语言解释JSON Web TokenJWT 想象一下你有一个特殊的盒子叫做JWT。在这个盒子里有三个部分头部、载荷和签名。 头部就像盒子外面的标签。 它告诉我们盒子的类型和如何保证安全。 它通常采用JSON格式编写JSON是一种使用花括号{ }和冒号:来组织信息的方式。 载荷就像你想要发送的实际信息或数据。 它可以是你的姓名、年龄或任何你想要分享的数据。 它也以JSON格式编写因此易于理解和处理。 现在签名是使JWT安全的关键。 它就像一个特殊的印章只有发送者知道如何创建。 签名是使用秘密代码创建的有点像密码。 这个签名确保没有人可以在发送者不知道的情况下篡改JWT的内容。 当你想要将JWT发送到服务器时你将头部、载荷和签名放在盒子里。 然后你将它发送到服务器。 服务器可以轻松地读取头部和载荷以了解你是谁以及你想要做什么。 Google Authenticator或其他类型的两步验证器是如何工作的 Google Authenticator通常用于启用2因素身份验证时登录我们的帐户。它如何保证安全 Google Authenticator是一种基于软件的验证器实现了2FA两步验证服务。以下图表提供了详细信息。 这里涉及到两个阶段 阶段1 - 用户启用谷歌两步验证。阶段2 - 用户使用验证器进行登录等操作。 阶段1 步骤1和2Bob打开网页启用两步验证。前端请求一个秘密密钥。认证服务为Bob生成秘密密钥并将其存储在数据库中。步骤3认证服务向前端返回一个URI。URI由密钥发行者、用户名和秘密密钥组成。URI以QR码的形式显示在网页上。步骤4然后Bob使用Google Authenticator扫描生成的QR码。秘密密钥存储在验证器中。 阶段2 步骤1和2Bob想要使用谷歌两步验证登录网站。为此他需要密码。每30秒Google Authenticator使用TOTP基于时间的一次性密码算法生成一个6位数字密码。 Bob使用密码进入网站。步骤3和4前端将Bob输入的密码发送到后端进行身份验证。认证服务从数据库中读取秘密密钥并使用与客户端相同的TOTP算法生成一个6位数字密码。步骤5认证服务比较客户端和服务器生成的两个密码并将比较结果返回给前端。只有两个密码匹配时Bob才能继续登录过程。 这种身份验证机制安全吗其他人能否获取秘密密钥 我们需要确保使用HTTPS传输秘密密钥。验证器客户端和数据库存储秘密密钥我们需要确保秘密密钥已加密。 黑客能否猜测6位数字密码 不行。密码有6位数字因此生成的密码有100万个潜在组合。此外密码每30秒变一次。如果黑客想在30秒内猜测密码他们需要每秒输入30,000个组合。 6、常见架构9张 Netflix的技术栈 移动端和Web端Netflix采用Swift和Kotlin构建本地移动应用程序。对于Web应用程序它使用React。 前端/服务器通信Netflix使用GraphQL。 后端服务Netflix依赖于ZUUL、Eureka、Spring Boot框架和其他技术。 数据库Netflix利用EV Cache、Cassandra、CockroachDB和其他数据库。 消息/流处理Netflix使用Apache Kafka和Fink进行消息和流处理。 视频存储Netflix使用S3和Open Connect进行视频存储。 数据处理Netflix利用Flink和Spark进行数据处理然后使用Tableau进行可视化。Redshift用于处理结构化数据仓库信息。 CI/CDNetflix采用各种工具如JIRA、Confluence、PagerDuty、Jenkins、Gradle、Chaos Monkey、Spinnaker、Atlas等进行CI/CD流程。 Twitter 2022年的架构 是的这是真正的 Twitter 架构。它由 Elon Musk 发布我们重新绘制以提高可读性。 Airbnb过去15年中微服务架构的演变 Airbnb的微服务架构经历了三个主要阶段。 单体架构2008-2017 Airbnb最初只是一个简单的房东和客人市场。这是在Ruby on Rails应用程序中构建的 - 单体架构。面临的挑战是什么 团队所有权混淆未拥有的代码 部署缓慢 微服务2017-2020 微服务旨在解决这些挑战。在微服务架构中关键服务包括 数据获取服务 业务逻辑数据服务 写工作流服务 UI聚合服务 每个服务都有一个拥有团队面临的挑战是什么 数百个服务和依赖项对人类来说很难管理。 微服务宏服务2020-现在 这是Airbnb目前正在研究的。微服务和宏服务混合模型的重点是API的统一。 Monorepo vs. Microrepo 微服务仓库Microrepo 和 宏服务仓库Monorepo Monorepo 和 Microrepo 是两种不同的代码库管理方法。 哪个是最好的为什么不同的公司选择不同的选项 对比 Monorepo并不是新的概念Linux和Windows都是使用Monorepo创建的。 为了提高可扩展性和构建速度谷歌开发了内部专用工具链以更快地扩展同时采用了严格的编码质量标准来保持一致性。 亚马逊和Netflix是微服务哲学的主要代表。这种方法自然地将服务代码分成不同的存储库。它可以更快地扩展但后期可能会出现治理痛点。 在Monorepo中每个服务都是一个文件夹每个文件夹都有BUILD配置和OWNERS权限控制。每个服务成员都负责自己的文件夹。 另一方面在Microrepo中每个服务都负责自己的存储库构建配置和权限通常设置为整个存储库。 在Monorepo中无论您的业务如何依赖关系都是在整个代码库中共享的因此当有版本升级时每个代码库都会升级其版本。 在Microrepo中依赖关系是在每个存储库中控制的。业务可以根据自己的时间表选择何时升级版本。 Monorepo有一个标准的签入流程。谷歌的代码审查流程因设定了高标准而闻名确保了Monorepo的一致质量标准无论业务如何。 Microrepo可以自己设置标准也可以采用最佳实践并采用共享标准。它可以更快地为业务扩展但代码质量可能会有所不同。 谷歌工程师构建了BazelMeta构建了Buck。还有其他开源工具可用包括Nix、Lerna和其他工具。 多年来Microrepo支持的工具越来越多包括Java的Maven和Gradle、NodeJS的NPM以及C/C的CMake等。 你会如何设计Stack Overflow网站 基于现场服务器和单体架构在下面的图像中这就是实际构建的方式 人们认为它应该是什么样子 上图的顶部部分。微服务用于将系统分解为小组件。每个服务都有自己的数据库。大量使用缓存。服务被分片。服务通过消息队列异步交互。服务使用事件溯源和CQRS实现。展示分布式系统方面的知识例如最终一致性、CAP定理等。 实际情况 Stack Overflow仅使用9个现场Web服务器处理所有流量而且它是一个单体架构它有自己的服务器不运行在云上。这与我们当今的所有流行信仰相反。 为什么Amazon Prime Video的监控从无服务器转向单体应用如何节省90%的成本 亚马逊Prime Video监控服务是什么 Prime Video服务需要监控数千个实时流的质量。监控工具自动分析实时流并识别质量问题如块损坏、视频冻结和同步问题。这是客户满意度的重要流程。 有三个步骤媒体转换器、缺陷检测器和实时通知。 旧架构存在什么问题 旧架构基于Amazon Lambda构建用于快速构建服务。然而在高规模运行架构时它并不具备成本效益。最昂贵的两个操作是 1、编排工作流程 - AWS步骤函数按状态转换收费编排每秒执行多个状态转换。 2、分布式组件之间的数据传递 - 中间数据存储在Amazon S3中以便下一个阶段可以下载。当数据量很大时下载可能很昂贵。 单体架构节省90%的成本 单体架构旨在解决成本问题。 仍然有三个组件但媒体转换器和缺陷检测器部署在同一进程中节省了通过网络传递数据的成本。 令人惊讶的是这种部署架构变更方法导致了90%的成本节约这是一个有趣且独特的案例研究因为微服务已成为技术行业的首选和时尚选择。 很高兴看到我们正在更多地讨论如何发展架构并更加诚实地讨论其优缺点。将组件分解为分布式微服务会带来成本。 亚马逊领袖对此有何看法 亚马逊首席技术官Werner Vogels “构建可发展的软件系统是一种策略而不是一种宗教。以开放的心态重新审视您的架构是必须的。”前亚马逊可持续性副总裁Adrian Cockcroft “Prime Video团队已经遵循了我称之为Serverless First的路径…我不赞成Serverless Only。” 迁移前后的架构比较 Disney Hotstar如何在锦标赛期间捕捉50亿个表情符号 1、客户端通过标准HTTP请求发送表情符号。您可以将Golang服务视为典型的Web服务器。选择Golang是因为它很好地支持并发。Golang中的线程是轻量级的。 2、由于写入量非常高使用Kafka消息队列作为缓冲区。 3、表情符号数据由名为Spark的流处理服务聚合。它每2秒聚合一次数据这是可配置的。根据间隔需要进行权衡。较短的间隔意味着表情符号将更快地传递给其他客户端但这也意味着需要更多的计算资源。 4、聚合数据被写入另一个Kafka。 5、PubSub消费者从Kafka中拉取聚合的表情符号数据。 6、表情符号通过PubSub基础架构实时传递给其他客户端。PubSub基础架构很有趣。Hotstar考虑了以下协议Socketio、NATS、MQTT和gRPC并选择了MQTT。 LinkedIn采用了类似的设计可以每秒流式传输一百万个赞。 Discord如何存储数万亿条消息 下面的图表显示了Discord消息存储的演变过程 MongoDB Cassandra ScyllaDB 2015年Discord的第一个版本建立在单个MongoDB副本之上。 到了2015年11月MongoDB存储了1亿条消息内存无法再容纳数据和索引。延迟变得不可预测消息存储需要迁移到另一个数据库。他们选择了Cassandra。到了2017年Discord有12个Cassandra节点存储着数十亿条消息。在2022年初它拥有了177个节点存储着数万亿条消息。此时延迟变得不可预测维护操作的成本也变得太高。 Cassandra对比ScyllaDB替换的原因 Cassandra使用LSM树作为内部数据结构。读取比写入更昂贵。在有数百个用户的服务器上可能会有许多并发读取导致热点问题。 维护群集如压缩SSTables会影响性能。 垃圾回收暂停会导致显著的延迟峰值。ScyllaDB是一个用C编写的与Cassandra兼容的数据库。 Discord重新设计了其架构拥有一个单体式API一个用Rust编写的数据服务和基于ScyllaDB的存储。 在ScyllaDB中p99读取延迟为15毫秒而在Cassandra中为40-125毫秒。p99写入延迟为5毫秒而在Cassandra中为5-70毫秒。. YouTube、TikTok Live或Twitch上的视频直播是如何工作的 直播流与常规流媒体不同因为视频内容是通过互联网实时发送的通常延迟只有几秒钟。 下面的图示解释了实现这一点的背后发生的事情。 第一步原始视频数据由麦克风和摄像头捕捉。数据被发送到服务器端。第二步视频数据被压缩和编码。例如压缩算法将背景和其他视频元素分离。压缩后视频被编码为标准格式例如H.264。经过这一步骤后视频数据的大小大大缩小。第三步编码数据被分成更小的片段通常是几秒钟的长度以便下载或流媒体所需的时间更短。第四步分段数据被发送到流媒体服务器。流媒体服务器需要支持不同的设备和网络条件。这被称为“自适应比特率流媒体”。这意味着我们需要在步骤2和3中生成多个不同比特率的文件。第五步直播流数据被推送到由CDN内容分发网络支持的边缘服务器。数百万观众可以从附近的边缘服务器观看视频。CDN显着降低了数据传输延迟。第六步观众设备解码和解压缩视频数据并在视频播放器中播放视频。第七步和第八步如果需要将视频存储以供重播编码数据将被发送到存储服务器观众稍后可以从中请求重播。 直播流的标准协议包括 RTMP实时消息传输协议最初由Macromedia开发用于在Flash播放器和服务器之间传输数据。现在它用于在互联网上流传视频数据。请注意像Skype这样的视频会议应用程序使用RTC实时通信协议以实现更低的延迟。HLSHTTP Live Streaming需要H.264或H.265编码。Apple设备只支持HLS格式。DASH动态自适应流媒体DASH不支持Apple设备。HLS和DASH都支持自适应比特率流媒体。
http://www.pierceye.com/news/121725/

相关文章:

  • 网站首页logo怎么修改优化方案英语答案
  • 东南亚网站建设市场用照片做视频的模板下载网站
  • 做seo网站的公司2网站建设公司
  • phpmysql旅游网站开发wordpress 需要多大数据库
  • 做预算查市场价格的网站阿里巴巴旗下跨境电商平台有哪些
  • 搜狗网站提交入口有哪些做问卷调查赚钱的网站6
  • 上海市住房和城乡建设厅官方网站码上游二维码制作
  • wordpress生活插件上海做网站优化
  • 长武网站建设做网站吉林
  • 定制做网站技术建网站不做广告怎么赚钱
  • 南宁市做网站的公司yellow的视频播放
  • 网络营销的效果是什么杭州seo网站建设
  • 南沙免费网站建设阿里巴巴网站工作流程
  • 东莞公司网站建设河南省专业做网站公司
  • 兰州彩票网站制作安阳区号是什么
  • 企业形象网站解决方案传统企业如果建立网站
  • 个人网站主页模板如何开一家网络营销公司
  • 网络管理系统密码吴中seo页面优化推广
  • 手绘风格的网站上海做网站cnsosu
  • 怎么做一个免费网站网站app的作用
  • iis 搭建网站品牌建设经验做法
  • 做国外的众筹网站有哪些wordpress小红书主题
  • 扩展名 网站百度资源共享链接分享组
  • 东莞市seo网络推广怎么样杭州seo关键词优化哪家好
  • 做网站用什么ui美观微信公众号调用WordPress
  • 用万网做网站企业做网站怎么做
  • 比较好的网站开发教学网站专业做视频的网站有哪些
  • 户外旅游网站模板网站开发需要看相关书籍
  • 建设高端网站的公司企业营销网站建设公司
  • 重庆建设工程信息网站重庆企业网站建设报价