微服务-SpringCloud学习系列(一):认识微服务
本系列是学习SpringCloud微服务的学习笔记和自己的一些理解,更细节的内容可以参考官网或者网络上的教程进行学习。
1.什么是微服务?
微服务是一种现代化的软件方法,通过该方法,应用代码以小巧,易于管理的方式交付,彼此独立。
它们的小规模和相对隔离性可以带来许多其他好处,例如更容易维护,提高生产率,更大的容错能力,更好的业务调整等等。
显然微服务不是凭空出现,看一下发展历程。
①从单体架构->垂直架构(项目拆分)->分布式(SOA架构->微服务架构)。
通常SOA使用RPC进行通信(基于TCP和序列化),而微服务通常使用Restful的HTTP通信。
那么如何将单体架构拆分为微服务架构呢?
②这里要介绍一下Chris Richardson提出的微服务的三维扩展模型:
X轴,服务实例水平扩展,保证可靠性与性能;
Y轴,功能的扩展,服务单一职责,功能独立;
Z轴,数据分区,数据独立,可靠性保证;
③分布式的CAP理论
CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中:
- 一致性(Consistency)
- 可用性(Availability)
- 分区容错性(Partition tolerance)
最多满足其中的两个特性。也就是下图所描述的。分布式系统要么满足CA,要么CP,要么AP。无法同时满足CAP。
2.微服务架构有哪些?
而SpringCloud作为微服务的一站式解决方案,也是微服务开发的首选。
并且基于SpringBoot的快速开发模式已逐渐成为微服务的Java标准开发模式。(这里关于SpringBoot不做过多解释,还不太了解的可以自行学习)
3.什么是SpringCloud?
我的初步理解是SpringCloud是微服务中各组件的集成,定义了顶层的接口。类似slf4j的感觉,为各组件提供默认实现和自定义实现。
4.总结
微服务就是将集成的单体服务拆分成更加灵活独立的小单体服务。而基于SpringBoot的SpringCloud是微服务的一站式解决方案。
当然如果是业务不复杂的小系统,用传统的单体服务模式就可以,没必要采用微服务架构。
学习微服务建议首先要看一下martinflower的文章(见参考资料),然后就是在SpringCloud的官方网站进行学习,不理解的地方再针对性的找一些优质的网文进行学习。
5.参考资料