微服务介绍

简介: 本文介绍单体与微服务架构区别,阐述微服务定义、特征及优缺点,涵盖技术选型、部署方案与架构演进,帮助理解如何构建高内聚、低耦合、易扩展的分布式系统,为后续实践奠定理论基础。(238字)

1.单体应用与微服务架构区别
如上图左侧为单体应用架构。在传统单体应用中,所有功能模块都在一个工程中编码、部署,即使是集群部署,也只是单体应用的水平复制。
如上图右侧为微服务架构。在微服务架构的项目中,每个应用会按照领域模型划分进行业务、功能聚合,由此拆分后聚合的应用往往:模型高度统一、职责清晰且收敛、应用与应用(领域与领域)之间边界清晰,并且提升了每个应用的独立性、扩展性。
除了应用拆分维度,微服务架构也保证了每个应用可以使用独立语言开发、独立数据存储技术,只要能保持对外统一交互语言即可,存储模型差异如下:
见上图,应用拆分之后对应每个应用会独立、或共享一个数据库,数据库的拆分维度除了要考虑领域边界,还要更多的考虑每个数据库的QPS、TPS,避免高频写操作集中在一个DB,由此起到给数据库减压的功效。
基于上述分析,单体架构存在的问题主要集中在:功能混淆、边界模糊、维护成本高、可靠性差等角度,对于后续应用的升级、扩展同样存在瓶颈。因此随着互联网的发展,我们必须解决上述问题,而微服务就是这样一种架构模式。
2.什么是微服务
自2014年起,微服务架构由Martin Fowler、Adrain Cockcroft、Neal Ford等人接力进行介绍、完善、演进、实践后,一直维持着较高的热度直到现在,内容如下:
微服务架构是一种架构模式,它提倡将原本独立的单体应用,拆分成多个小型服务。这些小型服务各自独立运行,服务与服务间的通信采用轻量级通信机制(一般是基于HTTP协议的RESTful API),达到互相协调、互相配合的目的。被拆分后的服务都围绕着具体的业务进行构建,每个服务都能独立地进行开发、部署、扩展。由于相互独立,且采用轻量级通信机制,各个小型服务也能够使用不同的语言开发,也可以使用不同的数据存储技术。
微服务是一套经过漫长的架构演进、良好架构设计的分布式架构方案。从传统单体应用到分布式独立应用,从应用数据服务到引入缓存优化性能,从反向代理和CDN加速网站响应等等,技术架构不断演进的过程中,逐步出现前后端分离,数据读写分离,云原生、DDD领域驱动,最终孵化出如SpringCloud、SpringCloud Alibaba等成熟稳定的微服务架构方案。
微服务其主要特征:
• 服务自治:团队独立、技术独立、数据独立、部署独立
• 面向服务:微服务对外暴露业务接口,如RESTful API调用
• 单一职责:每个应用领域边界清晰,功能职责单一,无重复工作
3.微服务优缺点
3.1 优点
①易于开发维护
微服务基于领域模型拆分的应用,其内部模型高度统一,功能相对内聚,开发人员只需要对固定模型进行领域业务接口封装即可。
②技术栈开放
微服务因独立部署、独立开发,因此开发团队可以根据资深团队特点进行技术选型。如团队擅长关系型数据库则MySQL,擅长图形计算则Neo4j。
③升级错误隔离
A技术专项升级因单独部署,不再影响整个分布式架构中全部功能,只影响有接口交互的部分应用,而这种应用也可以通过灰度、服务降级、服务熔断的方式兼容和处理,不会因一个错误导致整个应用瘫痪。
3.2 缺点
①运维成本高
更多的服务意味着更多的运维投入,传统应用中只有一个应用,而为服务中,需要保障几十、上百个服务的正常运行和协作。
②调用链路复杂
微服务架构中,不可避免的会出现A服务依赖B服务,B服务依赖C服务,C继续依赖D服务的场景,一旦A调用异常,排查链路可能会从A->B->C->D,才能最终发现服务报错具体信息(后续skywalking可解决)。
③分布式事务问题
同上例A->B->C->D的长链路调用过程中,如果A先修改自己数据,但下游C却异常,此时预期是A回滚自己事务,这一点在单体应用因都是本地事务可以很好做到,但是分布式场景下却提升了复杂度(后续Seata可解决)。
④学习成本高
微服务学习除了需要一定基础之外:Spring、SpringMvc、MyBatis、SpringBoot、Maven、MySQL等,还需学习SpringCloud,中间件、缓存、Docker、文件服务器等多种技术,每一门学习都有很多难点需要克服。
4.如何实现微服务架构
至此我们了解了微服务的定义、优缺点,还总结了一些指导性的原则,下面我们进一步探讨下,如何实现微服务架构。
4.1 技术选型
1.开发框架
可使用SpringCloud作为微服务开发框架,因为SpringCloud为微服务架构提供了完整的解决方案,同时文档丰富,社区活跃,如下:
当然借助于SpringBoot+Nacos+Dubbo等其他技术架构也可以实现微服务架构,但因SpringCloud丰富且完整的解决方案体系,作为新手学习笔者在此更推荐依此学习,此学习过程中涉及的理论在今后的工作中也一定大有帮助。
2.运行平台
微服务并不绑定运行平台,将微服务部署在PC server、阿里云、AWS等云计算平台都是可以的。出于轻量、灵活、应用支撑及现在市场主流部署模式,笔者选择Docker作为部署容器。
4.2 通用微服务技术架构图
物理部署图、技术架构图、业务架构图、领域模型图、E-R图各自是什么?如何画?请移步:链接
5.总结
本文介绍了微服务基本概念、演变过程,主要的原则及优缺点,最后谈到了微服务的实现方案之一,作为引文此章节偏理论知识一些。后续笔者将借助具体技术实现带领读者一起逐步实现微服务架构体系。
思考问题
• 什么是微服务?
• 什么是微服务架构?
• 微服务架构演进过程?
6.推荐阅读资料
• 📎领域驱动设计:软件核心复杂性应对之道.pdf
• 📎大话设计模式.pdf

