微服务概述

简介: 本文介绍单体架构与微服务架构的区别,阐述微服务的定义、核心特征及优缺点,涵盖技术选型、部署方案与常见问题,帮助读者理解微服务演进逻辑,为后续实践打下理论基础。(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.总结 本文介绍了微服务基本概念、演变过程,主要的原则及优缺点,最后谈到了微服务的实现方案之一,作为引文此章节偏理论知识一些。后续笔者将借助具体技术实现带领读者一起逐步实现微服务架构体系。

相关文章
|
3天前
|
存储 人工智能 JSON
构建AI智能体:七十五、用扣子平台创建工作流:从自动化到智能化的进阶之路
本文介绍了在扣子平台创建工作流的完整流程。工作流通过可视化节点连接实现复杂任务自动化,具有低代码优势。以"多功能助手"智能体为例,详细演示了如何创建意图识别工作流:包括设置主节点、关联子流程、匹配插件、测试运行等步骤。重点解决了天气查询等场景中的参数传递问题,通过大模型节点实现格式转换。最终测试表明,该工作流能准确识别用户意图(天气/新闻/图片)并调用相应插件返回结果。文章强调工作流将复杂任务标准化处理,提升了AI代理的可靠性和处理能力上限,是连接简单问答与复杂业务的有效桥梁。
156 6
|
6天前
|
传感器 人工智能 算法
银行业智慧转型:服务机器人核心技术解析与主流产品选型指南
银行服务机器人正从“玩具”迈向“数字员工”,依赖垂直大模型+RAG、多传感器SLAM导航、Agentic AI任务拆解及隐私计算等核心技术。猎户星空全栈自研均衡全面,优必选拟人交互突出,科大讯飞语音领先,云迹科技专精物流配送。选型需匹配场景与转型需求。(238字)
84 5
|
7天前
|
人工智能 运维 安全
探秘 AgentRun丨流量一大就瘫痪?如何解决 AI 模型调用之痛
AgentRun 通过完整的模型管理和治理能力,解决模型调用的可靠性的难题。
|
5天前
|
存储 SQL Apache
Flink + Fluss 实战: Delta Join 原理解析与操作指南
Flink Delta Join通过查询外部存储替代本地状态,解决双流Join状态膨胀问题。结合Fluss存储,实现状态减半、CU降10倍、恢复提速87%、Checkpoint秒级完成,提升作业稳定性与效率。
Flink + Fluss 实战: Delta Join 原理解析与操作指南
|
8天前
|
机器学习/深度学习 人工智能 芯片
当算力变成“新石油”:AI 芯片的战争、底层逻辑与未来爆点
当算力变成“新石油”:AI 芯片的战争、底层逻辑与未来爆点
84 15
|
4天前
|
弹性计算 运维 应用服务中间件
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?性能、适用场景对比及选择参考
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?对于云服务器配置和性能要求不是很高的阿里云新用户来说,不管通过那个活动都可以购买到一台2核2G的云服务器或者的轻量应用服务器,区别主要在带宽方面,轻量应用服务器2核2G搭配的是峰值200M带宽,而经济型e实例2核2G搭配的则是3M带宽,这两款服务器都是活动中价格最低的,阿里云轻量应用服务器和ECS云服务器让用户二选一,很多用户不清楚如何选择,本文为大家介绍一下ECS云服务器和轻量应用服务器区别及选择。
69 10
|
5天前
|
存储 安全 Java
Java HashMap 全面解析:原理、用法与实战要点
本文深入解析Java中HashMap的底层原理与使用实践,涵盖其“数组+链表+红黑树”的结构演变、哈希计算、扩容机制及线程安全问题,详解常用方法、性能优化与最佳实践,助力开发者高效掌握这一核心数据结构。
78 10
|
6天前
|
存储 弹性计算 缓存
阿里云服务器型u1实例2核4G5M80G云盘199元1年简单测评:看看是否值得选择?
目前,阿里云服务器2核4G配置价格最低的是一款199元一年的云服务器,目前活动中推出了一款极具吸引力的通用算力型u1实例云服务器,配置为2核4G、5M带宽、80G ESSD Entry云盘,活动优惠价仅为199元/年。而且续费价格不变,这一价格相较于日常价有着非常大的优惠,那么,这款云服务器究竟是否值得选择呢?本文从价格、续费、实例性能等多个方面为大家分析,以供选择参考。
86 12