我们平时总说微服务、微服务、那么究竟什么是微服务呢?微服务跟传统的项目服务有什么区别呢?今天我们来一探究竟。
单体式架构
先来看看单体式架构:它的概念就是将项目的代码都合归一处。如果项目很小的时候特别灵活。但是如果项目大起来的话,必然会带来一定的缺点:
1.项目迭代不灵活
2.项目组职责、权限不清
3.项目并发配置不灵活
4.项目部署扩展困难
微服务架构
微服务架构的核心观念就是“拆”,拆什么呢?就是将项目拆分几个独立的功能单元(服务)的架构
必有其优点:
1.项目复杂度降低
2.团队界限明确
3.部署灵活
具体场景具体应用:
下面来看看什么样的产品用什么架构比较合适:
常见的微服务框架
1.Dubbo/Dubbox
由阿里巴巴开发、当当网改良,基于RPC服务
2.Spring Cloud
由Spring团队开发,基于RESTful
微服务架构-服务类型
1.Provider
提供者,提供服务的一方
2.Consumer
消费者,调用服务的一方
微服务架构-通信方式
1.RPC
全称:Remote Procedure Call
支持RPC的微服务框架:Dubbo/Dubbox
基于TCP、与平台有关
2.RESTful
全称:Representational State Transfer
支持RPC的微服务框架:Spring Cloud/Dubbox
基于HTTP、与平台无关
微服务架构-设计原则
1.单一职责原则
对一个项目拆分的时候,每一个项目只能包含这一个项目的业务,而不能包含其他项目的业务
2.围绕业务切分
不能随意切分,尽量一个业务拆成一个项目
3.谁创建谁负责
在实际工作中,用到微服务肯定是因为用户量非常大, 技术团队也很多,比如用户模块,是A团队创建的就不能让B团队插手开发和部署的事情。这一块与devops理念很相似。
其他概念
分布式
对于分布式,它更加关注的是项目的拆分,对于一个大项目而言,有ABC三个模块,分布式就是将这个大项目拆分为A项目、B项目、C项目,而除了这种垂直性的拆分,还有可能对每一个子项目进行分层,使得业务更具体。分布式其实就是拆分,分为垂直拆分和分层规划。
集群
集群更加关注的是项目的部署,也是同样的一个项目,当用户量不是很多的时候,部署一个服务器是没问题的,但是当用户量庞大起来的时候,服务器压力顶不住了,我们就可以将这一个项目部署成三个服务器,不管是轮询访问也好,随机访问也好,都将其称之为集群。