微服务系列:互联网架构演进

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务系列:互联网架构演进

一、软件架构的发展历程


互联网产品常常面临庞大的用户量,日均数十亿PV的高并发,PB级别的数据存储等问题的挑战,同时要求保证系统的高可用和弹性伸缩,并且能够根据需要进行快速迭代扩展,这些都对于系统架构提出了很高的要求。


互联网架构从简到繁的演进经历了单体架构-分布式架构-SOA架构-微服务架构以及最新的service mesh的演进过程。

34.png


二、单体架构


早期互联网产品用户量少,并发量低,数据量小,多数只需要单个应用服务器可以满足需要,而数据库和文件服务部署在外部单个服务器上,这就是最早互联网架构,架构图如下所示。

33.png

单体应用一般都是采用MVC三层结构,在一个单独的项目中进行开发,部署的时候会打包成一个war包发布到web容器中,如tomcat。

32.png

单体架构的优缺点:

优点:容易开发、部署和测试

缺点:大型业务复杂的单体应用系统耦合性高、技术选型单一、开发效率低下。

PS:简单的小应用还是单体结构最香,所以对于初创型小项目还是推荐优先采用单体应用结构。任何架构的选择都不能脱离实际的业务场景。


随着用户规模和业务量的不断上涨,单个应用服务器将出现性能瓶颈,对于PB级的数据和高并发用户大流量访问,单一或者主备的数据库都已经不能满足需求。对于数据库存储量大破局思路是在垂直方向进行拆分即分库,水平方向进行拆分即分表。对于架构来说也是同理,可分为功能维度上即水平方向进行拆分和业务维度即垂直方向进行拆分。如下图所示:

31.png


三、分布式架构


1、垂直划分

按照业务垂直划分,每个业务都是单体架构,通过API互相调用。

30.png


2、水平拆分

29.png

水平分层架构从功能纬度将应用进行水平方向物理分成多个独立的进程包含:


1.网关层


2.业务逻辑层


3.数据访问层


4.数据存储层


每层直接逻辑解耦


四、SOA架构


SOA架构即从垂直方向上进行拆分,如下图所示:

28.png

基于SOA的系统架构实现了松耦合,系统之间通过服务接口(Service API)和中心化管理的企业服务总线(ESB)进行交互, 每个服务从本质上还是单体服务,对ESB严重依赖。


五、微服务架构


1、微服务架构定义

微服务架构在某种程度上是SOA架构的进一步的发展。


微服务目前并没有比较官方的定义。微服务 Microservices 之父,马丁.福勒,对微服务大概的概述如下:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.


微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。

另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。

27.png

微服务架构适用于项目的快速迭代及持续交付。


## 2、微服务架构特点

26.png

## 3、微服务需要解决的问题

25.png


## 4、微服务实现方案

目前最流行的两种微服务解决方案是SpringCloud和Dubbo。


六、服务网格架构


微服务好处自然很多,但是随着应用的越来越大,微服务暴露出来的问题也就随之而来了,微服务越来越多,管理越来越麻烦。特别是要你部署一套新环境的时候,随之而来的服务发现、负载均衡、Trace跟踪、流量管理、安全认证等等问题。


当然随着微服务的不断发展,微服务的生态的不断完善,新的微服务框架 Service Mesh 的出现就是为了解决这一系列问题。


1、服务网格定义

Service Mesh 是一个基础设施层,其独立运行在应用服务之外,提供应用服务之间安全、可靠、高效的通信,并为服务通信实现了微服务运行所需的基本组件功能,包括服务注册发现、负载均衡、故障恢复、监控、权限控制等等。Service Mesh 的中文译为 “服务网格”。

24.png

服务网格是一个用于处理服务间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求。在实践中,服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。


一个典型的 Service Mesh 部署网络结构图

23.png

其中绿色方块为应用服务,蓝色方块为 Sidecar Proxy,应用服务之间通过 Sidecar Proxy 进行通信,整个服务通信形成图中的蓝色网络连线,图中所有蓝色部分就形成了 Service Mesh。


2、服务网格特点

首先第一个,服务网格是抽象的,实际上是抽象出了一个基础设施层,在应用之外。其次,功能是实现请求的可靠传递。部署上体现为轻量级的网络代理。最后一个关键词是,对应用程序透明。

22.png


3、为什么需要 Service Mesh?

最主要的理由来自于 Service Mesh 在提供微服务框架功能的同时,它是一个独立运行在应用服务之外的模块。这带来的好处就是应用服务不再需要为接入微服务框架而在代码和配置中添加繁多的依赖库和依赖配置项,实现了微服务框架和应用服务之间的解耦,让应用服务代码更加纯粹地去实现自己的业务逻辑,能够更加轻松地接入微服务框架,享受微服务框架带来的各种服务治理功能。


4、Servcie Mesh 的整体集成解决方案

Service Mesh 主要解决的是微服务之间的网络通信交互,随着业务服务增加,整个 Service Mesh 会变得庞大和复杂之后,这个时候需要对 Service Mesh 的管理功能进行抽象出来,从而满足丰富的微服务运营需求。


目前两款流行的 Servcie Mesh 开源软件 Istio 和 Linkerd 都可以直接在 kubernetes 中集成,其中 Linkerd 已经成为 CNCF 成员。


更多详细介绍可以查看:Service Mesh (服务网格) 入门


总结


本文主要介绍了互联网架构从简到繁的演进经历了单体架构-分布式架构-SOA架构-微服务架构以及最新的service mesh的演进过程。

值得注意的是,所有系统架构都要结合实际业务场景来考量,没有最好的架构,只有最适合当前业务场景的架构。

目录
相关文章
|
22天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
21天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
142 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
20天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
150 36
微服务架构解析:跨越传统架构的技术革命
|
23天前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
54 8
|
1月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
54 1
服务架构的演进:从单体到微服务的探索之旅
|
28天前
|
消息中间件 运维 Kubernetes
后端架构演进:从单体到微服务####
本文将探讨后端架构的演变过程,重点分析从传统的单体架构向现代微服务架构的转变。通过实际案例和理论解析,揭示这一转变背后的技术驱动力、挑战及最佳实践。文章还将讨论在采用微服务架构时需考虑的关键因素,包括服务划分、通信机制、数据管理以及部署策略,旨在为读者提供一个全面的架构转型视角。 ####
36 1
|
1月前
|
弹性计算 运维 开发者
后端架构优化:微服务与容器化的协同进化
在现代软件开发中,后端架构的优化是提高系统性能和可维护性的关键。本文探讨了微服务架构与容器化技术如何相辅相成,共同推动后端系统的高效运行。通过分析两者的优势和挑战,我们提出了一系列最佳实践策略,旨在帮助开发者构建更加灵活、可扩展的后端服务。
|
1月前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####