什么是微服务架构?

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

备战2022春招或暑期实习,祝大家每天进步亿点点!

本专栏将会两个月持续不断输出Spring Cloud Netflix/Alibaba 全系列知识点,力求达到大厂面试和企业级开发水准

关于《Redis入门到精通》、 《并发编程》、《Java小知识100例》等知识点可以参考我的往期博客:《Redis从入门到精通》系列 《并发编程》系列 《Java小知识100例》

相信自己,越活越坚强,活着就该逢山开路,遇水架桥!生活,你给我压力,我还你奇迹!

image.png1、简介

微服务是一个互联网应用行业大家都不陌生的话题,无论你是摸爬滚打多年的职场老兵,还是出入社会的职场萌新,只要谈及到微服务这三个字,我相信你都能侃侃而谈,指不定你还有自己独特的见解。(🌲🌲在这里小捌欢迎大家在评论区或私信给我留言,我们一起探讨微服务的奥秘!!!🌲🌲)


微服务它是怎么来的(小捌这里在网上搜刮了一些资料)


2011年5月,微服务这个概念最早在意大利威尼斯的一个软件架构会议上被提出,此时微服务用于描述一些作为通用架构风格的设计原则。

2012年3月,ThougthWorks(思特沃克)公司的首席咨询师James Lewis在波兰克拉科夫举行的“第33届学术会议”上,做了题为“Microservices-Java,the Unix Way”的演讲,这次演讲他主要谈及:康威定律、DDD、服务的单一职责原则等微服务特性

随后同年,Fred George在Agile India技术分享大会上正式提出微服务架构,他通过讲解自己所在团队如果拆分服务,如何通过MQ(Kafka)进行应用间的解耦,自此微服务架构就真正诞生了。

微服务虽然在现在非常火,但是微服务并不是一切架构建设的“银弹”!是否应该选择微服架构作为新项目建设的技术架构,或者原本的老项目是否应该迭代为微服务架构,这些问题都需要结合实际的业务场景、功能需求、技术和运维团队实力、基础设施是否足够扎实等多方面综合考虑之后再做定夺。总之强扭的瓜不甜,生搬硬套肯定是不香的!


微服务架构已经发展了近十余年了,现在国际上关于微服务架构的解决方案不胜其数;而我们常见的解决方案有Spring Cloud Netflix和Spring Cloud Alibaba,虽然微服务架构到现在为止发展的十分成熟,但是它也并不是一蹴而就的,其中的知识点也非常多!🔫小捌将会在2021年最后两个月死磕Spring Cloud,以下两张图小捌会从应用、源码等方面深入研究,需要的小伙伴可以关注小捌,我们一起进步呀!!!🔫


Spring Cloud Netflix 相关组件image.png2、架构演进

微服务架构本身发展了近十年,而之所以诞生了微服务就需要了解一下服务架构演进的历史啦!服务架构大致经历了单体架构、垂直架构、SOA架构和微服务架构的演进历程,接下来我们一起看看这些架构!


2.1 单体架构

单体架构指的是,将整个系统所有的功能都打包成一个jar或war包、并且运行在一个进程中。相信这种架构大家都非常熟悉,小捌是18年开始学Java每天撸的就是单体架构应用,尽管那个时候微服务在国内已经很火了,但是我相信初学者都是这么过来的啦!


单体架构虽然开发迅速,但是它存在很多不足之处,这些不足之处我相信经历过的都懂(😖😖我相信很多小伙伴去到公司后,如果上来就让你熟悉一个几十万行代码的单体架构应用,且不说业务多复杂,代码逻辑就能导致三高发作了,多么痛的领悟!!!)。


单体架构不足之处:


代码耦合严重。修改代码时牵一发而动全身,经常出现改一个bug导致更多bug的情况。在当下效率至上的工作氛围下,单体架构是严重影响开发效率的!

部署速度慢、对系统影响大。单体架构的每次发版部署都需要一切重来,整个服务都会不可用,相当于JVM中常说的STO(stop the world);而且过大的war包在部署时编译、启动都会很缓慢!

业务扩展困难。单体架构代码耦合、业务也容易耦合,这会导致新增需求时根本无法迅速扩展。

扩容苦难。当单体架构服务性能出现问题时,需要进行服务水平扩容,单体架构在这种情况下显得很无力,只能将整个应用都进行扩容,但是往往应用中只有一小部分性能出现问题。

2.2 垂直架构

垂直架构在一定程度上减少了单体架构的代码、业务耦合度,提升了应用程序的伸缩性。垂直架构采取分层的思想,将一个应用程序从结构上拆分成多个维度,最常见的垂直架构就是MVC分层结构的架构模式。垂直架构虽然带来了一定的好处,但是它并未解决单体架构的大部分(几乎所有)问题。


2.3 SOA架构

SOA(Service-Oriented Architecture)面向服务架构,它的核心思想就是服务化,服务在SOA架构中,是基本单元。SOA架构通过将系统服务化,通过约定接口进行服务调用、达到资源共享的目的。

SOA架构主要解决了以下问题:


打破数据孤岛问题。以前的单体架构都是烟囱,系统之间完全没有任何信息交互,这导致了企业内部各个业务系统之间形成了非常严重的数据孤岛问题。基于SOA架构系统服务化之后,通过中立性接口进行服务之间调用,能够达到共享资源、交互数据。数据就是金钱,数据积淀对一个企业的发展至关重要!

应用解耦。服务化使得系统的进行了业务层面的拆分,原本一个笨重的大系统,根据业务功能拆分为不同的服务单元,这样在无形中将应用进行了解耦。

服务重用。在单体架构中,我们只能复用代码,无法复用某一个系统(服务)。经过SOA架构改造后的系统,只要设计的足够好,共享业务是完全可以实现的。比如电商项目中的用户服务、库存服务、商品服务都可以实现一次开发多系统重用。

SOA架构的发展,推动了RPC技术和MQ技术的飞速发展,这也为后来的微服务之间的通信奠定了基础!所以小捌认为微服务架构和SOA架构难舍难分,且微服务架构站在了SOA架构这个巨人的肩膀上。



2.4 微服务架构

微服务架构与SOA架构一样,服务是其架构设计中的基本单元。两者的区别在于侧重点不一样:


微服务侧重服务细粒度的拆分

SOA侧重服务化后服务的可复用性

那是不是说微服务其实就是升级版的SOA呢?小捌认为也不完全是,SOA中最常见的架构部分就是ESB(Enterprise Service Bus),ESB注重与服务交互和服务集成。微服务最关注的是服务的自治,微服务让整个架构体系更加智能、简单、方便、可靠;比如微服务推动了DevOps的快速发展、推动了云原生的快速发展等等。(不知道小捌这种理解对不对,大家一起讨论哈!!!)


现如今的微服务,不在是简简单单的将服务拆分,而是关注与服务之间的通信、服务隔离、功能降级、服务扩展、可伸缩性、敏捷开发、快速部署、高可用、高性能、分布式等等。因此这些技术名词带来了非常庞大的技术生态,加上技术本身更新就非常的迅速,对程序员来说确实是一个不小的挑战。但是别怕,小捌和大家一起学习,一起进步!!!关注我,后续两个月持续输出Spring Cloud生态相关知识。


“我们遇到什么困难,也不要怕,微笑着面对它。消除恐惧的最好办法就是面对恐惧,坚持,才是胜利;加油,奥利给!”

image.png


image.png

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