应用程序的架构演变,微服务不是终点

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在信息量剧增的大背景下,新的问题层出不穷,变化多端而且变形的速度越来越快,新形态的存续时间越来越短。这个时候,创新业务模式、创新技术架构,成为必须。

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

近些年来,应用程序的架构一直在演变,这个变化过程是由什么力量所驱动呢?它的变化方向又是由什么所决定的呢?开宗明义,应用程序架构,作为一个因变量,它的自变量是互联网带来的信息量剧增。

为什么这么说?我们先看下信息量的增长态势。

举一个例子,维基百科,它本质上是百科全书结合互联网所产生的新形态。全球上百万人的线上协作成就了它。它一改纸质《大英百科全书》等由专家编写、校对的传统,访问网站的普通人,都可以自由编辑上面的词条。截止目前,整个维基百科网站的总编辑次数超过10亿次,所收录的词条数超过450万篇。对比纸质《大英百科全书》,其条目数是10万篇,与维基百科有几十倍的落差,由于它是纸质的,更新速度也远不及维基百科。这意味着因为互联网的出现,单百科这一项,信息量就有几十、上百倍爆炸式增长。

再举一个例子,淘宝,它本质上是商品交易市场结合互联网的新形态。截止目前,淘宝的卖家数超过百万,注册买家数超过5亿,在线商品数超过8亿,每天有几千万的访客,每分钟可以达成几万笔商品交易,供给侧和需求侧的规模史无前例。这些数字是传统线下商圈所无法想象、无法比拟的。这意味着因为互联网的出现,单零售这一项,信息量有了几万、几十万倍的爆炸式增长。

不积跬步无以至千里,不积小流无以至江海。量变引发质变,而量的变化需要一个过程。我们回顾信息量变化的过程,发现它的变化呈现加速度的趋势,是指数级变化。具体而言,把信息量的变化剖判开来,分为供给侧和需求侧。作为变化中的供给侧,也就是提供服务的一方,若想在信息量增长的洪流中不被淘汰、并谋求最大利益,即挣更多需求侧的钱。就必须与其他供给侧激烈竞争,致胜的关键是通过创新来进行营销手段的丰富和服务能力的升级。

以电商平台为例,我们看它变化出了怎样的营销手段。

  • 丰富促销活动,如秒杀、荷兰式拍卖、传统节日和线上购物节的打折、满减、拼团等等。
  • 扩大营销入口数量,增加移动端,如App、微商城、微信小程序、支付宝小程序。
  • 精准营销。利用历史数据对用户进行分析,提供个性化服务,如定向优惠券、商品推荐。甚至,进行大数据杀熟。
  • 其他种种。

这些营销手段的落地,需要技术架构有力支撑。由于可扩展性、可用性、可靠性及应对海量并发等能力的不足,单体应用,明显扛不住了。这个形势下,为寻求问题的解决,新架构势必产生,微服务架构就是其中的一种。

信息量的增加,导致了竞争的加剧,进而导致了业务模式的变化,又进而导致了技术架构的变化,即应用程序架构的变化。自此,从自变量到因变量的逻辑线,打通了。

微服务架构是一个怎样的架构?我们知道,任何创新,都是要素的拆分和重新组合。我们看应用程序是如何拆分的,又是如何组合的,就能看清创新的面目。

还是以电商平台为例,它的应用可以这样拆分。
_1
这个拆分过程中,大量的冗余代码被删除。这些拆出来的各个微服务,构成一个控制层。所有的前端,都可以从这个控制层获取所需的数据。

同时,共用的数据库也被拆分,所有持久化层相互隔离,由各个服务自己负责。另外,为了提高系统的实时性,还加入了消息队列机制。

新的组合方式,由于变得复杂化,也带来了新问题。各个微服务之间,构成了彼此依赖的关系。一个服务发生故障,就可能会产生雪崩效用,导致整个系统故障。而且,更要命的是,定位故障点变得非常困难。之前的单体应用,排查问题通常是看一下日志,研究错误信息和调用堆栈。现在可怎么办?

可以从两方面入手,一方面尽量减少故障发生的概率,另一方面降低故障造成的影响。减少故障发生的概率,可以通过监控来实现。比如,采用Prometheus作为指标采集器,用Grafana配置监控界面和邮件告警。同时用链路跟踪,来定位问题。通过引入网关,来实现权限控制和服务治理。

在降低故障造成的影响方面,有熔断、服务降级、限流三大法宝。玩法也是丰富多样。

总结

在信息量剧增的大背景下,新的问题层出不穷,变化多端而且变形的速度越来越快,新形态的存续时间越来越短。这个时候,创新业务模式、创新技术架构,成为必须。而创新的关键,是发现变化最快的那个组件。把它和其他关键组件拆分出来,进行重新的组合。这一过程,附带产生的问题,则需要,引入其他模块,来做配套。微服务不是技术架构演变的终点,Serverless、FaaS等等这些还在台下等着粉墨登场,书写新的时代。

