微服务基本认识总结

一、什么是微服务?

微服务架构风格是一种讲一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制,这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务公用一个小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储。
微服务具备以下的特性:

  • 每个微服务可独立运行在自己的进程里
  • 一系列独立运行的微服务共同构建起整个系统
  • 每个微服务为独立的业务开发,一个微服务只关注某个特定的功能
  • 微服务之间通过一些轻量级的通信机制进行通信
  • 可以使用不同的语言和数据存储技术
  • 全自动部署机制

二、微服务的优点

  • 易于维护和开发:一个微服务只关注一个特定的业务功能,所以它业务清晰,代码量较少,开发和维护单个微服务相对简单
  • 单个微服务启动较快:单个微服务代码量少,所以启动较快
  • 局部修改容易部署
  • 技术栈不受限:在微服务架构中,可以结合项目业务及团队的特点合理的选择技术栈
  • 按需伸缩:可根据需求实现细粒度的扩展

三、微服务面对的挑战

  • 运维要求较高:更多的服务以为者更多的运维投入
  • 分布式固有的复杂性:使用微服务构建的是分布式系统,对于一个分布式系统,系统容错,网络延迟,分布式事物都会带来巨大的挑战
  • 接口调整成本高:微服务之间通过接口进行通信,如果修改某一个微服务的API,可能所有使用该接口的微服务都需要调整
  • 重复劳动:很多微服务都会使用到相同的功能,而这个功能还没有达到分解为一个微服务的程度,这个时候,可能各个服务会开发这一个功能而导致代码重复

四、微服务设计的原则

  • 单一职责原则:单一职责是指一个单元(类,方法或者服务等)只应关注整个系统功能中单独有界限的一部分
  • 服务自治原则:服务自治原则是指每个微服务应具备独立的业务能力,依赖与运行环境
  • 轻量级通信原则:微服务之间应该通过轻量级的通信机制进行交互
  • 微服务粒度划分合理:微服务粒度是难点,应当使用合理的粒度划分微服务问不是一味的把服务做小,代码量的多少并不能作为微服务划分的依据,因为不同的微服务本身业务的复杂性不同,代码量也不同

你可能感兴趣的:(Spring,Cloud,与,Spring,Boot)