微服务简介

 

1.软件架构的进化

  1. 什么是软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。是在软件内容,经过综合各种因素的考量,权衡,选择特定的技术,将系统划分成不同部分,并使用这些部分相互分工,彼此协作,为用户提供需要的价值。
  2. 相关因素:业务需求,技术栈,成本,组织架构,可扩展性,可维护性。
  3. javaweb的进化之路:一层架构,MVC(ssh,ssm),dubbo
  4. 单体架构:功能,业务集中在一个发布包里,部署运行在同一个进程中。优势(易于开发,易于测试,易于部署,易于水平伸缩),劣势(代码膨胀,难以维护,构建成本大,持续交付周期长,新人上周周期长,创新困难,可扩展性差)

2.什么是微服务

  1. 使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且他们可以通过自动化方式部署。
  2. 如何拆分最小服务单元(不是固定的量化,是一种设计思路)
  3. 微服务特征:单一职责,轻量级通讯,隔离性,业务数据独立,技术多样性。
  4. 微服务诞生背景:互联网的快速发展,敏捷开发,精益方法,容器技术的成熟。

3.微服务架构图

  1. 业务场景:登录注册,发送邮件或者短信,获取课程列表
  2. 单体架构图: 

     

  3.  微服务架构图:

         

4.微服务架构优势,劣势

  1. 优势:独立性,敏捷性,技术栈灵活,高效团队。
  2. 劣势:额外的工作,数据一致性,沟通成本。

5.微服务间如何通讯

  1. 通讯模式:

     

  2. 通讯协议:REST API,RPC(IO/线程调用模型,序列化方式,多语言支持,服务治理(dubbo,dubbox,thrift,motan,grpc)),MQ
  3. 流行的RPC框架对比
  4.  

6.微服务发现

  1. 传统服务“发现”

     

     

  2. 微服务发现(客户端发现) 
  3. 微服务发现(服务器端发现)

     

7.微服务部署,更新,扩容

  1.  服务编排:mesos,docker swarm,kubernetes

posted @ 2018-04-08 16:17  jimtong  阅读(1784)  评论(0编辑  收藏  举报