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

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

一、软件架构的发展历程


互联网产品常常面临庞大的用户量,日均数十亿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的演进过程。

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

目录
相关文章
|
6天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
5天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
9天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
48 6
|
9天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
26 1
|
16天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
5天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
16 1
服务架构的演进:从单体到微服务的探索之旅
|
4天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
24 5
|
7天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
25 7
|
5天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
19 5
|
5天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####