Docker Kubernetes 微服务容器化实践(一) 1.2 微服务入门

目录

初始微服务

软件架构的进化

什么是微服务

画一个微服务架构图

微服务架构引入的问题及解决方法

微服务间如何通讯

流行的RPC框架

服务发现

服务编排

SprinBoot 与微服务

SprinCloud 与微服务

SpringCloud核心组件

Netflix EureKa

Netflix Ribbon

Spring Cloud Config​


​​​​​​

 

  • 初始微服务

  1. 软件架构的进化
  2. 什么是微服务
  3. 画一个微服务架构图
  4. 微服务架构的优势
  5. 微服务架构的不足
  • 软件架构的进化

  1. 1 什么是软件架构?

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

  1. 2 软件架构考虑那些因素?

1)业务需求

2)技术栈

3)成本

4)组织架构

5)可扩展性

6)可维护性

  • 什么是微服务

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

1. 1​ ​​​​​​多微才算微

实际上是传递的是思路,而不是固定的量,不按照代码量和开发时间来算。

1. 2 微服务特征

      1)单一职责(关联性不大的单一功能)

      2)轻量级通信(与平台无关和语言无关)

      3)隔离性(每个微服务运行在自己的进程中不会相互干扰)

      4)有自己的数据(有自己存储数据的地方)

      5)技术的多样性(c java等开发的微服务)

1. 3​ ​​​​​​微服务诞生背景

      1)互联网行业的快速发展

      2)敏捷开发(频繁修改、测试),精益方法深入人心

      3)容器技术的成熟(docker)


  • 画一个微服务架构图

1. 1​ ​​​​​​假定业务场景

    1)一个在线教育的网站的部分功能

    2)用户可以登陆注册、获取用户信息

    3)有发送邮件发送短信的功能

    4)可以查看课程列表和对课程的基本CRUD

1.2 架构图

    1)单体架构下业务图

   2)微服务架构下业务图

  • 微服务架构引入的问题及解决方法

  1. 微服务间如何通讯?
  2. 微服务如何发现彼此?
  3. 微服务怎样部署?更新?扩容?
  • 微服务间如何通讯

  1. 1 从通讯模式角度考虑

            1)一对一还是一对多?

            2)同步的还是异步的?

  1. 2 从通讯协议角度考虑

            1)REST API (把动作类的东西,变成Http本身的一种请求方式,URL设计就会相对来说比较简单)

            2)RPC

            3)MQ(发布订阅的方式)

      1.3 如何选择RPC框架(微服务之间通讯选择最多的一种情况)

            1)I/O、线程调度模型

            2)序列化方式

            3)多语言支持

            4)服务治理

      1.4 流行的RPC框架

            1)Dubbo/Dubbox

            2)Motan

            3)Thrift

            4)Grpc

  • 流行的RPC框架

           1.1 Dubbo

                 1)pic(蓝色:初始化的时候启动,实线:同步)

1.1 Motan

                  1)pic

1.1 Thrift

                  1)pic

            1.3 GRPC

                 1)pic

            1.4 对比

                 1)pic

  • 服务发现

  1. 1 传统服务vs微服务

 

  1. 2 如何发现

                1)客户端发现

                2)服务端发现

  • 服务编排

  1. 流行的服务编排工具 Mesos、 Docker Swarm、Kubernetes

  • SprinBoot 与微服务

  1. 1 SpringBoot 的使命?

化繁为简

  1. 2 SpringBoot 核心功能?

  1. 3 SpringBoot 与微服务的关系?

Java的润滑剂

  • SprinCloud 与微服务

  1. 1 SpringBoot 的使命?

简化Java的分布式系统

  1. 2 深入理解?

  1. 3 SpringCloud vs SpringBoot?

  1. 4 SpringCloud vs 微服务?

​​​​​​​


  • SpringCloud核心组件

​​​​​​​

  • Netflix EureKa

  • Netflix Ribbon​​​​​​​

  • Netflix Hystrix

  • Netflix Zuul

  • Spring Cloud Config​​​​​​​