什么是微服务

微服务

什么是微服务架构

  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. 学习成本高
相关推荐
吴建旭 智宅焕6 小时前
智能家居全国交付计价模型的设计与实现:按天包干与交付确定性架构
架构·智能家居
Experience-摆渡6 小时前
Agent 持久记忆引擎 Hindsight:分层记忆架构与 Token Budget 机制拆解
架构
星航夜空的帆舟7 小时前
OceanBase源码架构总览
架构·oceanbase
guslegend7 小时前
脚手架入门:必要性、核心功能与执行原理
前端·架构·node.js·脚手架·前端工程化
弈栈录7 小时前
Spring Cloud 微服务架构:注册中心、配置中心与网关
java·spring cloud·架构
TechLee7 小时前
Go 泛型统一 API 响应设计的最佳实践
后端·架构·go
weixin_750330238 小时前
AI获客技术选型:基于OPC架构的智能营销方案实践
人工智能·架构·ai获客
新鲜势力呀8 小时前
PHP 日志系统实战:从排查线上故障困难到 ELK日志分析 + 链路追踪 + 实时监控完整架构方案
elk·架构·php
代码山河8 小时前
Java学习路线图:2026年最新版,从入门到架构师
java·学习·架构·教程·面向对象·项目
欣欣之王来了9 小时前
Python入门:Jupyter Notebook安装与使用指南
学习·架构·面向对象·项目·python教程