0 初识微服务

 

0x0 微服务导学

微服务:就是普通的项目模块,运行在Docker里面,使用K8S管理Docker们

为什么要做微服务?

0x1 认识微服务

软件架构的进化

软件架构:在软件内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。

单体架构:

    1. 易于开发
    2. 易于测试(启动一个服务,所有功能就都准备好了)
    3. 易于部署
    4. 易于水平伸缩(新建一个服务器,配好环境,复制软件包就好)

什么是微服务

微服务:

  1. 定义:使用一套小服务来开发单个应用的方式。
    1. 每个服务运行在独立的进程
    2. 一般采用轻量级的通讯机制互联
    3. 可以通过自动化的方式部署
  2. 理解
    1. 微:如何判断
      1. 代码量?不靠谱
      2. 开发时间?更不靠谱
      3. 结论:不可度量
        1. 传递的是设计思想,而不是「量」
    2. 特征:
      1. 单一职责:只把紧密相关的业务放在一起,无关业务独立出去 - 登录和注册、订单和支付、邮件服务、短信服务
      2. 轻量级通信:平台、语言无关的通信 - http
      3. 隔离性:运行在自己的进程中,不相互干扰
      4. 有自己的独立数据存储系统
      5. 技术的多样性:开发人员选择最适合的技术实现业务需求,只要能提供出适合的API就好了
  3. 诞生背景
    1. 互联网行业的快速发展:需求变化快、用户数变化快
    2. 敏捷开发、精益方法的深入人心:最小的代价做最快的迭代,看到反馈 - 频繁的修改测试上线
    3. 容器技术的成熟 - Docker的出现解决运维瓶颈

画一个微服务架构图

业务场景

在线教育网站的部分功能

单体架构图

说明:

微服务拆分

问题:

解决方式:API Gateway

微服务架构的优势和不足

优势

独立性:每个服务只需要管理好自己就好

敏捷性:

技术栈灵活:

高效团队:

不足

额外的工作: