都说基于云的微服务,为什么微服务要基于云呢?云又是什么?

什么是云?

"云"这个词现在已经被过度使用了,甚至是滥用。好像一提到哪个公司设计到云,我们就觉得这个公司很厉害,什么技术前沿什么的。那么云到底是个什么呢?
互联网领域的云这个概念,又叫云服务,包含云计算和云存储。简单来说,就是把主要的存储和计算工作放到远端的服务器上,让服务器来完成海量的存储和繁琐的计算,服务器也是计算机,是有专业用途的计算机,而你的计算机就被解放出来,只需要接收服务器的处理结果,你想要的结果。
云服务器是集中的,是遥远的,就好像飘在天上的云一样,所以用云这个词来描述这种服务形式。集中起来就会产生规模效应,意味着更低的成本,更高的效率。
更重要的是云服务上的硬件资源是弹性的,云供应商可以快速的为我们提供新的虚拟机和容器(就相当于扩充硬件性能),如果服务需求下降我们又可以快速的关闭虚拟机和容器,而不会产生额外的费用。
而基于云的微服务优势是以弹性的概念为中心的,微服务架构的核心概念之一就是每个服务都被打包成一个个独立的商品。服务实例应该可以快速启动和关闭,服务的每一个实例都是完全相同的。

为什么要用微服务呢?

先来说说传统服务

1.庞然大物

做过传统项目的道友都有这种感觉,如果层次功能划分的不是太清晰的话,如果你是从立项开始做还好,但如果你是半道加入这个项目的人,那么你上手的话将会非常困难,要从头先把整个项目架构,分层都理一遍,否则写出来的东西非常糟糕。随着业务的增长,整个系统各个功能依赖关系错综复杂,经常会出现拆东墙补西墙的问题。还会有莫名其妙的Bug,这对我们维护和升级造成极大的困扰,更坑的是整个系统就是一个war包,稍微对项目有一点改动需要重新部署更新(也有可能是替换class文件)。

2.系统脆弱

传统项目一旦某一个点出了问题,那么结果就是整个系统完全崩溃。造成系统的可用性和稳定性非常低。

3.移植差

传统项目如果想要升级,迁移新平台,或者更换语言,这是非常困难的。

4.伸缩性差

传统项目做不到当实物量突然增加,系统可以快速的进行服务器扩增,在实物量少的时候做到服务器收缩。
(以上是我做项目自己总结的一些,网上说的也非常好,大家可以多查一下)

基于云的微服务技术应运而生,并且改变了我们构建应用的方式

接触了微服务之后,也确信这是一个历史的拐点。悲叹生于这个时代,但又庆幸活在这个时代。

通俗来讲微服务就是把传统项目分离成各个独立的模块,但他们单独又以独立的服务存在,各个服务通过api接口来交互,大家共同完成某个请求。(类比现在的手机行业,有造cpu的,有造电池的,有造主板的,完了大家一块拼起来就完成一部手机了)

各个服务之间没有必要的联系,他们独立的负责单独的模块功能,不会造成某一个服务出现问题造成整个系统崩溃。

不用再对整个系统进行负载均衡,我们可以针对某一项服务进行负载均衡。

扩展非常方便,添加一个新模块就是新增加一个服务。