什么是微服务架构?
简单地说,微服务是系统架构上的一种设计风格,它的风格主旨是将一个独立的系统拆分成多个小型服务,也就是服务组件化,这些小型服务都在个自独立的进程中运行,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。服务之间通过基于HTTP的RESTful API进行通信协作、调用。由于有了轻量级的通信协作基础,所以这些微服务甚至可使用不同的语言来编写。
与单体系统的差别?
在以往的企业系统架构中,我们针对一个复杂的业务需求通常使用对象或业务类型构建一个单体应用。项目初期,业务相对简单,开发、部署、测试都比较容易,但是随着业务的深入,我们需要增加不同的模块来支撑复杂的业务体系,单体应用因此变得越来越臃肿,单体应用的弊端就显现出来,往往我们修改了一个很简单的功能,为了部署上线,可能会影响到其他功能的正常运行。并且对于这些模块的使用场景,并发量、消耗的资源都各不相同,对于资源的利用又相互影响,这样使我们对各个业务模块的系统容量很难给出一个较为准确的评估。
为了解决单体应用的弊端,我们提出微服务架构,我们将系统中不同功能模块拆分成多个不同的服务,这些服务都能够独立部署和扩展,每个服务都有稳固的边界。单体应用中一个服务挂掉,整个服务都gg了,而微服务架构中,A挂了,B是不受影响的,这大大提升了整体系统的容错机制。
但是随着微服务的增多,服务的部署的维护将成为一项很重要的工作,这无疑也会增加运维成员的的工作难度。
虽说每个服务都是独立的,但难免服务之间会产生业务交叉,会相互调用,并不是完全解耦合的。
最后一点由于拆分的微服务过多,分布式环境问题将是微服务架构设计时需要考虑的重要因素,比如网络延迟、分布式事务、异步消息等。
为什么选择SpringCloud?
微服务江湖发展的初期,涌现出了一大批豪杰:
可以看到国内外技术公司分享的主要以理论或是一个粗略的框架为主,很难找到一个完全相同的、一站式的全家桶解决方案。
直到SprignCloud出现,它是一个解决微服务架构的综合性解决框架,它整合了诸多被广泛实践和证明过的框架作为实施的基础部件又在该基础之上创建了一些非常优秀的边缘组件。
SpringCloud简介
SprignCloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。