SpringCloud学习 什么是微服务(一)
关于SpringCloud,我是看了周老师的《SpringCloud与Docker微服务架构实战》之后才有了一点了解,做下记录,以供后期学习。本人知识有限,如有不对,欢迎批评
1.什么是单体应用,单体应用的特点
相信大家自接触开发以来,在开发过程中我们多人开发,都是分模块开发,一人负责一个模块,但是最终打包的时候无论你分了多少模块都是打成了一个war包,所有的模块、功能都被包含在这个war包中。这样的应用称为:单体应用
1.1单体应用的问题
很多项目都是从单体应用开始的,单体应用部署简单,在项目初期不会出现什么问题,但是随着后期需求的增加变更,迭代次数的增多,开发人员的变更,系统中代码混乱,冗余代码成堆,但是还不敢随意修改,随着时间的推移,维护成本越来越高。
在系统运行方面,可能一个功能模块的Bug最终会导致整个项目的崩溃,在这种种情况下,微服务的出现似乎就能很大程度上的解决目前面临的问题
2.什么是微服务
鉴于单体应用所遇到的问题,微服务所应具备的功能应该就是把之前的单体应用的拆分,一个模块一个服务(应用),服务之间通过轻量级通信机制来通信(数据交流),每个模块一个服务或者更加细化的分成不同的服务,不同的服务之间可以用不同的语言进行开发
微服务有哪些特点:
(1) 每个微服务运行在自己的进程中
(2)多个微服务构建出一个系统
(3)每个微服务是独立的开发,只关注于某个特定模块活功能
(4)微服务之间通过轻量级通信通信来交流
(5)不同服务可以使用不同的语言开发
3.SpringCloud
我对于SpringCloud的理解其实就是分布式架构,对于微服务我们都知道用SpringBoot,那么分布式呢,对于分布式,目前比较流行的有阿里的Dubbo和Spring社区的SpringCloud springCloud就是一个比较全面地解决分布式中问题的东西
至于说springcloud项目,我的理解就是客户端只与网关进行交流,而微服务只与网关进行交流,这样我们的客户端就不用访问不同微服务,减轻了客户端的复杂性。总之就是多个微服务为网关提供数据接口,客户端通过网关来获取数据,网关在我目前的理解中就是一个中间层的,来整合所有微服务的数据接口最后统一为客户端提供
本来想写一下SpringCloud 结果全写成废话了,我都不知道自己写的是什么鬼