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

沈阳网站建设培训/久久seo正规吗

沈阳网站建设培训,久久seo正规吗,怎么设计wordpress首页,怎么让百度收录我的网站当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。

还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软件堡垒愈发臃肿,扩展和维护变得非常困难。亚马逊意识到,单体架构已经严重影响到业务的发展。于是,决定将这个大堡垒拆分成小城堡,每个城堡通过通信接口互联,各自负责一个业务功能。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

这就是微服务架构的雏形。小城堡比大堡垒更容易扩展和维护,但运营成本也提高了。

于是亚马逊又有了新的想法:既然 cloud 可以提供无限的计算资源,为什么我们还要自己搭建并运营这些小城堡呢?无服务器架构应运而生,开发者只需要编写并上传代码,剩下的服务器运维完全交给云平台。

从单体、到微服务、再到无服务器,亚马逊架构的演变可谓曲折,但每一次转变都让业务更加灵活。本文将通过一个具体的案例分享从单体,到微服务,再到无服务器,应用架构的演进都经历了哪些技术模式。之后,我们将一起深入探讨微服务和五服务器这两种新型架构,借助亚马逊的实践分析如何帮助企业应对数字化浪潮,从根本上构筑起业务的弹性。

单体构架应用系统的痛

image.png

这是一个在线点单系统,我们称他为 FTGO。FTGO 是一个典型的企业级 Java 应用程序,此时 FTGO 是一个单体应用架构,它由多个业务模块所组成:餐厅管理,订单管理,交付管理,账单管理,付款管理,以及消息管理。所有的服务集成在一起,共用一个数据库。围绕业务模块的是各种适配器。前端通过 REST API,WEB UI 适配用户各种终端的处理请求。后端的适配器,如用于支付、消息、邮件系统提供接口,与外部的系统集成。 在 FTGO 初期,当应用程序相对较小的时候,单体架构体现了一些优势:

  • 开发简单—IDE 和其他开发工具都专注于构建一个单独的应用程序;
  • 运维简单—开发人员可编写端到端的测试, 用于启动测试程序, 调用 REST API 并使用 selenium 进行 UI 测试
  • 部署简单—开发人员需需要将 WAR 文件复制到安装了 Tomcat 的服务器上即可。

但是很快,开发人员就发现了这个单体架构的应用有着巨大的局限性。业务的增长,需要 FTGO 不停的更新和迭代新的功能,于是研发团队不断扩充,代码库日趋庞大,应用架构变得越来越复杂。这个给运维管理带来了新的难题:

image.png

开发团队因为系统的复杂性受到了限制。在这样一个单体应用架构中,对于开发者来说 FTGO 的架构显得非常复杂和笨重,很难全部搞明白。于是无论是修复 bug,还是部署新功能都显得异常困难。应用的复杂性还表现在单一的代码库也变得越来越巨大。每一次变更都会让这个单一的代码库变得更加复杂,这给开发者全面理解代码带来困难,不能很好的理解代码,就无法保证每次变更的正确性。

生产效率降低。任何变更的部署都需要重新构建整个应用程序,运行所有测试套件以确保没有任何回归,并重新部署整个应用程序。即使只是对自己拥有的一小段代码进行单行更改,你仍然需要通过这个重量级流程。在单体应用架构时代,亚马逊有一个中央团队,其唯一的工作就是将这个单体应用程序部署到生产中。

沟通和协作成本高。开发人员通过共享的发布管道推动变更,这就会在生命周期的许多环节产生摩擦。任何一个变更,开发人员都需要大量的团队协调工作,来确保他们所做的变更不会影响别人的代码。 如果你想升级共享代码库以利用新功能,你需要说服其他人同时升级--祝你好运!如果你想为自己的功能快速推送一个重要的修复,你仍然需要将它与其他人正在进行的修改合并。经历过单体架构的工程师们都知道 "合并周五"吧?或者更糟糕的 "合并周"。当你通过交付管道推送变更时,变更需要在队列中等待手工测试的完成。对于一家努力创新和竞争的快速成长型公司来说,这种开销和迟缓是不可接受的

应用的微服务架构

当单体变得过大而无法有效扩展时,我们就需要做些改变。比如拆分成微服务。

image.png

这是一个典型的微服务应用架构。我们可以看到:

  • 微服务架构隐藏了内部实现细节,在不改变整体应用架构的前提下,我们可以独立变更和部署每个微服务,来提高灵活性和速度。单个服务的变更,不会对用户产生影响。这解决了服务升级带来的业务影响和服务体验,同时也避免破坏性变更,提高了可靠性。
  • 微服务相互协作通过 API 暴露和网络通信,每个服务都可以独立扩展,你不需要一台大机器(或几台),多个虚拟机或容器就可以完成工作,每个微服务只负责自己的领域(减少代码中的耦合),每个微服务都有自己专用的数据库(没有数据耦合)。API 和网络通信实现了服务的解耦,并支持自动化。
  • 作为开发人员,理解微服务比理解整个单体服务容易的多,这促进了新技术的产生,提高了业务的敏捷性。

微服务之间的集成非常重要,有3种关键模式:

  • API 驱动模式
  • 事件驱动模式
  • 数据流模式

如果集成做好了, 微服务可以保持自治性。应用的向微服务架构改变,同时带来开发组织的改变:

  • 团队解耦,更小的团队独立架构、开发、部署和维护每个微服务,他们可灵活的选择工具来高效地自行发布。
  • 所有权是关键--每个团队服务都有一个所有者。所有者负责架构,所有者负责实施,所有者负责在生产中提供支持,所有者负责修复问题,所有者负责维护。
  • DevOps 原则--自动设置, 开发人员拥有生产支持.

image.png

微服务带来开发组织架构调整的前行者是亚马逊。

为了进一步提高业务的敏捷性,亚马逊将研发团队拆分成若干个“两个 pizza 可以喂饱的”小团队,每个“双 pizza 团队”都对其服务拥有完整的所有权和全部的责任。这意味着赋予团队自主决策的权力,然后信任他们对决策结果负责。如今,很多人将这种方法称为 DevOps,意思是让同一个团队同时负责服务的开发和运维。通过构建这种高度自治和负责任的小型团队,企业可以实现产品和技术的快速迭代。

微服务架构应用的构建,我们建议从应用设计入手。开发者可以借助 Domain Driven Design 来从业务角度进行规划和设计。

Domain Driven Design,简称 DDD, 它是一种软件开发的设计方法论,核心思想是通过领域建模对业务领域进行抽象和概念化,以此驱动软件设计。

image.png

这里有两个概念需要说明:
领域(Domain):是指软件要解决的主要问题领域。
领域模型(Domain Model):对领域进行抽象化建模的结果,反映业务领域的概念及业务规则。

DDD 提倡多层架构和明确定义的领域接口,来实现松耦合和高内聚的设计。DDD 也提倡语言统一,域专用语言、模型语言、代码语言保持一致。消除开发人员和领域专家在语言、理解等方面的鸿沟,实现软件系统和业务需求的高度契合。

image.png

当我们按照业务能力将业务拆成多个业务能力域,并构建每个域的业务模型,我们就可以通过微服务来设计这些各自独立且彼此依赖的业务模型。由于微服务是最小功能服务,可单独部署,用API交互,因此实现更广泛的用例。每个微服务都有自己的数据存储 ,围绕业务能力进行组织 。他们的状态是外部化 ,且每个微服务可选择适合他们的技术 。

小结

亚马逊在过去几年中已经大规模地将其基础设施转向微服务架构,目前采用亚马逊云上的多个服务来实现微服务,如使用 Amazon ECS、Amazon Lambda 来运行服务,Amazon API Gateway 提供 API 访问,Amazon SQS、Amazon SNS 用于服务间异步通信….这些服务充分利用云计算的优势,帮助亚马逊构建灵活、可靠、易于维护的分布式系统。

文章来源:
https://dev.amazoncloud.cn/column/article/65139d20659184378dd2c40c?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

相关文章:

应用架构的演进:亚马逊的微服务实践

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…...

leetCode 55.跳跃游戏 贪心算法

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入…...

CF505B Mr. Kitayuta‘s Colorful Graph

Mr. Kitayuta’s Colorful Graph 题面翻译 给出一个 n n n 个点, m m m 条边的无向图,每条边上是有颜色的。有 q q q 组询问 对于第 i i i 组询问,给出点对 u i , v i u_i,v_i ui​,vi​。求有多少种颜色 c c c 满足:有至…...

