什么是SpringCloud项目,我把它

最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。

01微服务

讲起springcloud之前,我们需要了解一下什么是微服务。

简单来说,微服务就是一种将一个单一应用程序拆分为一组小型服务的方法,拆分完成后,每一个服务都运行在独立的进程中,服务于服务之间采用轻量级的通信机制来进行沟通(SpringCloud中采用基于HTTP的RESTfulAPI)。

我们先认识下应用架构的变迁,下面是应用架构的变迁历史

02单体架构

早期,企业的对外提供的服务比较单一,客户流量也相对不足。因此将所有的模块,代码打包在一个项目中,集中部署一台机器上。

就像学校里面做的项目,搞定前端,数据库,部署到服务器,把WEB应用APP做出来就是以前的单体架构。

其实就是给你用的,基本部署到一个云服务器。没有任何的实用,企业的客户会越来越多,流量越来越大,单单一台服务器对外提供服务,哪里撑得住啊,不分分钟被搞挂掉才怪。

遇到并发和大流量,基本就Over了。

03SOA架构

应用软件over了,企业损失惨重,你也可以滚蛋了。一台最垃圾云服务器1G运行内存加50G空间,虽然垃圾,但是我几个服务器一起上。一个挂了,还有几个撑着,然后我们赶紧把挂的重启,这样不就可以顶住了吗,这就是SOA架构,全面就是Service-OrientedArchitecture。简称SOA,翻译过来面向服务的架构,下图就是SOA架构图

将所有的服务提供者注册到注册中心。客户端向注册中心订阅服务注册中心向客户端推送有效的服务信息客户端得到所有可调用服务的信息后,根据需求,按负载均衡算法,进行调用,获取数据。下面用百度百科把SOA说得高大上点。

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。(百度百科)

比如,阿里巴巴的Dubbo数据源就是一个非常好的服务治理SOA框架,

04微服务

微服务可以理解为是SOA的一个传承,一个本质的区别是微服务是一个真正分布式、去中心化的,微服务的拆分比SOA更加彻底。

微服务架构的系统是一个分布式的系统,每个微服务基本是一个能独立发布的应用服务,因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也较小,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发,甚至整个团队的组织架构也会更精简,因此沟通成本低、效率高。

比如,一个项目出了问题。哪里出了问题,难道将整个项目从头到尾看一遍吗,就算你肯,老板也不肯啊。你把企业都有的私密的源码都知道了,万一你突然间要挟涨薪。这时候,就将一个项目分成几个小项目。一个小项目负责一个功能实现,再整合起来,不就是一个大项目。

每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,订单服务、支付服务、物流服务、会员服务等等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。在采用微服务之后,我们的项目不再拘泥于一种语言,可以Java、Go、Python、PHP等等,混合使用,这在传统的应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建工具进行构建。

比如,今日头条APP。推荐算法可能是用Python,处理并发可能用go,注册功能可能是Java。所以一个上百万的用户的项目,绝对耗上亿资金完成的。如果出毛病了,就让那个负责这个模块的人去处理。

05SpringCloud

那SpringCloud和微服务有什么关系?SpringCloud可以理解为微服务这种思想在Java领域的一个具体落地。SpringCloud在发展之初,就借鉴了微服务的思想,同时结合SpringBoot,SpringCloud提供了组件的一键式启动和部署的能力,极大的简化了微服务架构的落地。

这也是Java为什么是老大的原因。

学任何东西都先访问官方文档,我们先访问SpringCloud官方文档:


转载请注明:http://www.aierlanlan.com/grrz/3913.html