什么是微服务(Microservice)

Posted 超高校级的海豹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是微服务(Microservice)相关的知识,希望对你有一定的参考价值。

目录

什么是微服务(Microservice)

微服务是完美的解决方案吗

名词解释

云计算三层架构

应用层(SaaS)

平台层(PaaS)

基础设施层(IaaS)

服务网格(ServiceMesh)

Sidecar

鸣谢

bilibili       


什么是微服务(Microservice)

微服务是一种现代化的软件架构,让应用代码以可管理的小段形式进行交付,彼此独立。

传统架构(单体架构)遇到的问题:

  • 开发效率低,维护难,部署不灵活(生产效率低)
  • 一个服务出现故障会导致整个应用下线(稳定性不高)
  • 无法满足高并发情况下的业务需求(扩展性不够)

微服务是完美的解决方案吗

引入服务治理成本

  • 服务发现:服务发现

原先的服务聚集在一块,明确知道彼此存在。现在引入一个新的微服务,部署在网络的一个点上,其他服务要调用,首先要找到这个新服务,因此需要一个服务发现的能力。

  • 服务调用:使用RPC/Restful协议进行通信

原先在本地,现在在网络的角落里,需要进行网络的通信。引入通信的成本

  • 服务追踪:链路追踪

若干个小服务需要梳理之间的关系。一个服务调用多次,若出错,要能追踪到哪个环节出错。

  • 服务容错:重试/熔断/服务降级

系统的弹性增强了,但是一个服务出错了,其他的服务并不是完全不受影响。如支付服务挂掉了,订单服务肯定受到影响。

  • 服务安全:服务鉴权
  • 服务部署:顺序部署/滚动部署/蓝绿/金丝雀

原先都在一块,直接部署就行。现在拆分若干个,可能存在顺序问题。

  • 数据调用:分布式事务

原先可能只有一个数据库,现在每个服务可能各有一个数据库。

  • 分组限流:路由/限流

因此各微服务框架应运而生

名词解释

云计算三层架构

SaaS、PaaS、IaaS。

以做披萨比喻,四种方式

  • 买厨房、做披萨饼皮、烤披萨。(家庭手工自制)
  • 用别人的厨房、做披萨饼皮、烤披萨。(厨房即服务)
  • 用别人的厨房、用别人的披萨饼皮、烤披萨。(烘焙即服务)
  • 买披萨吃。(披萨即服务)

四种方式对应

  • 传统本地部署:什么都自己做
  • 基础设施即服务(IaaS):服务器等硬件部分选择外包,租用别人的
  • 平台即服务(PaaS):包括服务器,数据库、操作系统等也搭建好了,可以直接开发软件
  • 软件即服务(SaaS):软件开发完成,买来直接用

aaS = as a service  ,xx 即服务

应用层(SaaS)

Software as a Service,软件即服务

比喻:直接买炒鸡蛋。

举例:百度网盘

平台层(PaaS)

Platform as a Service,平台即服务

纯PaaS平台越来越少,出现更多的xx+PaaS,这些平台处在PaaS和SaaS两者中间,既比SaaS要灵活,又比PaaS简单。

  • aPaaS,如无代码
  • iPaaS,打通了各个SaaS之间的API,让数据和流程可以在不同SaaS之间流转

比喻:一个厨房有蒸炸炒的功能,只要给材料,就能得到成果。比如给一个鸡蛋,选择蒸就得到一个蒸鸡蛋,选择炒就得到一个炒鸡蛋。这个多功能的厨房就是一个平台。

提供PaaS服务的公司做好了这些基础功能,我们不需要自己实现这些功能,只要给材料,就能得到自己想要的东西。

基础设施层(IaaS)

Infrastructure as a service,基础设施即服务

租用一个服务器,如阿里云服务器。并不会收到一个服务器,而是通过远程来访问租用的服务器。

通过远程操控服务器,如硬盘不够用,则多租一块硬盘。

服务网格(ServiceMesh)

服务网格是一个工具,在平台层向应用程序增加可观察性、安全性、可靠性功能,而不是应用层。

服务网格是可配置的、低延迟基础设施层,旨在处理基于API的应用架构服务之间的大量网络通信。(显然此处的基础设施层的含义应该为平台层更为合理)

本质是将服务治理能力下沉到基础设施的过程。

Sidecar

边车,抗日剧中摩托车驾驶座旁边的位置。

在服务网格中搭载在微服务旁边。

 

鸣谢

bilibili       

假正经的矫情少年

王壮-先进版

十分钟变大师-Moon
        

什么是微服务

微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。

 

  微服务架构需要的功能或使用场景

        1:我们把整个系统根据业务拆分成几个子系统。

 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。

 3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

 4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。

 5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

 6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

 7:还需要一个监控功能,监控每个服务调用花费的时间等。

  

  目前主流的微服务框架:Dubbo、 SpringCloud、thrift、Hessian等,目前国内的中小企业用的大多数都是Dubbo,SpringCloud估计很少,也许有些开发同学都没听说过。

以上是关于什么是微服务(Microservice)的主要内容,如果未能解决你的问题,请参考以下文章

带你走进微服务Microservice

什么是微服务

微服务架构SpringCloud组件和概念介绍

微服务架构SpringCloud组件和概念介绍

微服务架构SpringCloud组件和概念介绍

微服务之springcloud组件和概念介绍