c#设计模式-结构型模式 之 组合模式

🚀简介 组合模式又名部分整体模式,是一种 结构型设计模式 ,是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 ,用来表示部分以及整体层,它可以让你将对象组合成树形结构,并且…...

【Rust日报】2023-09-30 使用Rust做web抓取

CockroachDB 用rust重新实现 嘿,伙计们,我在 Rust 中实现了一个分布式 SQL 数据库。它就像 CockroachDB 和谷歌Google Spanner。告诉我你的想法。 注意: 这不是生产级别的数据库,这是一个以学习为目的的项目。有许多特性,但是缺少…...

【密评】商用密码应用安全性评估从业人员考核题库(三)

商用密码应用安全性评估从业人员考核题库(三) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 501 多项选择题 《个人信息保护法》要求个人信息处理者应当采取哪些…...

MySQL进阶_查询优化和索引优化

文章目录 第一节、索引失效案例1.1 数据准备1.2 全值匹配我最爱1.3 最佳左前缀法则 第一节、索引失效案例 可以从以下维度对数据库进行优化: 索引失效、没有充分利用到索引–索引建立关联查询太多JOIN (设计缺陷或不得已的需求)–SQL优化服务器调优及各个参数设置…...

Hadoop2复安装过程详细步骤

1、在vmware中更改了虚拟机的网络类型,--->NAT方式,(虚拟交换机的ip可以从vmvare的edit-->vertual network editor看到) 2、根据这个交换机(网关)的地址,来设置我们的客户端windows7的ip&…...

【Java-LangChain:面向开发者的提示工程-7】文本扩展

第七章 文本扩展 扩展是将短文本(例如一组说明或主题列表)输入到大型语言模型中,让模型生成更长的文本(例如基于某个主题的电子邮件或论文)。这种应用是一把双刃剑,好处例如将大型语言模型用作头脑风暴的伙…...

竞赛 基于设深度学习的人脸性别年龄识别系统

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习机器视觉的…...

从技能需求到就业前景,了解前端和后端开发的优缺点和个人选择

文章目录 每日一句正能量一、引言前端开发后端开发 二、两者的对比分析三、技能转换和跨领域工作四:介绍全栈开发后记 每日一句正能量 命运决定的不是你的人生,能决定你人生的只有自己。 一、引言 前端和后端是Web开发中两个不可或缺的领域。前端开发主…...

Flutter笔记:AnimationMean、AnimationMax 和 AnimationMin 三个类的用法

Flutter笔记 AnimationMean、AnimationMax 和 AnimationMin三个类的用法 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/…...

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gogs介绍2.1 Gogs简介2.2 Gogs特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、远程登录华为云云耀云…...

操作系统--分页存储管理

一、概念介绍 分页存储:一是分内存地址,二是分逻辑地址。 1.分内存地址 将内存空间分为一个个大小相等的分区。比如,每个分区4KB。 每个分区就是一个“页框”,每个页框有个编号,即“页框号”,“页框号”…...

【算法练习Day10】有效的括号删除字符串中的所有相邻重复项逆波兰表达式求值

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 有效的括号删除字符串中的所…...

10.1 校招 实习 内推 面经

绿泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、自动驾驶一周资讯 - 苹果汽车项目泡汤?纵目科技IPO终止,腾讯与岚图汽车合作升级,158亿元现金收购比亚迪“史上最大”并购案 自动驾驶一周资讯 - 苹果汽车…...

Redis中Set类型的操作

Set的结构与list相似,但底层存储结构是hashtable,因此它的值是唯一的,同时添加的顺序与保存的顺序并不一致。每一个Set类型的key中可以存储2^32-1个元素。 一、应用场景 1、保存用户的收藏 在小说网站中保存用户的收藏,收藏 的小…...

正确完成实时 AI

发表于 构建真实世界的实时 AI 一、说明 我们知道,当前的AI进展是扎根于历史数据,这就造成一个事实,模型总是赶不上实时进展,模型的洞察力不够尖锐,或者,时间损失等,本篇对这一系列AI的短板展开…...

深度学习笔记之线性代数

