微服务|什么是微服务

什么是微服务? 微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP 协议进行通信(也可以采用消息队列来通信),可以采用不同的编程语言,使用不同的存储技术,自动化部署减少人为控制,降低出错率.服务数量越多,管理起来越复杂,因此采用集中化管理。
微服务是一种架构风格。一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好完成该任务
优点

  • 简单、灵活、 独立部署
  • 专注、专业、高效、可靠、小团队
  • 松耦合、高内聚、易扩展
  • 语言、工具无关
  • 测试容易,可伸缩性强,可靠性强,跨语言,协同开发,方便系统迭代
缺点
  • 依赖服务接口变更,接口兼容版本问题
  • 部分模块重复构建
  • 分布式系统的复杂性,分布式事务
  • 运维复杂度增多,成本高
微服务设计原则 1. AKF 扩展拆分
2. 前后端分离
3. 无状态服务
4. Restful 通讯风格
1.AKF拆分原则:
业界对于可扩展的系统架构有一个朴素的理念,就是:通过加机器可以解决容量和可用性问题
微服务拆分原则:
  • 低耦合、高内聚:一个服务完成一个独立的功能
  • 按团队结构,小规模团队维护,快速迭代
    某专家总结了应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展
    X轴:指水平复制
    Z轴:是基于类似的数据分区
    Y轴:就是微服务的拆分模式,就是基于不同的业务拆分
2.前后端分离原则
- 各自优化,前端用户体验效果好
- 前后端交互界面清晰,接口明了,易于维护
3.无状态服务
首先了解一下什么是状态?如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个“状态”数据的服务被称为有状态服务,反之称为无状态服务。无状态服务原则是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中
【微服务|什么是微服务】4.Restful 通信风格
基于“无状态通信原则”,Restful 通信风格有很多优点:
  • 无状态协议HTTP,具备先天优势,扩展能力很强。
  • JSON报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好
  • 语言无关,各大热门语言提供成熟的Restful API 框架,相对其他的一些RPC框架生态更完善

    推荐阅读