相关文章
|
算法 Java 关系型数据库
Springboot yml配置参数加密 ,jasypt自定义解密器(拓展篇)
Springboot yml配置参数加密 ,jasypt自定义解密器(拓展篇)
1660 0
Springboot yml配置参数加密 ,jasypt自定义解密器(拓展篇)
|
6月前
|
数据采集 人工智能 运维
AI运维核心解析:Agent、RAG、Skill、MCP概念与落地方法
本文系统解析AI智能运维四大核心技术:Agent(自主任务执行)、RAG(检索增强防幻觉)、Skill(实操能力接口)、MCP(多智能体协同协议),结合运维监控、故障排查等真实场景,提供从原理差异到落地四步法的完整实践路径,助力企业构建可闭环、可协同、可演进的智能运维体系。
|
弹性计算 固态存储 JavaScript
阿里云4核8G服务器ECS配置大全以及参考价格整理
阿里云4核8G服务器ECS提供多种实例规格选择,如通用算力型u1、计算型c8i、经济型e等,价格从每月216元至879元不等。当前u1实例年付仅955元,支持3M带宽下约30人并发访问,适用于日均万级IP应用,系统盘为20GB-40GB ESSD Entry云盘,性能稳定,适合企业及开发者使用。
1457 5
|
12月前
|
弹性计算 应用服务中间件 数据库
阿里云2核2G服务器够用吗?能支持多少人在线访问?
阿里云2核2G服务器适合个人博客、小型网站及轻量应用,3M带宽可支持日均千次访问,200M峰值带宽应对突发流量更佳。具体承载人数取决于应用类型、优化程度与带宽,高并发场景建议升级配置或使用CDN等优化手段提升性能。
1898 115
|
机器学习/深度学习 人工智能 编解码
快速生成商业级高清图!SimpleAR:复旦联合字节推出图像生成黑科技,5亿参数秒出高清大图
SimpleAR是复旦大学与字节Seed团队联合研发的自回归图像生成模型,仅用5亿参数即可生成1024×1024分辨率的高质量图像,在GenEval等基准测试中表现优异。
749 4
快速生成商业级高清图!SimpleAR:复旦联合字节推出图像生成黑科技,5亿参数秒出高清大图
|
存储 人工智能 缓存
运维智能体(SRE Agent)技术分级能力要求
本标准规范了运维智能体在场景应用、协同能力、能力建设及底座构建方面的技术要求,适用于公共与私有环境下的服务与产品。依据AI技术发展,定义了从初始级到优秀级的三级能力框架,涵盖感知、控制、行动等核心能力,推动运维智能化升级。
运维智能体(SRE Agent)技术分级能力要求
|
机器学习/深度学习 运维 监控
智能运维Agent:自动化运维的新范式
在数字化转型浪潮中,智能运维Agent正重塑运维模式。它融合人工智能与自动化技术,实现从被动响应到主动预防的转变。本文详解其四大核心功能:系统监控、故障诊断、容量规划与安全响应,探讨如何构建高效、可靠的自动化运维体系,助力企业实现7×24小时无人值守运维,推动运维效率与智能化水平全面提升。
3035 0
|
消息中间件 人工智能 监控
Go与定时任务
Go语言凭借其高效的并发能力和简洁的语法,广泛应用于分布式系统和云计算领域。本文从控制台Admin、触发器Trigger、调度器Scheduler、执行器Executor四方面,详解Go语言实现分布式定时任务的设计与代码示例。
386 0
|
Java Shell 开发工具
【Dockerfile】在openjdk镜像中添加常用命令工具
总的来说,Dockerfile提供了一种灵活的方式来创建和定制Docker镜像。通过在Dockerfile中添加常用的命令工具,我们可以创建一个满足我们需求的镜像,从而提高我们的工作效率。
476 15
|
运维 监控 安全
一文讲清质量管理5M1E分析法的底层逻辑
本文介绍了质量管理中的5M1E分析法,即从人、机、料、法、环、测六个方面系统分析质量波动原因,并提供具体管理方法与实操要点。通过整体联动与闭环管控,帮助企业实现质量管理的系统化与高效化,提升产品质量与稳定性。