微服务-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.参考资料

什么是微服务?

什么是微服务架构?

什么是微服务?为什么你要用微服务?

原文地址:https://www.cnblogs.com/masting/p/12753570.html