开发者学堂课程【微服务框架 Spring Cloud 快速入门:微服务是什么_1】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9327
微服务是什么_1
目录:
一、微服务是什么?
二、总结
一、微服务是什么?
论文地址:
https://martinfowler.com/articles/microservices.html
马丁弗勒大概在2014年左右,提出了微服务架构这个概念。
微服务是马丁弗勒提出的、他是微服务的主创人和微服务这个概念的作俑者。他说:就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style)。
现在也没有一个定论,慢慢迭代以后会最终出现微服务是什么,但是任何东西不能没有一个最终的说法,至少截至到现在,大致根据马丁弗勒对于微服务的定义有了一个清晰的认知。
但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
它提倡将单一应用程序划分成一组小的服务,这句话的意思是:在软件开发之前,粗略的来说经历了三个阶段。
第一种单机版俗称为 All In One,在 eclipse 里以及开发工具工作空间里面只有一个工程,比方说有一个Tmall这样一个工程,里面所有东西都加载一起,com.atguigu.service,这个 service 下有大量接口有商品的、交易的、积分的、订单的等等,这个时候单机版随着互联网时代的崛起并发量越来越大,都明白天下大事合久必分,分久必合。往后可以发现单机版变成了分布式。之前有商品的、交易的、积分的、订单的分在一起,或多或少不方便,为了项目的耦合度更低、职责更加明确,有这样一个概念,专业的事情交给专业的人来做,尽量降低耦合。
商品,交易,积分,订单在一起,会指向修改订单部分,但是因为四个模块在一起就会影响其他三个模块。会把集中在一块的 all in one 变成四个模块,每一个模块可以按照业务来进行拆分就可以看成一个微服务。例如之前所做的短信模块,登录需要发送短信,下订单需要发送短信,调用支付接口支付金额需要发送短信,很多个模块都需要发送短信,把这个公共的模块提取出来,把发短信做成一个小模块,只做一件事形成微服务。
Double、微服务、cloud 的区别有哪些?其中最重要的就是它们之间的通信机制。Double 是基于 RPC 远程过程调用,而微服务、cloud 是基于 REST 调用,这两个是本质的区别。
结合网站的论文,对马丁弗勒对微服务的定义进行翻译。只需要有一个概念,就是第一单一应用 all in one 分成一组小的服务,第二每一次都是独立的进程。
二、总结
技术维度理解:微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。