相关文章
|
1天前
|
运维 监控 Docker
使用Docker进行微服务架构的部署
【5月更文挑战第18天】本文探讨了如何使用Docker进行微服务架构部署,介绍了Docker的基本概念,如容器化平台和核心组件,以及它与微服务的关系。通过Docker,每个微服务可独立运行在容器中,便于构建、测试和部署。文章详细阐述了使用Docker部署微服务的步骤,包括定义服务、编写Dockerfile、构建镜像、运行容器、配置服务通信、监控和日志管理以及扩展和更新。Docker为微服务提供了可移植、可扩展的解决方案,是现代微服务架构的理想选择。
|
1天前
|
敏捷开发 监控 API
构建高效微服务架构:从理论到实践
【5月更文挑战第18天】 在当今快速发展的软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序分解为一系列小型、独立的服务来提高系统的可伸缩性、弹性和维护性。本文旨在探讨如何从理论走向实践,构建一个高效的微服务架构。文章首先介绍微服务的基本概念和优势,然后详细讨论了在设计和部署微服务时需要考虑的关键因素,包括服务划分、通信机制、数据一致性、容错处理和监控策略。最后,结合具体案例分析,展示如何在现实世界中应用这些原则,确保微服务架构的高效运行。
|
1天前
|
存储 弹性计算 运维
探索微服务架构下的服务治理
【5月更文挑战第18天】 在当今软件工程领域,微服务架构因其灵活性、可扩展性以及促进团队协作等优势而受到广泛青睐。然而,随着系统规模的增长和服务数量的膨胀,服务治理成为确保系统稳定性和高效性的关键因素。本文将深入探讨微服务环境下的服务治理实践,包括服务发现、配置管理、负载均衡、故障处理等关键方面,旨在为开发者提供一套行之有效的服务治理策略。
|
2天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第18天】 随着现代软件开发的复杂性日益增长,传统的单体应用架构已难以满足快速迭代和灵活部署的需求。本文聚焦于一种新兴的解决方案——微服务架构,探讨其如何为后端开发带来革命性的改变。我们将深入分析微服务的核心概念、优势与挑战,并通过具体案例来阐述如何在实际项目中实施微服务架构。文章旨在为开发者提供一种系统化的方法,帮助他们理解并应用微服务架构,以提升系统的可维护性、扩展性和技术敏捷性。
11 2
|
2天前
|
测试技术 持续交付 API
构建高效的微服务架构:后端开发的现代实践
【5月更文挑战第18天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和容错能力的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、技术栈选择以及实施过程中的挑战与对策。通过对微服务架构实践的详细剖析,旨在为后端开发人员提供一套构建和维护高效微服务系统的实用指南。
|
2天前
|
缓存 算法 Apache
微服务架构下的服务发现与注册机制
【5月更文挑战第18天】 随着现代软件系统向着分布式和微服务架构演进,服务发现与注册成为确保系统弹性和可伸缩性的关键因素。本文将探讨在微服务环境下实现服务发现与注册的模式,分析其必要性,并深入讨论常见的解决方案以及面临的挑战。文中不仅介绍了服务发现的基本原理和流程,还对流行的服务发现工具如Consul、Etcd和Zookeeper进行了比较,最后提出了一套优化策略以增强系统的鲁棒性和性能。
|
2天前
|
运维 负载均衡 监控
探索微服务架构下的服务网格
【5月更文挑战第17天】 在当代软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选模式。然而,随之而来的复杂性问题也日益凸显,特别是在服务间的通信管理上。服务网格(Service Mesh)作为一种新兴的解决方案,专门处理服务到服务的通信问题,旨在提供一种更加智能和动态的方式来管理微服务环境中的流量和服务依赖。本文将深入探讨服务网格的概念、优势以及如何在微服务架构中实现高效通信。
|
2天前
|
消息中间件 分布式计算 中间件
秀出天际!阿里甩出的988页分布式微服务架构进阶神仙手册我粉了
秀出天际!阿里甩出的988页分布式微服务架构进阶神仙手册我粉了
|
4天前
|
SpringCloudAlibaba Dubbo 应用服务中间件
【微服务】微服务初步认识 - 微服务技术如何学习 · 认识微服务架构
【微服务】微服务初步认识 - 微服务技术如何学习 · 认识微服务架构
12 0
|
2天前
|
Kubernetes API 数据库
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第17天】 随着云计算的普及和容器化技术的成熟,微服务架构已成为企业软件开发的首选模式。该架构通过将大型应用程序拆分为一系列小型、自治的服务来提供灵活性和可扩展性。本文将探讨微服务架构的关键概念,包括服务的细粒度划分、独立部署、以及如何通过容器编排实现高可用性。同时,我们将讨论微服务实施的最佳实践和面临的挑战,为后端开发者提供构建和维护微服务系统的实用指南。
http://www.vxiaotou.com