深度学习笔记之线性代数 一、向量 在数学表示法中,向量通常记为粗体小写的符号(例如,x,y,z)当向量表示数据集中的样本时,它们的值具有一定的现实意义。例如研究医院患者可能面临的心脏病发作风…...

Python与Scrapy:构建强大的网络爬虫

网络爬虫是一种用于自动化获取互联网信息的工具,在数据采集和处理方面具有重要的作用。Python语言和Scrapy框架是构建强大网络爬虫的理想选择。本文将分享使用Python和Scrapy构建强大的网络爬虫的方法和技巧,帮助您快速入门并实现实际操作价值。 一、Pyt…...

kind 安装 k8s 集群

在某些时候可能需要快速的部署一个k8s集群用于测试,不想部署复杂的k8s集群环境,这个时候我们就可以使用kind来部署一个k8s集群了,下面是使用kind部署的过程 一、安装单节点集群 1、下载kind二进制文件 [rootlocalhost knid]# curl -Lo ./kin…...

Leetcode 2871. Split Array Into Maximum Number of Subarrays

Leetcode 2871. Split Array Into Maximum Number of Subarrays 1. 解题思路2. 代码实现 题目链接:2871. Split Array Into Maximum Number of Subarrays 1. 解题思路 这一题实现上其实还是比较简单的,就是一个贪婪算法,主要就是思路上需要…...

Java基础---第十三篇

系列文章目录 文章目录 系列文章目录一、有数组了为什么还要搞个 ArrayList 呢?二、说说什么是 fail-fast?三、说说Hashtable 与 HashMap 的区别一、有数组了为什么还要搞个 ArrayList 呢? 通常我们在使用的时候,如果在不明确要插入多少数据的情况下,普通数组就很尴尬了,…...

Java 文档注释

Java 文档注释 目录 Java 文档注释 javadoc 标签 文档注释 javadoc输出什么 实例 Java只是三种注释方式。前两种分别是// 和/* */,第三种被称作说明注释,它以/** 开始,以 */结束。 说明注释允许你在程序中嵌入关于程序的信息。你可以使…...

【多媒体技术与实践】多媒体计算机系统概述

数码相机是利用___感受光信号, 使转换为电信号,再经模/数转换变成数字信号,存储在相机内部的存储器中。 选择一项: a. RGB b. OCR c. CCD d. MPEG 正确答案是:CCD 最基本的多媒体计算机是指安装了_部件的计算机。…...

DirectX 3D C++ 圆柱体的渲染(源代码)

作业内容 请勿抄袭 代码功能&#xff1a;渲染一个绕中心轴自转的圆柱体。要求该圆柱体高度为3.0&#xff0c;半径为0.5。 #include <windows.h> #include <d3d11.h> #include <d3dx11.h> #include <d3dcompiler.h> #include <xnamath.h> #incl…...

搭建前端框架

在终端进入web目录&#xff0c;然后创建vuecrud工程 创建工程并引入ElementUI和axios手把手教学>传送门:VueCLI脚手架搭建...

2310C++构造对象

原文 本文展示一个构造对象方式,用户无需显式调用构造器.对有参构造器类,该实现在构造改对象时传递默认值来构造. 当然用户也可指定(绑定)某个参数的值.实现思路参考boost-ext/di的实现.看下示例: 构 成员{整 x10; }; 构 成员1{整 x11; }; 类 例子1{ 公:例子1(成员 x,成员1 x…...

nginx多文件组织

背景&#xff1a; nginx的话&#xff0c;有时候&#xff0c;想部署多个配置&#xff0c;比如&#xff1a;使用不同的端口配置不同的web工程。 比如&#xff1a;8081部署&#xff1a;项目1的web页面。 8082部署&#xff1a;项目2的web页面。 1)nginx.conf worker_processes…...

扩容LVM卷导致lvm元数据丢失的恢复过程

一、问题描述 因某次MySQL binlog占用过高扩容时&#xff0c;是直接对云盘操作&#xff0c;而扩容直接操作了lvm卷而未操作云盘分区&#xff0c;并随后执行了扩容的partprobe&#xff0c;resize2fs卷等操作&#xff1b;最后&#xff0c;显示并未扩容成功&#xff0c;重启系统后…...