什么是微服务
微服务
什么是微服务架构
- 微服务是一种架构模式,它提倡将原来独立的单体应用,拆分成多个小型服务。
- 这些小型服务各自独立运行,服务与服务间的通信采用轻量级通信机制(一般基于HTTP协议的RESTful API),达到互相协调、互相配合的目的。
- 被拆分后的服务都围绕着具体的业务进行构建,每个服务都能独立地进行开发、部署、扩展。
- 由于相互独立且采用轻量通信机制,因此各个小型服务能够使用不同的语言开发 ,也可以使用不同的数据存储技术。
微服务的特点
- 服务拆分
- 独立运行
- 轻量级通信
- 技术异构
为什么要使用微服务
- 业务规模的增长
- 敏捷开发与快速迭代
- 技术储备完善
- 微服务架构生态的完善
架构演进
- 单机架构
- Tomcat与数据库分开部署
- 引入本地缓存和分布式缓存:解决数据库的瓶颈
- 引入反向代理实现负载均衡,解决tomcat的瓶颈
- 数据库读写分离,解决数据库的瓶颈,采用主从架构
- 数据库按业务分库,解决用户热点访问,把热点库多加节点
- 把大表拆分为小表,解决比如每秒有5000条数据产生,但是单台数据扛不住,对写进行分散
- 使用lvs或F5来使多个Nginx负载均衡,解决系统压力到来,单台nginx的性能问题,lvs解决几十万的访问量
- 通过DNS论询实现机房的负载均衡,解决当lvs访问压力达到上百万时候,可以横向扩展机房
- 引入NoSQL数据库和搜索引擎等技术,(es、mongoDB、HDFS)
- 大应用拆分为小应用,解决整合了过多的中间件组件,业务变得复杂
- 复用的功能抽离成微服务,服务之间通过HTTP协议进行访问,dubbo,"分布式架构"或者"服务化"
服务架构的演进
- 在微服务架构这个概念变得流行之前,技术架构也在不断优化和演进
- 在微服务架构这个概念"火"起来之前,人们会用"分布式服务"或"服务化"来概括这种将大系统拆分为小系统的架构模式
- 微服务架构只是众多技术架构中的一个,适合自身业务系统和技术团队的才是最好的架构
微服务架构的优缺点
微服务的优点
- 更易于开发和维护,开发者只针对一个服务,单独的服务开发和维护更简单
- 快速迭代+灵活,单机项目有支付、商品项目全在一块,随便哪块分支、冲突、测试、升级很难,服务之间耦合度变低,随便哪个服务出问题也不会影响到全局
- 系统伸缩性增强,比如:商品服务访问量最多,增加商品服务的服务器
- 技术选型灵活,根据业务场景和团队特点技术栈选型
- 错误隔离,当前商品服务down机了,不会影响订单服务,局部的错误只影响局部,不会影响全局
微服务的缺点
- 落地一个微服务架构项目比较复杂
- 服务依赖和调用链路更复杂
- 数据一致性问题
- 问题排查的链路加长
- 学习成本高