dubbo:(也是一个微服务框架)
1.因为是微服务框架,所以就会产生项目和项目之间调用数据
restful
feign--->底层还是restful
HttpClientUtils.java:
就是来模拟http协议环境的
restful所实现的就是controller去调用controller
BookConsumer:
@Autowired
private RestTemplate restTemplate;
restTemplate.getForObject("url", List.class);
使用restful会有什么弊端?
1.1.因为使用的是http请求,所以对整个网络的要求都比较高
1.2.其实还是要在http之间来进行传输,所以这个请求就容易被截获(除非你写的工具类相当优秀!)
1.3.违背了MVC思想
MVC思想:
controller--->service--->mapper
restful思想:
controller--->controller
2.RPC
为了解决以上的问题,所以后期衍生出了RPC框架(虽然springcloud仍然使用的是restful,但是针对咱们中国的大环境来说,我觉得RPC比restful好用)
remote produce call:
远程 过程 调用
3.本地调用
在同一个项目中/同一个域中,发起了请求,最终达到了目的,这种模式称为本地调用
service--(查询所有的图书信息)-->mapper--(执行SQL语句)-->MySQL
com.aaa.lee.user
entity
dao
service
servlet
com.aaa.lee.goods
entity
dao
service
servlet
...
4.远程调用
在不同的项目中/在不同的域中,发起调用请求(一般情况下都是一个项目对另一个发起),最终达到了预期的效果,这种模式就叫做远程调用
5.目前市面上比较优秀的RPC框架
5.1.dubbo(阿里巴巴)
5.2.dubboX(当当网)--->其实就是在dubbo这个开源框架上做了升级
5.3.JSF(京东)(京舒服)--->这个框架只适合于京东的业务线
6.什么是dubbo
之前是阿里巴巴开发,后来停更了,因为dubbo的研发团队解散了
其实dubbo比springcloud要早很多,在之前很多人都在使用dubbo,后来好多人都开始使用springcloud,就因为一件事,dubbo停更了
于是后来阿里巴巴就把这个项目贡献给了apache项目开源基金会(dubbo后来就成为apache下的一个顶级项目)
dubbo是一个高性能的 基于java开发的 轻量级的 开源 RPC框架
hibernate和hibernate比较重mybatis的区别?
,mybatis(ibatis)比较轻
(JPA--->lombok)
框架代码对于业务代码的侵入度
hibernate这个框架是没有SQL语句的,这个框架查询使用使用的是hql
select * from user
from User
springdata+springboot+springcloud称之为spring的全家桶
public User getById(Long id);--->自动生成SQL语句(是在人家源码包中的)
dubbo的三大核心:
6.1.面试接口的风格
6.2.智能容错和负载均衡
6.3.自动的服务注册和发现
面向接口的风格:
result所支持是controller调用controller
dubbo所支持的是controller调用service
consumer(和客户端打交道)
provider(和数据库打交道)
BookConsumer:
BookController--->IBookService(I)
没有service实现类和mapper
其实consumer中的接口所映射的是provider中的service层的实现类
BookProvider:
没有controller
IBookService(I)--->BookServiceImpl(C)
智能容错和负载均衡:
容错:
在项目或者服务器运行途中出现异常,宁愿给客户端返回可以接受的错误结果也不能让客户端看到异常信息
智能容错:
项目就算出现了异常,不需要程序员自己处理,就可以返回给客户端一个可以接受的结果
自动的服务注册和发现:
dubbo默认使用的并不是zookeeper,dubbo是自带注册中心的,但是dubbo所自带的注册中心不好用!!!所以通常大家使用的是zookeeper
但是dubbo后来贡献给apache之后,使用zookeeper了
使用了zookeeper注册中心,当provider一旦启动,就会自动的向zookeeper中去注册,不需要程序员手动处理注册
当consumer调用的时候,也会自动的先向zookeeper去查询provider的信息,不需要程序员去编写这一段代码