什么是微服务?

微服务是指使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署

微服务的特征

  1. 单一职责
    只把紧密相关的服务放在一起,无关的业务独立出去;
    例如:订单和支付、登录和注册、邮件、短信分别放在一起
  2. 轻量级通讯
    定义:与平台无关,与开发语言无关
    例如:Http
    非轻量级:Java的RMI,.Net的Remoting
  3. 隔离性
    每个微服务运行在自己的进程中,不会相互干扰
  4. 有自己的数据
    业务数据的独立性,每个微服务都有自己独立的存储系统
  5. 技术多样性
    可选择自己熟悉的语言(Java、C、Golang、Python),提供api就可以了

微服务诞生的背景

  1. 互联网的快速发展
    需求变化快、用户数量变化快
  2. 敏捷开发,精益方法深入人心
    用最小的代价做最快的迭代,频繁修改、测试、上线
  3. 容器技术的成熟
    docker容器

微服务架构图

假定业务场景
— 在线教育网站

  1. 用户可以注册、登录,获取用户信息
  2. 发短信、邮件功能
  3. 查看课程列表和课程的基本CURD
    单体架构图:


    image.png

    微服务架构图:


    image.png

优势

  1. 独立性
    每个服务都是单独运行,与其他服务互不影响,数据库也独立开来,修改的时候就不用考虑会影响其他模块
  2. 敏捷性
    功能单一,有清晰的API
  3. 技术栈灵活
    每个微服务都可以有自己独立的技术栈
  4. 高效团队
    每个团队只负责自己的服务

不足

  1. 额外的工作
    考虑哪些服务放在一起,哪些服务需要拆分,不宜太大也不宜太小
  2. 数据一致性
    尽量保证对数据库的连表操作,数据表尽量搭在同一个微服务内
    单体:只有一个数据库,可采用事物来进行多表级联修改、删除,很容易达成一致性
  3. 沟通成本
    想修改某个不是本组负责的服务,需要与其他组进行沟通处理

你可能感兴趣的:(什么是微服务?)