什么是微服务

微服务

什么是微服务架构

  1. 微服务是一种架构模式,它提倡将原来独立的单体应用,拆分成多个小型服务。
  2. 这些小型服务各自独立运行,服务与服务间的通信采用轻量级通信机制(一般基于HTTP协议的RESTful API),达到互相协调、互相配合的目的。
  3. 被拆分后的服务都围绕着具体的业务进行构建,每个服务都能独立地进行开发、部署、扩展。
  4. 由于相互独立且采用轻量通信机制,因此各个小型服务能够使用不同的语言开发 ,也可以使用不同的数据存储技术

微服务的特点

  1. 服务拆分
  2. 独立运行
  3. 轻量级通信
  4. 技术异构

为什么要使用微服务

  1. 业务规模的增长
  2. 敏捷开发与快速迭代
  3. 技术储备完善
  4. 微服务架构生态的完善

架构演进

  1. 单机架构
  2. Tomcat与数据库分开部署
  3. 引入本地缓存和分布式缓存:解决数据库的瓶颈
  4. 引入反向代理实现负载均衡,解决tomcat的瓶颈
  5. 数据库读写分离,解决数据库的瓶颈,采用主从架构
  6. 数据库按业务分库,解决用户热点访问,把热点库多加节点
  7. 把大表拆分为小表,解决比如每秒有5000条数据产生,但是单台数据扛不住,对写进行分散
  8. 使用lvs或F5来使多个Nginx负载均衡,解决系统压力到来,单台nginx的性能问题,lvs解决几十万的访问量
  9. 通过DNS论询实现机房的负载均衡,解决当lvs访问压力达到上百万时候,可以横向扩展机房
  10. 引入NoSQL数据库和搜索引擎等技术,(es、mongoDB、HDFS)
  11. 大应用拆分为小应用,解决整合了过多的中间件组件,业务变得复杂
  12. 复用的功能抽离成微服务,服务之间通过HTTP协议进行访问,dubbo,"分布式架构"或者"服务化"

服务架构的演进

  • 在微服务架构这个概念变得流行之前,技术架构也在不断优化和演进
  • 在微服务架构这个概念"火"起来之前,人们会用"分布式服务"或"服务化"来概括这种将大系统拆分为小系统的架构模式
  • 微服务架构只是众多技术架构中的一个,适合自身业务系统和技术团队的才是最好的架构

微服务架构的优缺点

微服务的优点

  1. 更易于开发和维护,开发者只针对一个服务,单独的服务开发和维护更简单
  2. 快速迭代+灵活,单机项目有支付、商品项目全在一块,随便哪块分支、冲突、测试、升级很难,服务之间耦合度变低,随便哪个服务出问题也不会影响到全局
  3. 系统伸缩性增强,比如:商品服务访问量最多,增加商品服务的服务器
  4. 技术选型灵活,根据业务场景和团队特点技术栈选型
  5. 错误隔离,当前商品服务down机了,不会影响订单服务,局部的错误只影响局部,不会影响全局

微服务的缺点

  1. 落地一个微服务架构项目比较复杂
  2. 服务依赖和调用链路更复杂
  3. 数据一致性问题
  4. 问题排查的链路加长
  5. 学习成本高
相关推荐
Uopiasd1234oo3 小时前
MetaFormer架构改进YOLOv26自适应稀疏注意力与卷积门控双重突破
yolo·架构
easy_coder4 小时前
Agent:原理、架构与工程实践(中篇)
架构·云计算
码以致用5 小时前
DeerFlow Memory架构
人工智能·ai·架构·agent
2603_954708315 小时前
如何确保微电网标准化架构设计流程的完整性?
网络·人工智能·物联网·架构·系统架构
fanly115 小时前
surging 的Agent插件研发全流程:从定义到落地
微服务·ai·surging
雨奔10 小时前
TSF 微服务熔断实战:从原理到落地,杜绝级联故障
微服务·云原生·架构
智能化咨询10 小时前
(196页PPT)集团IT应用架构规划详解(附下载方式)
架构
2501_9333295510 小时前
企业级舆情监测系统技术解析:Infoseek数字公关AI中台架构与实践
开发语言·人工智能·自然语言处理·架构
cyber_两只龙宝10 小时前
【Oracle】Oracle之SQL的转换函数和条件表达式
linux·运维·数据库·sql·云原生·oracle
安卓蓝牙Vincent10 小时前
Android BLE SDK 设计手册(一):一次参数改动,让我重新设计了整套架构
android·架构