1.什么是springcloud?
springcloud是一个微服务架构模式,他就像hadoop一样是一个生态圈,它里面有各种各样的服务,每个服务都是独立运行的互不影响。也就是说springcloud就是一个完整的项目了,需要用到里面的功能时,直接获取,注入自己的业务代码就可以了。
spirngcloud是一个面向服务的思想。
2.什么是面向服务?
面向服务是一种思想,但是它相对于面向对象比较怪异。首先我们回顾下java是一个个面向对象的语言。
什么是面向对象?
在最早的时候,是面向过程的语言,比如C语言,面向过程就是什么事都要亲历亲为,自己去做,比如说要使用洗衣机洗衣服:
面向过程:放水,放洗衣粉,开洗衣机,洗衣机洗衣服,甩干
面向对象:面向对象将这些方法按类别封装成对象,然后通过调用对象来实现。比如说:放水,放洗衣服,开洗衣机,把这些封装成人的对象,再把洗衣服,甩干封装成洗衣机的对象,这样洗衣服就变成了直接调用两个对象,然后对象调用自己的方法,至于对象是怎么实现方法的,并不需要关心。
总结:面向对象就是将面向过程的方法按类别进行封装成对象。面向对象的三个核心:封装、继承、多态
什么是面向服务?(分布式的实现)
假如说现在有一个游戏机,每一个游戏机上只有一个游戏,如果想要玩新的游戏就要重新买一台新的游戏机,将游戏集成进了游戏机的主板,这就是面向对象,每一个对象就是一个游戏机。游戏机里面有游戏,但是这样的话,造价就很高,每换一次游戏,就要每一个新的游戏机,游戏机除了里面的游戏不一样,其他的配置都一样,于是就将游戏这个模块分离出来,变成卡槽,将游戏放进卡里面,想玩不同的游戏,换张游戏卡就可以了,这样就提高了这台游戏机的使用率,这就是面向服务。
面向服务的好处:将一个项目中的不同功能单独分离出来,成为一个独立的服务器,需要开发新的功能时,如果新功能有用到已有的功能,直接集成进去就可以了,提高了功能的复用率。
3.存在哪儿些微服务架构?
dubbo、springcloud、dubboX、JSF
dubbo和springcloud的区别:
1.dubbo是基于二进制的传输,速度非常快,对网络要求比较低、而springcloud是基于http协议进行传输,服务间的调用仍是传统的restful对网速要求很高。(dubbo更符合中国的国情,国内网速较慢)
2.dubbo是提供了很多的开源的注册中心(dubbo内部也有自己的注册中心,还添加了zookeeper等),springcloud后来(2019年springcloud2.x后)才添加的zookeeper,之前都是使用的eureka。
3.dubbo的监控和日志系统不是太完善,springcloud提供了一套非常完善的监控和日志系统
4.dubbo是一个轻量级的框架,而且是阿里巴巴开发的,官网是中文网,容易学习,而springcloud使用起来比较沉重,而且学习成本高(外国网站,英文翻译不准确,不好理解)
通过比较发现:dubbo更适合中国国情,为什么要选择springcloud?
springcloud是spring公司自己开发的,因此它的内部可以实现与spring的无缝对接,现在市场上的系统都是使用spring框架开发的,因此选择使用springcloud,如果没有使用spring框架开发的话,使用dubbo更好。