什么是微服务(Microservice)
Posted 超高校级的海豹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是微服务(Microservice)相关的知识,希望对你有一定的参考价值。
目录
什么是微服务(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
什么是微服务
微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。
微服务架构需要的功能或使用场景
1:我们把整个系统根据业务拆分成几个子系统。
2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。
3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。
4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。
5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。
7:还需要一个监控功能,监控每个服务调用花费的时间等。
目前主流的微服务框架:Dubbo、 SpringCloud、thrift、Hessian等,目前国内的中小企业用的大多数都是Dubbo,SpringCloud估计很少,也许有些开发同学都没听说过。
以上是关于什么是微服务(Microservice)的主要内容,如果未能解决你的问题,请参考以下文章